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() << TFDCopyDataSetOption::coRestart << TFDCopyDataSetOption::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]);