Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Midas ;событие ReconcileError ? [ADO]


Sergey ©   (2003-04-28 13:54:00) 

Здравствуйте уважаемые мастера
иеется клиетская часть и серверная часть Midas
Вызываю в одном клиенте вызываю метод ApplyUpdates(-1)
первый раз запись изменяется а когда уже второй клиент изменяет туже старую запись

вызывается событие ReconcilError там прописан стандартный обработчик (диалог ReconcilErro)
ну и когда делаю на корректировку ничего не изменяет записи

уже чего только не перепробывал и поле ключевым делал ничего не помагает
и после вызова на втором клиенте ApplyUpdates возвращает 1 то есть ошика где то ?????

в DAtaSetProvider сввойсво UpdateMode выставлено в UpdateWhereAll

Подскажите пожалуйста


Sergey   (2003-04-30 11:35:00) [1]

ну переменил я свойство updateMode -> UpWhereKeyOnly указал ключевое поле одно и установил значение чтобы поле не менялось
остальные поля pfInWhere, pfInKey = FALSE
ну и когда делаю raCorrect то все равно не меняет значение поля


да и еще може мне кто -нибудь объяснить
что допустим когда выполняю запрос на сервера то при возникновение ReconcileError в свойство UpdateAction включается
гaMerge, raCorrect добавляется Modifield Value
а когда запрос исходит от клиента то эти свойства отсутсвуют
напрочь и сам DataSet в TDataSetProvider не активен т.е по ходу скидывается клиенту ???



Sunches   (2003-04-29 16:48:00) [2]

Если на втором клиенте запись была открыта до ApplyUpdates на первом, то при вызове ApplyUpdates на втором и при UpdateMode=upWhereAll,
DataSetProvider будет формировать SQL запрос типа
UPDATE ... WHERE Field1=Value1 and Field2=Value2 ... и т.д. для всех полей запроса(таблицы), где Value1(2) исходные значение полей.
Это легко посмотреть через SQL monitor.
Таким образом ApplyUpdates на втором клиенте не пройдет до тех пор пока запись не вернется в исходное состояние :)
Можно сделать upWhereKeyOnly и указать явно для запроса(таблицы) какое поле ключевое в свойствах ProviderFlags, но только не менять значение ключа, или запрещать одновременное редактирование одной и той же записи разными клиентами.


Наверх

Титульная страница Поиск, карта сайта Написать письмо