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

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

TProvider.ApplyUpdates [D3]


Dixi ©   (2004-10-12 16:35:00) 

Необходимо узнать формат пакета данных клиентского набора данных, в частности формат возвращаемого значения данного метода (см. тему).


Dixi   (2004-10-12 17:49:00) [1]

Если бы она была, возможность эта :)

Romkin © (12.10.04 17:45) [11] А ты считаешь проще TClientDataSet переписать? Я с тобой не согласен :)


Romkin   (2004-10-12 17:45:00) [2]

Dixi ©  (12.10.04 17:39) [10] Вот именно :)) В них вся и суть. Но я не уверен, что тебе надо переписывать именно провайдер, скорее - датасет свой написать надо, с которым он работать будет.
А что, возможности перейти хотя бы на Delphi5 нет?


Dixi   (2004-10-12 17:39:00) [3]

Чтобы через ADO работать.

Там не все есть, там исходников DBClient.dll нет :)


Romkin   (2004-10-12 17:37:00) [4]

ЗАчем тебе свой провайдер?! Смотри исходники, там все есть


Dixi   (2004-10-12 17:32:00) [5]

Нет такого обработчика в D3.

Да и если бы был, то что? Мне нужно написать своего провайдера, т.е. реализовывать ApplyUpdates все равно нужно...


Sandman25   (2004-10-12 17:20:00) [6]

[6] Dixi ©   (12.10.04 17:12)

Вы неправильно делаете ИМХО. Почитайте про TProvider.BeforeUpdateRecord


Dixi   (2004-10-12 17:12:00) [7]

Проблема вот в чем:
Пишу, значит, своего провайдера. В справке написано, что в случае неудачи, т.е. если ErrorCount > MaxErrors, изменения проходить не должны (откатываю транзакцию), и в качестве результата должна вернуться delta целиком. Самый простой вариант проверки - это сразу вернуть дельту. Однако на этом все и заканчивается, метод завершается корректно (т.е. результат в клиентский НД возвращается), но возникает исключение "Mismatch in datapacket". Нужно узнать что возвращать в качестве результата.

На счет OnReconcileError: до этого обработчика дело в моем случае не доходит, т.к. возвращаемый пакет данных неправильного формата.


Romkin   (2004-10-12 16:58:00) [8]

А, у тебя D3?! ох... Я бы не советовал там копаться с провайдерами


Sandman25   (2004-10-12 16:58:00) [9]

Спутал с TClientDataSet.ApplyUpdates, прошу прощения.


Romkin   (2004-10-12 16:56:00) [10]

Сам формат закрыт, но это - delta :))
А обрабатывается этот результат в обработчике OnReconcileError, пихать-то зачем?
см demos\midas\alchtest, там все видно, как делать


Dixi   (2004-10-12 16:50:00) [11]

function TProvider.ApplyUpdates(Delta: OleVarant; MaxErrors: Integer; out ErrorCount: Integer); OleVariant;
Возвращаемый результат - это вариант (массив байт в варианте). Меня не тип данных интересует, а формат, в котором нужно данные в  вариант запихать и далее в клиентский набор данных вернуть.


Sandman25   (2004-10-12 16:40:00) [12]

формат возвращаемого значения данного метода  - longint, 4 bytes, signed


Наверх

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