2

これが私が達成しようとしていることです:

  1. TSQLDataset の CommandText を使用して、データベースから 1 つのレコードを取得します: SELECT * FROM myTable WHERE ID = 1
  2. TClientDataset を使用してレコードを変更します。(1 件の保留中の更新)
  3. 次のレコードを取得します。SELECT * FROM myTable WHERE ID = 2
  4. レコードを変更します。(現在 2 つの保留中の更新)
  5. 最後に、ApplyUpdates 関数を使用して、保留中の 2 つの更新をデータベースに送信します。

ステップ 3 を実行すると、「データを更新する前に更新を適用する必要があります」というメッセージが表示されました。

保留中の更新を適用せずに TClientDataSet を更新するにはどうすればよいですか?

4

1 に答える 1

3

AppendDataメソッドを呼び出して、データパケットをDataSetに手動で追加できます。

プロバイダーがClientDataSetと同じアプリケーションにあるアプリケーションでは、次のようにコーディングできます。

begin
  ConfigureProviderToGetRecordWithID(1);
  //make the ClientDataSet fetch this single record and not hit the EOF.
  ClientDataSet1.PacketRecords := 1; 
  ClientDataSet1.Open;
  ClientDataSet1.Edit;
  ModifyFirstRecord;
  ClientDataSet1.Post;
  ConfigureProviderToGetRecordWithID(2);
  ClientDataSet1.AppendData(DataSetProvider1.Data, False); 
  //now you have two records in your DataSet without losing the delta.
end; 

これは一種の擬似コードですが、使用できる一般的な手法を示しています。

于 2012-11-12T20:15:17.700 に答える