|
Пример работы с курсор-адаптерами 3-х таблиц
|
|||
---|---|---|---|
#18+
Подскажите где есть пример работы в VFP-9 с курсор адаптерами трех (и более) таблиц? Таблицы связаны по ключевым полям. ... |
|||
:
Нравится:
Не нравится:
|
|||
07.11.2017, 09:31 |
|
Пример работы с курсор-адаптерами 3-х таблиц
|
|||
---|---|---|---|
#18+
vlgrech, а работа трех (и более) таблиц как-то сильно отличается от работы двух таблиц? ... |
|||
:
Нравится:
Не нравится:
|
|||
07.11.2017, 10:55 |
|
Пример работы с курсор-адаптерами 3-х таблиц
|
|||
---|---|---|---|
#18+
Sergey Sizov, действительно отличается * На форме Init() в случае 2-х таблиц: PUBLIC loCmd as ADODB.Command loCmd = CREATEOBJECT('ADODB.Command') WITH ThisForm.dataenvironment.casotr2 loCmd.ActiveConnection=.parent.DataSource.ActiveConnection lbIsFill = .CursorFill(.UseCursorSchema, .NoData, 1, loCmd) ENDWITH ThisForm.BindControls=.T. ThisForm.Refresh А в случае 3-х в примере который есть у меня *Form Init() IF this.bIsFatalError RETURN .F. ENDIF WITH thisForm.DataEnvironment IF !USED(.caCustomers.Alias) ; OR !USED(.caOrders.Alias) ; OR !USED(.caOrder_details.Alias) RETURN .F. ENDIF ENDWITH WITH ThisForm.cboCustomes IF .ListCount > 0 AND .ListIndex = 0 .ListIndex = 1 ENDIF endwith * И еще куча отличий. Вот я и подумал можбыть у кого есть пример который корректно работает. ... |
|||
:
Нравится:
Не нравится:
|
|||
07.11.2017, 11:17 |
|
Пример работы с курсор-адаптерами 3-х таблиц
|
|||
---|---|---|---|
#18+
vlgrech, и какое отношение приведенный вами пример имеет к курсор-адаптерам? Проверка наличия трех курсоров, привязанных к курсор-адаптерам? А она сильно отличается от такой же проверки наличия курсоров при двух курсор-адаптеров? И что в свете приведенных примеров называете "работой с курсор-адаптерами"? И еще куча отличий. Каких?Вот я и подумал можбыть у кого есть пример который корректно работает.А это т работает некорректно? и в чем некорректность? И вообще, о каком примере идет речь? ... |
|||
:
Нравится:
Не нравится:
|
|||
07.11.2017, 11:30 |
|
Пример работы с курсор-адаптерами 3-х таблиц
|
|||
---|---|---|---|
#18+
Sergey Sizov, *Form Init() IF this.bIsFatalError RETURN .F. ENDIF WITH thisForm.DataEnvironment IF !USED(.caCustomers.Alias) ; OR !USED(.caOrders.Alias) ; OR !USED(.caOrder_details.Alias) RETURN .F. ENDIF ENDWITH WITH ThisForm.cboCustomes IF .ListCount > 0 AND .ListIndex = 0 .ListIndex = 1 ENDIF endwith * *Form Load() IF VERSION(5) < 800 RETURN .F. ENDIF WITH thisForm.DataEnvironment IF !.AutoOpenTables AND !.OpenTables() RETURN .F. ENDIF ENDWITH IF this.bIsFatalError RETURN .F. endif * *dboCustomes InteractiveChange() WITH thisForm.DataEnvironment .caOrders.CursorRefresh() .caOrder_details.CursorRefresh() ENDWITH WITH thisForm.grdOrders .SetFocus() .ActivateCell(1, .ActiveColumn) ENDWITH thisForm.grdOrder_details.Refresh() * *grdOrders AfterRowColChange() LPARAMETERS nColIndex thisForm.DataEnvironment.caOrder_details.CursorRefresh() thisForm.grdOrder_details.Refresh() * *DE Destroy() IF VARTYPE(This.DataSource) = 'O' AND This.DataSourceType = 'ADO' IF This.DataSource.State <> 0 This.DataSource.Close() ENDIF IF VARTYPE(This.DataSource.ActiveConnection) = 'O' ; AND This.DataSource.ActiveConnection.State <> 0 This.DataSource.ActiveConnection.Close() ENDIF This.DataSource = NULL endif * *Dataenvironment Error() LPARAMETERS nError, cMethod, nLine IF TYPE('thisForm.bIsFatalError') = 'L' AND thisForm.bIsFatalError RETURN ENDIF LOCAL ARRAY laErr[1] = AERROR(laErr) LOCAL lcMsg as String lcMsg = 'Error: ' + LTRIM(STR(laErr[1])) lcMsg = lcMsg + CHR(13) + CHR(10) + 'Message: ' + laErr[2] IF !EMPTY(cMethod) lcMsg = lcMsg + CHR(13) + CHR(10) + 'Method: ' + cMethod ENDIF IF !EMPTY(nLine) lcMsg = lcMsg + CHR(13) + CHR(10) + 'Line: ' + LTRIM(STR(nLine)) ENDIF IF TYPE('thisForm.bIsFatalError') = 'L' thisForm.bIsFatalError = .T. ENDIF = MESSAGEBOX(lcMsg, 16, thisForm.Caption) * *DE Init() LOCAL lbIsDeDsADO as Boolean, lbIsErr as Boolean, loCurObj as CursorAdapter WITH this lbIsDeDsADO = VARTYPE(.DataSource) = 'O' AND .DataSourceType = 'ADO' FOR EACH loCurObj IN .Objects WITH loCurObj IF 'Cursoradapter' $ .BaseClass IF !USED(.Alias) AND ('?' $ .SelectCmd) ; AND (lbIsDeDsADO OR .DataSourceType = 'ADO') LOCAL loCmd as ADODB.Command loCmd = CREATEOBJECT('ADODB.Command') IF lbIsDeDsADO WITH this.DataSource IF .State <> 0 && adStateClosed .Close() ENDIF loCmd.ActiveConnection = .ActiveConnection ENDWITH ELSE loCmd.ActiveConnection = .DataSource.ActiveConnection ENDIF LOCAL lbIsFill as Boolean IF VERSION(5) < 900 lbIsFill = .CursorFill(.F., .F., 1, loCmd) && (adCmdText = 1) ELSE lbIsFill = .CursorFill(.UseCursorSchema, .NoData, 1, loCmd) && (adCmdText = 1) ENDIF IF !lbIsFill lbIsErr = .T. this.Error(1098, this.Name + '.Init', LINENO(1)) EXIT ENDIF ENDIF ENDIF ENDWITH ENDFOR ENDWITH RETURN !lbIsErr * Выше текст всех методов как на форме, так и в DE. Данные 3-го курсора (нижний грид) можно изменять и все отображается в таблицу. А вот данные 2-го курсора при попытке их изменить вываливают ошибку: ... |
|||
:
Нравится:
Не нравится:
|
|||
07.11.2017, 12:21 |
|
Пример работы с курсор-адаптерами 3-х таблиц
|
|||
---|---|---|---|
#18+
vlgrech, и как обычно... При чем тут количество таблиц? При чем тут курсор-адаптеры? На какой строке выскакивает ошибка? Откуда берется текст сообщения? О каких закладках речь в сообщении об ошибке? Или это всё надо отгадать? ... |
|||
:
Нравится:
Не нравится:
|
|||
07.11.2017, 12:35 |
|
Пример работы с курсор-адаптерами 3-х таблиц
|
|||
---|---|---|---|
#18+
Sergey Sizov, Посылаю Rar примера ... |
|||
:
Нравится:
Не нравится:
|
|||
07.11.2017, 12:37 |
|
Пример работы с курсор-адаптерами 3-х таблиц
|
|||
---|---|---|---|
#18+
Для работы примера необходимо на Sql-сервере записать б.д. Northwind В строке соединения в DE формы исправить имя сервера ... |
|||
:
Нравится:
Не нравится:
|
|||
07.11.2017, 12:42 |
|
Пример работы с курсор-адаптерами 3-х таблиц
|
|||
---|---|---|---|
#18+
vlgrech, читаем Код: sql 1.
и внимательно сравниваем написанное в квадратных скобках с тем, что написано у вас. И при чем тут количество таблиц? И нерабочесть примера? И прочие, как бы помягче... странные вопросы... ... |
|||
:
Нравится:
Не нравится:
|
|||
07.11.2017, 13:03 |
|
Пример работы с курсор-адаптерами 3-х таблиц
|
|||
---|---|---|---|
#18+
Таблица в б.д. Northwind называется Order_Details, поэтому скобки не нужны. В прилагаемом примере используется Northwind.mdb и Sql сервер не нужен. Ошибка "Недопустимая закладка" происходит при попытке изменить к-либо поле таблицы Orders. ... |
|||
:
Нравится:
Не нравится:
|
|||
08.11.2017, 05:55 |
|
|
start [/forum/topic.php?fid=41&gotonew=1&tid=1581876]: |
0ms |
get settings: |
9ms |
get forum list: |
12ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
34ms |
get topic data: |
10ms |
get first new msg: |
8ms |
get forum data: |
2ms |
get page messages: |
44ms |
get tp. blocked users: |
1ms |
others: | 294ms |
total: | 422ms |
0 / 0 |