【发布时间】:2013-07-28 10:55:14
【问题描述】:
我有一个 ClientDatSet 和几个 fkInternalCalc 字段。 CDS 未链接到任何提供商;相反,它是即时填充的。如何强制 CDS 重新计算所有“可计算”字段?我不能打电话给Refresh(),因为没有提供者可以从中刷新数据。到目前为止,我使用的唯一方法是浏览所有记录,这不是最好的方法。
PS:我已经阅读了this question 和this post,但我希望有更优雅的方式。
【问题讨论】:
-
那么,关闭-打开数据集不起作用?
-
@SertacAkyuz 我还没试过。关闭客户端数据集不会清除其中的所有数据吗?
-
@SertacAkyuz 我很害怕……
Resync()是做什么的?有什么想法吗? -
@Iman:请解释一下为什么需要强制字段计算?每次字段更改以响应名为 deFieldChanged 的内部数据集事件时,它都会自动发生。有一个名为 TDataset.CalculateFields 的受保护方法会触发对当前记录的处理,但它不打算被 TDataset(或其子类)以外的任何代码使用。这一切都是因为,理论上,程序员不需要自己触发计算过程。
-
@AlexSC,这不适用于 fkInternalCalc 字段。
标签: delphi delphi-xe2 tclientdataset