Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

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


Наверх

Титульная страница Поиск, карта сайта Написать письмо