FireDAC.Comp.DataSet.TFDDataSet.CopyDataSet

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

Delphi

procedure CopyDataSet(ASource: TDataset; AOptions: TFDCopyDataSetOptions = [coRestart, coAppend]);

C++

void __fastcall CopyDataSet(Data::Db::TDataSet* ASource, TFDCopyDataSetOptions AOptions = (TFDCopyDataSetOptions() << Firedac_Comp_Dataset__3::coRestart << Firedac_Comp_Dataset__3::coAppend ));

プロパティ

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


説明

ソース データセットからこのデータセットに、レコードをコピーします。

CopyDataSet メソッドを使用すると、ASource データセットからこのデータセットに、レコードをコピーします。

このメソッドは、次のステップを実行します:

  • ASource データセット構造を Self データセットにコピー(coStructureAOptions である場合)、その後:
    • ASource データセット インデックス セットアップを Self データセットにコピー(coIndexesCopyAOptions の場合)。さもなければ、Self インデックス セットアップをリセット(coIndexesResetAOptions の場合)。
    • ASource データセット集計セットアップを Self データセットにコピー(coAggregatesCopyAOptions の場合)。 さもなければ、Self 集計セットアップをリセット(coAggregatesResetAOptions の場合)。
    • ASource データセット制約セットアップを Self データセットにコピー(coConstraintsCopyAOptions の場合)。 さもなければ、Self 制約セットアップをリセット(coConstraintsResetAOptions の場合)。
  • Self データセットを開きます(非アクティブの場合)。
  • ASource を開始に設定(soRestartAOptions の場合)。
  • ASource 内の各レコードに対して、次を行います:
    • coEditAOptions の場合、Self データセット内の相当するレコードを検索。
      メモ: CopyDataSet は、主キーのフィールド値を使用して、該当する値を検索します。
    • coAppendAOptions の場合、新規レコードを Self データセットに追加します。
    • coDeleteAOptions の場合、レコードが ASource から削除されていた場合、Self データセット内の該当するレコードを検索し、それを削除します。
      メモ: CopyDataSet は、主キーのフィールド値を使用して、該当する値を検索します。
    • 両データセットに名前が存在し、編集可能なすべてのフィールドをコピーします。ASource フィールドがこのデータセット内に見つからない場合、それはスキップされます。両データセット内の同じ名前のフィールドは、データ型に互換性があることが重要です。CopyDataSet メソッドは、フィールドが代入互換かどうかの検証は行いません。
    • レコードの変更を送信し、ASource での次のレコードを選択します。

ローカル キャッシュにおけるレコードのみを変更するには、coRefreshcoEdit の代わりに使用します。変更をデータベースに送信してはいけません。このオプションは、ASource データセットからのレコードを使用している、このデータセットをリフレッシュするために使用することができます。

このメソッドは、Data プロパティへ値を代入するのと同じです。異なるのは以下の点です。

  • CopyDataSet は、FireDAC データセット以外からもコピーできます。Data プロパティでは、FireDAC データセットからのみデータをコピーできます。
  • CopyDataSet は、適切なイベントを発生させる、TDataSet API を介して動作します。Data プロパティは、DatS API を介して動作し、イベントは発生しません。
  • CopyDataSet は、現在のフィールド値のみコピーします。Data プロパティは、レコード フィールドのすべてのバージョンをコピーし、元の状態(挿入、削除、更新、未変更)を保持します。
  • Data への値の代入は、CopyDataSet よりかなり高速です。

例:

// copies dataset structure and all records
FDMemTable1.CopyDataSet(Query1, [coStructure, coRestart, coAppend]);

関連項目