Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2003.07.14;
Скачать: 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 вся ветка

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

Наверх




Память: 0.49 MB
Время: 0.02 c
3-44574
mikeee
2003-06-18 15:47
2003.07.14
Подскажите по InstallShield Express


3-44560
n1tro
2003-06-19 18:14
2003.07.14
Как отобразить запрос ч/з TDBGird


6-44780
Drain_x
2003-05-07 12:11
2003.07.14
Как в win2000 программно открыть доступ к каталогу ?


9-44528
Esc
2003-01-21 22:18
2003.07.14
Лайтмэп для ландшафта.


1-44698
Mishenka
2003-06-30 15:13
2003.07.14
MaskEdit...