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

TDataSet в режиме редактирования и исключение   Найти похожие ветки 

← →
KSergey ©   (2003-06-13 13:35) [0]

Есть TDataSet, переводим его в режим редактирования (или добавляем записи), что-то делаем. Вопрос: если при этом (до DataSet.Post) произойдет исключение - вернет ли VCL этот (эти, если их несколько) DataSet в режим просмотра (выполнением DataSet.Cancel, например) или необходимо самому об этом позаботиться?

PS: проверить конечно можно, но вдруг не так эксперимент поставлю...


← →
MsGuns ©   (2003-06-13 16:27) [1]

Смотря что используется под TDataSet. Если локалка (типа дибэйса) и компонента типа TTable, то НД остается в состоянии, которое было ДО попытки его изменения. Если КССУБД, то там понятие "датасет" достаточно виртуально и физ.таблица для клиента в принципе не может находиться в состоянии Inserted или Modified


← →
Sandman25 ©   (2003-06-13 17:08) [2]

Когда в DBNavigator"е Вы нажимаете кнопку редактирования, то Dataset переходит в состояние dsEdit, и может неограниченно долго находиться в таком состоянии, пока пользователь не нажмет на сохранение, отмену, или проскроллирует запись. При этом может возникать любое число исключений (StrToInt, 1/0 и т.д.), но они к Dataset не относятся, и он о них даже не знает.


← →
MsGuns ©   (2003-06-13 17:18) [3]

>Sandman25 © (13.06.03 17:08)
>При этом может возникать любое число исключений (StrToInt, 1/0 и т.д.), но они к Dataset не относятся, и он о них даже не знает.

Заявление слишком смелое, я бы даже сказал, что несколько авантюрное ;)).



← →
MsGuns ©   (2003-06-13 17:22) [4]

>Sandman25 © (13.06.03 17:08)
>При этом может возникать любое число исключений (StrToInt, 1/0 и т.д.), но они к Dataset не относятся, и он о них даже не знает.

Заявление относительно исключений, возникающих в рез-те попыток внесения изменений в НД, слишком смелое, я бы даже сказал, что несколько авантюрное ;)). О подобных ситеувинах "датасеты" не только знают, но они как бы и являются инициаторами их возникновения. Точнее, не они сами, а их "внутренности", а именно реализация методов типа Insert, Delete, Post и т.д.



← →
Sandman25 ©   (2003-06-13 17:23) [5]

MsGuns © (13.06.03 17:18)

Можете опровергнуть - пожалуйста, прошу. Мне и самому интересно, правомерно ли то, что я написал :)


← →
MsGuns ©   (2003-06-13 19:09) [6]

>Sandman25 © (13.06.03 17:23)

Я не опровергаю, а только лишь вношу поправку, оспаривая КАТЕГОРИЧНОСТЬ, НО НЕ СУТЬ Вашего заявления ;))
Очень многое, действительно, зависит от КОНКРЕТНЫХ СРЕДСТВ доступа и ФОРМАТА базы данных. В частности, если используется Парадокс/дибэйз + компоненты BDE, то инициатором исключений является собственно ядро BDE, которое вызывается в соотв. методе компонента (например, TTable)
Если используется КССУБД, то "к телу", т.е. к физ. таблицам не допускается никто - с ними работает только сервер, причем ТОЛЬКО В КОНТЕКСТЕ ТРАНЗАКЦИЙ. Т.е. ситуация, когда таблица "не доредактировалась" и система ждет решения клиента, не возможна в принципе.


← →
Anatoly Podgoretsky ©   (2003-06-13 19:31) [7]

Sandman25 © (13.06.03 17:23)
ПРавомерно, если речь идет не об исключении в Dataset и связанных компонентах.


← →
KSergey ©   (2003-06-20 14:30) [8]

Эта, что-то я отвлекся ;)
А еще раз для меня можно: т.е. как я понял, в общем случае нельзя утверждать, что в случае возникновения какого-либо исключения все DataSet выйдут из режима dsEdit? т.е. неплохо бы позаботиться об этом и самому?


← →
Johnmen ©   (2003-06-20 14:45) [9]

Обязательно заботиться !!! Это общий принцип.



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

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



Память: 0.47 MB
Время: 0.015 c
1-44643
Lana
2003-07-02 11:12
2003.07.14
Radiogroup в выпадающем списке


14-44895
Sly
2003-06-26 17:17
2003.07.14
О Женских Порядках


3-44585
sergt
2003-06-19 13:14
2003.07.14
Переброска данных с таблицы Oracle в DBF


8-44774
msgipss
2003-03-26 17:51
2003.07.14
Как из TBitmap сохранить картинку в .gif формате с прозрачным фон


8-44772
lexusU
2003-03-26 13:33
2003.07.14
Как узнать яркость в данной точке изображения?




   Наверх