跟踪修改的行并从TClientDataSet的Delta手动更新

Vij*_*bba 4 delphi tclientdataset

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

Ser*_*yuz 5

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

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

ClientDataSet1.StatusFilter := [usDeleted];
Run Code Online (Sandbox Code Playgroud)

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

但请注意,似乎会有多个版本的记录,并且有点难以理解"更改日志"如何跟踪.并且记录上也可以有多个操作,例如修改几次然后删除它.