![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Насчёт отлавливание ошибки 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 вставить ;-)