データを直接割り当てる

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

別のデータセットからのデータのコピー への移動


クライアント データセットの Data プロパティを使用して、データを、別のデータセットからクライアント データセットに割り当てることができます。 Data は、OleVariant の形式でのデータ パケットです。 データ パケットは、別のクライアント データセット、または、プロバイダを使用してその他のデータセットから、入ってきます。 いったんデータ パケットが Data に割り当てられると、その内容が自動的に、データソース コンポーネントによってクライアント データセットの接続されているデータ対応コントロールに表示されます。

サーバー データを表す、または、外部プロバイダ コンポーネントを使用する、クライアント データセットを開くと、データ パケットが自動的に Data に割り当てられます。

クライアント データセットがプロバイダを使用しない場合、別のクライアント データセットから、次のようにデータをコピーできます:

Delphi:

ClientDataSet1.Data := ClientDataSet2.Data;

C++:

ClientDataSet1->Data = ClientDataSet2->Data;

メモ: 別のクライアント データセットの Data プロパティをコピーする際、変更ログも共にコピーしますが、そのコピーは、フィルタや適用される範囲までは反映しません。 フィルタや範囲を含めるには、ソース データセットのカーソルを代わりにクローンしなければなりません。

クライアント データセット以外からコピーをする場合、データセット プロバイダ コンポーネントを作成し、それをソース データセットにリンク付けし、それからそのデータをコピーすることができます:

Delphi:

TempProvider := TDataSetProvider.Create(Form1);
TempProvider.DataSet := SourceDataSet;
ClientDataSet1.Data := TempProvider.Data;
TempProvider.Free;

C++:

TempProvider = new TDataSetProvider(Form1);
TempProvider->DataSet = SourceDataSet;
ClientDataSet1->Data = TempProvider->Data;
delete TempProvider;

メモ: Data プロパティへ直接割り当てる場合、新しいデータ パケットは、既存のデータにマージされません。 代わりに、以前のデータすべてが置き換えられます。

別のデータセットから、データをコピーするのではなく、変更をマージしたい場合には、プロバイダ コンポーネントを使用しなければなりません。 データセット プロバイダを以前の例のように作成しますが、対象データセットにアタッチし、データ プロパティをコピーする代わりに、ApplyUpdates メソッドを使用します:

Delphi:

TempProvider := TDataSetProvider.Create(Form1);
TempProvider.DataSet := ClientDataSet1;
TempProvider.ApplyUpdates(SourceDataSet.Delta, -1, ErrCount);
TempProvider.Free;

C++:

TempProvider = new TDataSetProvider(Form1);
TempProvider->DataSet = ClientDataSet1;
TempProvider->ApplyUpdates(SourceDataSet->Delta, -1, ErrCount);
delete TempProvider;

関連項目