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 回答