API:FireDAC.Comp.Client.TFDMemTable.OnUpdateError
Delphi
property OnUpdateError: TFDUpdateErrorEvent read FOnUpdateError write FOnUpdateError;
C++
__property OnUpdateError;
プロパティ
種類 | 可視性 | ソース | ユニット | 親 |
---|---|---|---|---|
event | published | FireDAC.Comp.Client.pas FireDAC.Comp.Client.hpp |
FireDAC.Comp.Client | TFDMemTable |
説明
更新がデータベースに適用されたときに例外が生成された場合に発生します。
FireDAC.Comp.Client.TFDMemTable.OnUpdateError は FireDAC.Comp.DataSet.TFDDataSet.OnUpdateError を継承しています。以下の内容はすべて FireDAC.Comp.DataSet.TFDDataSet.OnUpdateError を参照しています。
更新がデータベースに適用されたときに例外が生成された場合に発生します。
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;