Форум: "Базы";
Текущий архив: 2004.04.11;
Скачать: [xml.tar.bz2];
ВнизНасчёт отлавливание ошибки 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;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.037 c