FireDAC.Comp.DataSet.TFDDataSet.OnUpdateError

提供:RAD Studio API Documentation

Delphi

property OnUpdateError: TFDUpdateErrorEvent read FOnUpdateError

C++

__property TFDUpdateErrorEvent OnUpdateError = {read=FOnUpdateError, write=FOnUpdateError};

プロパティ

種類 可視性 ソース ユニット 親
event public
FireDAC.Comp.DataSet.pas
FireDAC.Comp.DataSet.hpp
FireDAC.Comp.DataSet TFDDataSet

説明

更新がデータベースに適用されたときに例外が生成された場合に発生します。


OnUpdateError イベントのイベント ハンドラを使用すると、データベースに対する即時更新またはキャッシュされた更新の適用中に発生した例外に応答できます。

ASender は、更新が適用されるデータセットです。

AException は、アプリケーションでエラー メッセージとエラー状況の実際の原因を取り出すことができる EFDException オブジェクトのポインタです。OnUpdateError ハンドラでは、この情報を使用して、エラー状況への応答方法を決定できます。ほとんどの場合、AException オブジェクトは EFDDBEngineException クラスまたはその DBMS 固有サブクラスのインスタンスです。  ARow は DatS 行オブジェクトで、データセット内の誤りのあるレコードを表します。このレコードはまた、ASender 内の現在のレコードでもあります。

ARequest は、エラーが発生したのがレコードの挿入中、削除中、変更中のいずれであるかを示します。

AAction は、OnUpdateError イベント ハンドラの終了時に実行するアクションを示します。このハンドラに制御が移ったとき、AAction は常に eaDefault に設定され、変更されなければ、最終的に uaFail になります。OnUpdateError でエラーを処理または修正できる場合は、このエラー ハンドラが終了する前に AAction を uaRetry に設定するか、他の選択肢を検討します。

このエラー ハンドラでは、OldValue プロパティと NewValue プロパティを使用して、エラー状況を評価し、NewValue を、適用する新しい値に設定することができます。この場合は、終了する前に AAction を uaRetry に設定します。

警告: OnUpdateError イベントのハンドラ コードでは、別のレコードを現在のレコードにするメソッドを呼び出さないでください。

例

 procedure TForm1.FDQuery1UpdateError(ASender: TDataSet; AException: EFDException;
     ARow: TFDDatSRow; ARequest: TFDUpdateRequest; var AAction: TFDErrorAction);
 begin
   if (E is EFDDBEngineException) and (EFDDBEngineException(E).Kind = ekUKViolated) then begin
     DataSet.FieldByName('ID').AsInteger := GetNextFreeID;
     Action := eaRetry;
   end;
 end;

関連項目