Форум: "Базы";
Текущий архив: 2003.07.14;
Скачать: [xml.tar.bz2];
Вниз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;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.009 c