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

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

Насчёт отлавливание ошибки Edbengineerror


Drozdov A ©   (2004-03-11 10:17:00) 

Хочу отловить ошибку дублирования строки
у меня стоит ключик на 5 полей (ceh,uchas,poduchas,parametr,pribor)    
Вот мой код программы.
Query1.Close;
Query1.SQL.Clear;
Query1.SQL.Add('insert into rab_baz (ceh,uchas,poduchas,parametr,pribor) values ("'+zeh+'","'+uc+'","'+poduc+'","","" )');
Query1.ExecSQL;
// тут вот пишу обработку ошибки
 try
 except on EDBEngineError do
 begin
     ShowMessage('Дублирование строки....');
     abort;
 end;
 end;

   Query2.close;
   Query2.SQL.clear;
   Query2.SQL.Add('select * from RAB_BAZ where ceh="'+zeh+'" and uchas="'+uc+'" and poduchas="'+poduc+'" ');
   Query2.open;
   query2.Active:=True;
   Query2.First;
   Query1.Close;


Vlad   (2004-03-12 15:25:00) [1]


> Drozdov A   (12.03.04 13:02) [11]


> насколько я понимаю ОНПОСТЕРРОР служит в момент редактирования.

OnPostError срабатывает в момент Post, вернее после него. Но никак не в момент редактирования.


Drozdov A   (2004-03-12 13:02:00) [2]

насколько я понимаю ОНПОСТЕРРОР служит в момент редактирования.
А мне нужно делать на проверку этой ошибки в момент добавления новой записи


Vlad   (2004-03-12 12:11:00) [3]


> Drozdov A   (12.03.04 12:05) [9]

Специально для этих целей служит событие OnPostError.


Drozdov A   (2004-03-12 12:05:00) [4]

а не подскажешь, как тут быть ?


Reindeer Moss Eater   (2004-03-12 12:02:00) [5]

Потому что исключение имеет тип отличный от TDBError


Drozdov A   (2004-03-12 12:00:00) [6]

написал я это
var E: TDBError;
...
except
on E:TDBError do
if E.ErrorCode = 9729 then
begin
   ShowMessage('Нарушение целостности.');
   abort;
end;
а всё-равно оно не отлавливает эту ошибку...


Соловьев   (2004-03-11 11:30:00) [7]

F1


Drozdov A   (2004-03-11 11:07:00) [8]

у меня ошибка выдаётся вот тут .... on E:DBError do
undeclared identifier 'dberror'
хотя я описал вроде
var E: TDBError;
выше


Vlad   (2004-03-11 10:55:00) [9]

а зачем abort ?


Соловьев   (2004-03-11 10:44:00) [10]

и желательно все-таки отловить код ошибки( http://delphiplus.nagano.ru/downloads/doc/delphi/bde_errors.zipна крайний случай можно найти файлик BDE.int)

var E: TDBError;
...
except
on E:DBError do
if E.ErrorCode = 9729 then
begin
    ShowMessage('Нарушение целостности.');
    abort;
end;


Drozdov A   (2004-03-11 10:40:00) [11]

Просто мне выдаётся ошибка при инсертировании дубликата
"Project project1.exe raised exception class EDBEngineerror with
message 'Key violation. Violation of primary key constraint 'Pk_rab_baz_1'. Cannot insert duplicate key in object
'rab_baz'......"
ну и Query1.ExecSQL я вставил между try и except
тако само


Vlad   (2004-03-11 10:26:00) [12]

Ты не сказал в чем собственно вопрос.
Кстати, в коде Query1.ExecSQL разумнее все-таки между try и except вставить ;-)


Наверх

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