Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.04.11;
Скачать: CL | DM;

Вниз

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

 
Drozdov A   (2004-03-11 10:17) [0]

Хочу отловить ошибку дублирования строки
у меня стоит ключик на 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-11 10:26) [1]

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


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

Просто мне выдаётся ошибка при инсертировании дубликата
"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
тако само


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

и желательно все-таки отловить код ошибки(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;


 
Vlad ©   (2004-03-11 10:55) [4]

а зачем abort ?


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

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


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

F1


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

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


 
Reindeer Moss Eater ©   (2004-03-12 12:02) [8]

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


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

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


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


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

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


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

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


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


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


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

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



Страницы: 1 вся ветка

Текущий архив: 2004.04.11;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.052 c
9-1065905276
sergiy_nik
2003-10-12 00:47
2004.04.11
Разработка Игр


1-1080197934
IceMaster
2004-03-25 09:58
2004.04.11
Как в фотошопе


1-1082575722
Dmk
2004-04-21 23:28
2004.04.11
Порядок вызова секции Initialization по модулям.


3-1081539621
Mishenka
2004-04-09 23:40
2004.04.11
Как удалить поле из таблицы?


3-1082055118
Серг
2004-04-15 22:51
2004.04.11
DragDrop в DBGride