Обработка ошибок смены состоянии набора данных
В случае неудачи при выполнении методов 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;