FireDAC.Comp.DataSet.TFDDataSet.RefreshRecord

提供: Appmethod Libraries
移動先: 案内検索

Object Pascal

function RefreshRecord(AClearRow: Boolean = True): Boolean;

C++

bool __fastcall RefreshRecord(bool AClearRow = true);

プロパティ

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

説明

現在のレコードのフィールド値をデータ ソースから再読み取りします。


RefreshRecord を使用すると、現在のレコードに対する変更をすべて破棄し、レコードをデータ ソースから再読み取りすることができます。同様の TDataSet.Refresh メソッドは、SQL コマンドを再実行して、データセットの内容全体を置き換えます。

FireDAC がレコードを再読み取りする手順は次のとおりです。

  • OnUpdateRecord イベント ハンドラが割り当てられている場合には、ARequest の値に arFetchRow を指定してそのイベント ハンドラを呼び出します。
  • イベント ハンドラが割り当てられていない場合や、イベント ハンドラから AAction として eaDefault の値が返された場合には、以下が実行されます。
    • TFDAdaptedDataSet.UpdateObject が割り当てられていて TFDUpdateSQL.FetchRowSQL が空でなければ、その SQL コマンドが実行されます。
    • それ以外の場合には、FireDAC によって、データベースから 1 つの行を再読み取りする SELECT コマンドが生成され、実行されます。

データ ソースに対するクエリが行を返さない場合(レコードの削除など)、UpdateOptions.RefreshDeleteTrue であればレコードはデータセットから削除され、そうでなければ例外が発生します。AClearRow パラメータが True(デフォルト値)に設定されていると、レコードは最初に消去されます。そうでなければ、対応する列の値が読み取り値によってオーバーライドされます。

このメソッドは、レコードが更新されると True を返します。そうでなく、レコードがデータセットから削除されている場合には False を返します。

FDQuery1.UpdateObject := ADUpdateSQL;
// PL/SQL block calling packaged procedure returning customer data by its ID
FDUpdateSQL.FetchRowSQL.Text := 'begin cust_pack.read_cust_data(:new_name, :new_company, :new_state, :old_id); end;';
// Is always required to set up output parameters
with FDUpdateSQL.Commands[arFetchRow] do begin
  Params[0].ParamType := ptOutput;
  Params[0].DataType := ftString;
  Params[1].ParamType := ptOutput;
  Params[1].DataType := ftString;
  Params[2].ParamType := ptOutput;
  Params[2].DataType := ftString;
end;
...
FDQuery1.RefreshRecord;

関連項目