Форум: "Основная";
Текущий архив: 2004.10.24;
Скачать: [xml.tar.bz2];
Вниз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;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.042 c