Вниз
Скачать: 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 вся ветка

Скачать: CL | DM;



Память: 0.47 MB
Время: 0.031 c
3-1081430589
Zn
2004-04-08 17:23
2004.04.11
Существует ли таблица с указанным именем в БД.


14-1079221527
ИМХО
2004-03-14 02:45
2004.04.11
Что это за кодировка?


3-1081599322
Locker
2004-04-10 16:15
2004.04.11
Ограничение длины результирующих полей


1-1082454727
webpauk
2004-04-20 13:52
2004.04.11
Центровка надписи


7-1079991197
neodiX
2004-03-23 00:33
2004.04.11
Detect WinLogon window in winXP




   Наверх