有没有办法手动跟踪做一个的ClientDataSet的增量变化和手动更新上则db的变化。我是动态创建的ClientDataSet和同出一提供商,我能够用TQuery的加载它,现在用户将做在光盘上提供,并在最后阶段,这些数据的数据的一些INSERT,UPDATE和DELETE操作(修改)应该是张贴到数据库使用的TQuery(未应用更新)..

有帮助吗?

解决方案

从TQuery的呼MergeChangeLog填充你的数据集,以便记录不站出来为新插入,并确保LogChanges是集之后。

然后,当在最后阶段,随着数据集更新查询之前,集StatusFilter因此只有要采取行动的记录应该显示。例如;

ClientDataSet1.StatusFilter := [usDeleted];

您也可以使用记录UpdateStatus,看它是否已被修改等。

但要注意的是,似乎是将有创纪录的多个版本,并且这是一个有点难以理解的“更改日志”如何跟踪。并有也可以是在记录多个动作,像修改了几次,然后将其删除。

其他提示

Change:= TPacketDataSet.create;

Change.Data:= YourClientDataSet.Delta;
while not Change.Eof do
begin
 Change.InitAltRecBuffers(False);
 if Change.UpdateStatus = usUnmodified then
   Change.InitAltRecBuffers(True);

 case Change.UpdateStatus of
  usModified:  ;//your logic read codes in Provider.pas for further hint
  usInserted:  ;//your logic read codes in Provider.pas for further hint
  usDeleted: ;//your logic read codes in Provider.pas for further hint
 end;

 Change.Next;
end;

以上应该不管工作数目的改性 干杯 范

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top