FireDAC.Comp.Client.TFDAdaptedDataSet.OnExecuteError
Delphi
property OnExecuteError: TFDExecuteErrorEvent read FOnExecuteError write FOnExecuteError;
C++
__property TFDExecuteErrorEvent OnExecuteError = {read=FOnExecuteError, write=FOnExecuteError};
プロパティ
| 種類 | 可視性 | ソース | ユニット | 親 |
|---|---|---|---|---|
| event | public | FireDAC.Comp.Client.pas FireDAC.Comp.Client.hpp |
FireDAC.Comp.Client | TFDAdaptedDataSet |
説明
配列 DML クエリを実行中に、エラーが起きたとき、このイベントが発生します。
OnExecuteError イベントが発生するのは、データセットで Execute メソッドを使用して配列 DML を実行できず、ATimes > 1 の場合です。このイベント ハンドラで、次の処理が実行できます。
- パラメータの配列から、エラーのある行をスキップします。
- パラメータの配列でエラーのある行の値を変更します。
- 配列 DML の完全実行を停止します。
メモ: OnExecuteError は、構文エラーまたは
ATimes= 1 のとき、呼び出されません。
例
パラメータの説明:
ASender- データセットの参照。ATimes- 現在の配列 DML のサイズ。全体が小さい処理に分割される(たとえば Firebird を利用する)場合、Execute メソッドのATimesパラメータの値とは異なることがあります。AOffset- 現在の配列 DML のオフセット。エラーのある行をスキップした場合や全体が小さい処理に分割される(たとえば Firebird を利用する)場合、Execute メソッドのAOffsetパラメータの値とは異なることがあります。AError- 元の DBMS から返されたエラー。パラメータ配列中のエラーのある行のインデックスがどれかは、AError.Errors.RowIndex を確認してください。
procedure TForm1.ADQuery1ExecuteError(ASender: TObject; ATimes,
AOffset: Integer; AError: EFDDBEngineException; var AAction: TFDErrorAction);
begin
if AException.Errors[0].Kind = ekUKViolated then
AAction := eaSkip
else
AAction := eaFail;
end;