Перехват ошибок DBEngine
Ошибки общего характера, типа Key Violation или конфликты блокировки лучше всего обрабатывать в обработчике события Application.OnException ...например:
{Секция Interface} procedure HandleException(Sender: TObject; E: Exception);
|
{Секция Implementation} 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.