FireDAC.Comp.DataSet.TFDDataSet.OnReconcileError

提供: RAD Studio API Documentation
移動先: 案内検索

Delphi

property OnReconcileError: TFDReconcileErrorEvent read FOnReconcileError

C++

__property TFDReconcileErrorEvent OnReconcileError = {read=FOnReconcileError, write=FOnReconcileError};

プロパティ

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

説明

適用できないレコード更新をデータセットが調停する必要があるときに発生します。


OnReconcileError イベントのイベント ハンドラを使用すると、ApplyUpdates メソッドでデータベース レコードに変更が適用されているときに発生するエラー状況に応答できます。OnReconcileError イベントのイベント ハンドラは Reconcile メソッドで呼びされます。

Reconcile が呼び出されると、データセットでは、例外オブジェクトが関連付けられているすべてのレコードを反復処理します。そのようなレコードごとに、OnReconcileError イベントのイベント ハンドラが呼び出されます。このイベント ハンドラでは、以下を引数として受け取ります。

  • E -- 例外オブジェクトへの参照です。例外オブジェクトの扱い方については、「エラーの処理」トピックを参照してください。
  • UpdateKind -- 現在のレコードの更新の種類です。取り得る値は rsInserted、rsDeleted、rsModified、rsUnchanged のいずれかです。

イベント ハンドラでは、エラーを処理した後、Action 引数を設定しなければなりません。デフォルト値は raMerge です。取り得る値は以下のとおりです。

アクション

説明

raSkip

現在のレコードをスキップします。

raAbort

Reconcile 呼び出しを終了します。

raMerge

現在のレコードのエラー状態をクリアします。その結果、レコードに加えられた変更がそのレコードの初期状態になります。つまり、変更がデータセット レコード キャッシュにマージされます。

raCorrect

現在のレコードのエラー状態をクリアします。つまり、正しく適用されたレコードと見なします。

raCancel

現在のレコードに対する変更をキャンセルします。

raRefresh

現在のレコードに対する変更をキャンセルし、レコード値をデータベースから読み取り直します。

イベント ハンドラでは、OldValue プロパティと NewValue プロパティを読み取ることで、元のフィールド値と現在のフィールド値を分析できます。また、アプリケーションでは、現在のフィールド値を更新し、ActionraCorrect に設定し、後で ApplyUpdates を再度呼び出すこともできます。

 procedure TForm1.FDMemTable1ReconcileError(DataSet: TFDDataSet; E: EFDException;
   UpdateKind: TFDDatSRowState; var Action: TFDDAptReconcileAction);
 begin
   if (UpdateKind = rsInserted) and (E is EFDDBEngineException) and (EFDDBEngineException(E).Kind = ekUKViolated) then begin
     DataSet.FieldByName('ID').AsInteger := GetNextFreeID;
     Action := raCorrect;
   end;
 end;

関連項目