Delphi 3 и создание приложений баз данных

       

Обработка ошибок смены состоянии набора данных


В случае неудачи при выполнении методов Insert, Edit, Delete и Post обработку ошибки можно реализовать в соответствующих обработчиках событий OnEditError (ошибки при выполнении Insert и Edit}, OnDeleteError (ошибки при выполнении Delete} и OnPostError (ошибки при выполнении Post):

property OnEditError: TDataSetErrorEven;

property OnDeleteError: TDataSetErrorEven;

property OnPostError: TDataSetErrorEven;

где

TDataSetErrorEvent = procedure(DataSet: TDataSet; E: EDatabaseError;

var Action: TDataAction) of object;

TDataAction = (daFail, daAbort, daRetry);

назначение параметров:

DataSel -

указатель на компонент, в котором произошла ошибка;

Е -

ссылка на объект-исключение;

Action -

действие:

daFail -

выполнение метода, вызвавшего ошибку, отменяется, выводится сообщение об ошибке;

daAbort -

выполнение метода, вызвавшего ошибку, отменяется, сообщение об ошибке не выводится;

daRetry -

метод, вызвавший ошибку, после выхода из обработчика выполняется заново; при этом в теле обработчика должна быть скорректирована причина ошибки, иначе произойдет зацикливание программы.

Пример.

Пусть необходимо выдать программное сообщение пользователю и отменить выполнение ошибочного метода, если возникает ошибка при выполнении метода Insert или Edit (например, таблица заблокирована другим пользователем). Тогда можно использовать такой обработчик события OnEditError:

procedure TFormI.TablelEditError(DataSet: TDataSet; E:

EDatabaseError;

var Action: TDataAction);

begin

ShowMessage('Таблица Сотрудников заблокирована другим ' + 'пользователем') ;

Action := daAbort;

end;



Содержание раздела