![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
TDataSet в режиме редактирования и исключение [D5]
KSergey © (2003-06-13 13:35:00)Есть TDataSet, переводим его в режим редактирования (или добавляем записи), что-то делаем. Вопрос: если при этом (до DataSet.Post) произойдет исключение - вернет ли VCL этот (эти, если их несколько) DataSet в режим просмотра (выполнением DataSet.Cancel, например) или необходимо самому об этом позаботиться?
PS: проверить конечно можно, но вдруг не так эксперимент поставлю...
Johnmen (2003-06-20 14:45:00) [1]Обязательно заботиться !!! Это общий принцип.
KSergey (2003-06-20 14:30:00) [2]Эта, что-то я отвлекся ;)
А еще раз для меня можно: т.е. как я понял, в общем случае нельзя утверждать, что в случае возникновения какого-либо исключения все DataSet выйдут из режима dsEdit? т.е. неплохо бы позаботиться об этом и самому?
Anatoly Podgoretsky (2003-06-13 19:31:00) [3]Sandman25 © (13.06.03 17:23)
ПРавомерно, если речь идет не об исключении в Dataset и связанных компонентах.
MsGuns (2003-06-13 19:09:00) [4]>Sandman25 © (13.06.03 17:23)
Я не опровергаю, а только лишь вношу поправку, оспаривая КАТЕГОРИЧНОСТЬ, НО НЕ СУТЬ Вашего заявления ;))
Очень многое, действительно, зависит от КОНКРЕТНЫХ СРЕДСТВ доступа и ФОРМАТА базы данных. В частности, если используется Парадокс/дибэйз + компоненты BDE, то инициатором исключений является собственно ядро BDE, которое вызывается в соотв. методе компонента (например, TTable)
Если используется КССУБД, то "к телу", т.е. к физ. таблицам не допускается никто - с ними работает только сервер, причем ТОЛЬКО В КОНТЕКСТЕ ТРАНЗАКЦИЙ. Т.е. ситуация, когда таблица "не доредактировалась" и система ждет решения клиента, не возможна в принципе.
Sandman25 (2003-06-13 17:23:00) [5]MsGuns © (13.06.03 17:18)
Можете опровергнуть - пожалуйста, прошу. Мне и самому интересно, правомерно ли то, что я написал :)
MsGuns (2003-06-13 17:22:00) [6]>Sandman25 © (13.06.03 17:08)
>При этом может возникать любое число исключений (StrToInt, 1/0 и т.д.), но они к Dataset не относятся, и он о них даже не знает.
Заявление относительно исключений, возникающих в рез-те попыток внесения изменений в НД, слишком смелое, я бы даже сказал, что несколько авантюрное ;)). О подобных ситеувинах "датасеты" не только знают, но они как бы и являются инициаторами их возникновения. Точнее, не они сами, а их "внутренности", а именно реализация методов типа Insert, Delete, Post и т.д.
MsGuns (2003-06-13 17:18:00) [7]>Sandman25 © (13.06.03 17:08)
>При этом может возникать любое число исключений (StrToInt, 1/0 и т.д.), но они к Dataset не относятся, и он о них даже не знает.
Заявление слишком смелое, я бы даже сказал, что несколько авантюрное ;)).
Sandman25 (2003-06-13 17:08:00) [8]Когда в DBNavigator"е Вы нажимаете кнопку редактирования, то Dataset переходит в состояние dsEdit, и может неограниченно долго находиться в таком состоянии, пока пользователь не нажмет на сохранение, отмену, или проскроллирует запись. При этом может возникать любое число исключений (StrToInt, 1/0 и т.д.), но они к Dataset не относятся, и он о них даже не знает.
MsGuns (2003-06-13 16:27:00) [9]Смотря что используется под TDataSet. Если локалка (типа дибэйса) и компонента типа TTable, то НД остается в состоянии, которое было ДО попытки его изменения. Если КССУБД, то там понятие "датасет" достаточно виртуально и физ.таблица для клиента в принципе не может находиться в состоянии Inserted или Modified