Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 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
7-44915
pitay
2003-05-01 11:30
2003.07.14
Значки рабочего стола


14-44866
Sedunov Vitaly
2003-06-27 10:17
2003.07.14
EhLib, RxLib for Delphi 7


1-44707
gfhjs
2003-06-29 12:35
2003.07.14
Always-On-Top


1-44729
pkert
2003-07-01 12:39
2003.07.14
Свернуть программу в SysTray


3-44558
abc
2003-06-10 00:34
2003.07.14
как из поля таблицы типа mdb, скопировать данные в таблицу...





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский