Перехват ошибок DBEngine
Материал из DRKB
Перехват ошибок DBEngine[править | править код]
Ошибки общего характера, типа Key Violation или конфликты блокировки лучше всего обрабатывать в обработчике события Application.OnException ...например:
procedure TForm1.HandleException(Sender: TObject; E: Exception);
var
err: DBIResult;
begin
if E is EDBEngineError then
begin
err := (E as EDBEngineError).Errors[(E as EDBEngineError).ErrorCount - 1].ErrorCode;
if (err = DBIERR_KEYVIOL) then
ShowMessage('Ошибка Key violation!')
else if (err = DBIERR_LOCKED) then
ShowMessage('Запись блокирована другим пользователем')
else if (err = DBIERR_FILELOCKED) then
ShowMessage('Таблица блокирована кем-то еще')
else
ShowMessage('Другая ошибка DB')
end
else
ShowMessage('Упс!: ' + E.Message);
end;
{ 'инсталлировать' обработчик исключений можно так: }
procedure TForm1.FormCreate(Sender: TObject);
begin
Application.OnException := HandleException;
end;
Для использования предопределенных констант ошибок ('DBIERR_etc.'), вам необходимо включить DBIERRS в список используемых модулей. Полный список кодов ошибок при работе с базами данных вы можете найти в файле DBIERRS.INT, расположенном в каталоге :\DELPHI\DOC.
Source: Взято с http://delphiworld.narod.ru
ID: 02585