Вниз
Скачать: CL | DM;

TDataSetProvider.UpdateMode = upWhereKeyOnly не действует   Найти похожие ветки 

← →
AkaSaint ©   (2003-06-21 15:36) [0]

Сабж в 3-звенном приложении. 2 клиента параллельно изменяют неключевое поле одной и той же записи. Первый клиент применяет обновления удачно, для второго возникают на сервере приложений два исключения EOleException и EDatabaseError с одним и тем же сообщением: "Row cannot be located for updating. Some values may have been changed since it was last read". Значение UpdateMode провайдера проверяю в событии BeforeApplyUpdates. Подскажите, пожалуйста, что я не так делаю.


← →
Eugene_e ©   (2003-06-21 16:42) [1]

В принципе у меня подобное приложение, только более усложнено общение клиента с сервером. Попробовал выполнить похожие действия - обновления произошли без проблем. Может быть стоит указать подробнее - как организовано взаимодействие с БД (единый модуль данных или организация независимых подключений в каждом из COM-модулей), как происходит обновление - средствами TDataSetProvider автоматически или какие-то доп. обработчики?


← →
AkaSaint ©   (2003-06-21 19:41) [2]

Каждый COM-модуль подключается самостоятельно через свой ADOConnection с одинаковой строкой подключения к .mdb-файлу. Обновление происходит средствами TDataSetProvider. Я обнаружил странную закономерность, но понять ее не могу. Если стоит у провайдера ResolveToDataset=True, то эта ошибка есть, если False, то нет. Еще вопрос: что значит единый модуль данных? Я еще новичок в 3-звенной архитектуре.


← →
Eugene_e ©   (2003-06-23 10:07) [3]

В общем это я и хотел понять, что все COM-модули имеют независимые соединения с БД, что впрочем логично. По документации когда ResolveToDataset=True, обновления производятся через DataSet, специфицированный для TDataSetProvider и этот режим нужен, если требуется обработка событий DataSet. В случае False получатся, что Update идет непосредственно по базе, т.е. получается что проблема именно в DataSet. Возможно следует посмотреть его св-ва CursorLocation, CursorType, LockType



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

Скачать: CL | DM;



Память: 0.45 MB
Время: 0.015 c
14-55709
Chieftain
2003-06-25 11:55
2003.07.17
---|Ветка была без названия|---


1-55523
mmm
2003-07-04 18:35
2003.07.17
Как сделать в StringGrid один столбец редактируемым , другой-нет


7-55870
nik
2003-04-28 12:52
2003.07.17
COM порт (NT)


1-55533
Банан
2003-07-05 13:26
2003.07.17
Как переменной типа Char присвоить символ нажатой на клавиатуре к


3-55388
-=alive=-
2003-06-22 14:29
2003.07.17
Вложенный select




   Наверх