Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.10.24;
Скачать: CL | DM;

Вниз

TProvider.ApplyUpdates   Найти похожие ветки 

 
Dixi ©   (2004-10-12 16:35) [0]

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


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

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


 
Dixi ©   (2004-10-12 16:50) [2]

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


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

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


 
Romkin ©   (2004-10-12 16:58) [4]

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


 
Sandman25 ©   (2004-10-12 16:58) [5]

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


 
Dixi ©   (2004-10-12 17:12) [6]

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

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


 
Sandman25 ©   (2004-10-12 17:20) [7]

[6] Dixi ©   (12.10.04 17:12)

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


 
Dixi ©   (2004-10-12 17:32) [8]

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

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


 
Romkin ©   (2004-10-12 17:37) [9]

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


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

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

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


 
Romkin ©   (2004-10-12 17:45) [11]

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


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

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

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



Страницы: 1 вся ветка

Текущий архив: 2004.10.24;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.023 c
6-1092822523
banderas
2004-08-18 13:48
2004.10.24
Открытый порт


3-1096468356
Koala
2004-09-29 18:32
2004.10.24
удаление строк из ХП


1-1097069732
sharkOFF
2004-10-06 17:35
2004.10.24
Как правильно обновлять dbgrid?


14-1096879995
msguns
2004-10-04 12:53
2004.10.24
Как поднять анкету ?


3-1096297927
Павел
2004-09-27 19:12
2004.10.24
D5 + FireBird