FireDAC.Comp.DataSet.TFDDataSet.CopyDataSet
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 データセットにコピー(coStructure
がAOptions
である場合)、その後:ASource
データセット インデックス セットアップを Self データセットにコピー(coIndexesCopy
がAOptions
の場合)。さもなければ、Self インデックス セットアップをリセット(coIndexesReset
がAOptions
の場合)。ASource
データセット集計セットアップを Self データセットにコピー(coAggregatesCopy
がAOptions
の場合)。 さもなければ、Self 集計セットアップをリセット(coAggregatesReset
がAOptions
の場合)。ASource
データセット制約セットアップを Self データセットにコピー(coConstraintsCopy
がAOptions
の場合)。 さもなければ、Self 制約セットアップをリセット(coConstraintsReset
がAOptions
の場合)。
- Self データセットを開きます(非アクティブの場合)。
ASource
を開始に設定(soRestart
がAOptions
の場合)。ASource
内の各レコードに対して、次を行います:coEdit
がAOptions
の場合、Self データセット内の相当するレコードを検索。- メモ: CopyDataSet は、主キーのフィールド値を使用して、該当する値を検索します。
coAppend
がAOptions
の場合、新規レコードを Self データセットに追加します。coDelete
がAOptions
の場合、レコードがASource
から削除されていた場合、Self データセット内の該当するレコードを検索し、それを削除します。- メモ: CopyDataSet は、主キーのフィールド値を使用して、該当する値を検索します。
- 両データセットに名前が存在し、編集可能なすべてのフィールドをコピーします。
ASource
フィールドがこのデータセット内に見つからない場合、それはスキップされます。両データセット内の同じ名前のフィールドは、データ型に互換性があることが重要です。CopyDataSet メソッドは、フィールドが代入互換かどうかの検証は行いません。 - レコードの変更を送信し、
ASource
での次のレコードを選択します。
ローカル キャッシュにおけるレコードのみを変更するには、coRefresh
を coEdit
の代わりに使用します。変更をデータベースに送信してはいけません。このオプションは、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]);