Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C++ Builder > ADO


Автор: Лена 3.7.2008, 17:01
Давно уже не приходилось работать с БД. Все забыла. smile 
Связь через ADOQuery c таблицей из PostgreSQL. В этой таблице есть поле с ограничением, что значения в нем должны быть уникальными. Если пользователь вводит значение которое не уникально, то где правильнее это обрабатывать? В BeforePost или PostError? Как выглядит отлов этой ситуации? 

Автор: Palladin 3.7.2008, 17:27
Перед постsmile я бы делал, перев Post проверяешь корректность и если норм все добавляешь, нет сообщение 

Автор: jonie 3.7.2008, 18:08
интересно как вы проверите перед посылкой не блокируя таблицу...
просто в try{}catch(какойта класс&){} обернуть вызов Query1->ExecSQL() не пробывали?

Автор: Лена 4.7.2008, 09:59
Может еще как вариант поискать что ввел пользователь в BeforePost? Что-то типа такого:
Код

Variant Rez = ADOQueryKey->Lookup("code", Form1->DBGrid1->Fields[0]->AsString, "code");
   if(!Rez.IsNull()&& Form1->DBGrid1->SelectedIndex == 0) /* */
             {
             sShowMessage("Такая запись уже есть. Введите другую");
             DataSet->Cancel();
             ADOQueryKey->Close();
             Abort();
             }

Автор: jonie 4.7.2008, 10:53
это не вариант. т.к. другие юзеры могут внести данные параллельно вам.

Автор: Vyacheslav 4.7.2008, 13:59
PostError, конечно

Автор: Лена 4.7.2008, 16:05
Цитата(Vyacheslav @  4.7.2008,  13:59 Найти цитируемый пост)
PostError, конечно


Спасибо!
Единственно что очень не нравиться в RAD Studio то это усеченная какая-то справочная система. Примеров по темам очень мало.

PostError:
__property TDataSetErrorEvent OnPostError;
Write an OnPostError event handler to handle exceptions that occur when an attempt to post a record fails. 

Очень много информации написали разработчики. smile 

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)