4

有没有办法手动跟踪对客户端数据集的增量所做的更改并将更改手动更新到数据库。我已经动态创建了一个客户端数据集,并且没有提供者我可以使用 tquery 加载它,现在用户将对 cds 中可用的数据执行一些插入更新和删除操作,并且在最后阶段这些数据(修改)应该是使用 tquery 发布到数据库(不应用更新)..

4

2 回答 2

5

从 TQuery 调用填充数据集后MergeChangeLog,使记录不会像新插入的那样突出,并确保LogChanges已设置。

然后在最后阶段,在使用数据集更新查询之前,进行设置StatusFilter,以便只显示您要对其执行操作的记录。例如;

ClientDataSet1.StatusFilter := [usDeleted];

您还可以UpdateStatus在记录上使用以查看它是否已被修改等。

但请注意,似乎一条记录会有多个版本,并且有点难以理解“更改日志”如何跟踪。一条记录也可以有多个操作,比如修改几次然后删除它。

于 2010-06-12T14:29:53.933 回答
1
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;

无论修改后的 Cheers Pham 的数量如何,以上都应该有效

于 2010-06-12T15:32:00.763 回答