加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

delphi – 如何将TClientDataset的更改转换为另一个TClientDatas

发布时间:2020-12-15 09:07:45 所属栏目:大数据 来源:网络整理
导读:如何从TClientDataset获得更改? 我有一个名为GetDataset的TClientDataset,我有一个网格.我想要在名为ChangeDataset的新TClientDataset中进行更改. 我怎样才能做到这一点? 解决方法 如果您有源ClientDataSet CDS1,您应该能够通过执行将更改的记录复制到第二
如何从TClientDataset获得更改?

我有一个名为GetDataset的TClientDataset,我有一个网格.我想要在名为ChangeDataset的新TClientDataset中进行更改.

我怎样才能做到这一点?

解决方法

如果您有源ClientDataSet CDS1,您应该能够通过执行将更改的记录复制到第二个ClientDataSet CDS2

if CDS1.ChangeCount > 0 then 
  CDS2.Data := CDS1.Delta;

正如您将看到的那样,它会为您提供“之前”记录和带有更改的记录.这可能不一定是你想要的 – 坦率地说,你最好阅读评论和OLH中发布的Whipple文章,以获得你可能希望实现的确切结果.关键是,您需要的所有信息都在源CDS中,直到您将其清除(通过调用ApplyUpdates() – 之后,如果成功,则更改日志为空).

如果你看一下CDS2中的行,你不知道如何判断某个特定字段是否包含一个已更改的值,以及如何区分一个只有空的一个.很久以前,Istr在他的Mark Terdington的一个Borland NTTP新闻组中有一篇非常好的帖子,我想,解释如何做到这一点.基本上,这是在字段的NewValue属性上评估VarIsClear的问题:

if VarIsClear(CDS2.Fields[i].NewValue) then 
// means Fields[i] does not have a changed value

顺便说一下,由于您可以将CDS的状态保存为XML,因此可以使用XML操作,例如,使用DOM解析器,如Windows内置的(请参阅MSXML.Pas),可以轻松完成许多使用TDataSet范例很麻烦的事情.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读