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

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

TADOQUERY как определить ошибку. [D7, MSSQL]


NEWS ©   (2004-07-30 17:07:00) 

Всем здрасьте.
ЕСТЬ компонент TADOQUERY, который работает на UPDATE.
Для ловли ошибки сделано так:

try
adoquery1.exec;
except
showmessage('Error');
adoquery1.close;
end

Вопрос
как вместо showmessage('Error');показать текст настоящей ошибки. Как узнать текст ошибки.

СПАСИБО


сергей1   (2004-08-01 21:40:00) [1]

забыл указать, как обойти эту ситуацию, вот например как обработать нарушение первичного ключа :

procedure TForm1.Button1Click(Sender: TObject);
begin
form1.ADOQuery1.SQL.Text:='insert into "Table1" values ('
+quotedstr('5')+', '+quotedstr('xdf')+')';
try
form1.ADOQuery1.ExecSQL;
except on E:exception do
begin
 if strpos(pchar(E.Message),'PRIMARY')<>nil then
  begin
   showmessage('Нарушение первичного ключа !');
  end
end;
end;
end;

а вообще, у меня сделано через ХП, которые сами обрабатывают такие ситуации и возвращают клиенту код завершения, а клиент, в зависимости от него, сам генерирует соответствуюшее сообщение


Сергей1   (2004-08-01 19:38:00) [2]

полагаю, надо делать через обработчик события ADOQuery1EditError :

procedure TForm1.ADOQuery1EditError(DataSet: TDataSet; E: EDatabaseError;
 var Action: TDataAction);
begin
action:=daAbort;
showmessage(e.message)
end;

параметр Е содержит всю инфу об ошибке, а установка action:=daAbort должна подавить всплывающее окно с ошибкой, вот только у меня это не работает :), ничего не понимаю, в хелпе сказано делать именно так, если кто знает, поделитесь опытом


Наверх

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