FireDAC.Comp.DataSet.TFDDataSet.RefreshRecord
Delphi
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.RefreshDelete が True であればレコードはデータセットから削除され、そうでなければ例外が発生します。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;