在DELPHI中克隆TClientDataset并添加字段

3
嗨,我有一个主数据集和一个克隆的TClientDataSet。
CdsCloned.CloneCursor(CdsMaster,true);

CdsMaster有两个字段'SessionId'和'UserID',CdsCloned将具有相同的字段。
问题:是否可以在不更改CdsMaster的情况下向CdsCloned添加额外的字段?
1个回答

11

这里实际上有两个问题: 我可以添加额外的TField,我可以添加额外的数据字段。

当你克隆一个客户端数据集游标时,你会得到两个TDataSet实例,每个实例都有自己的TFields集合,并共享一个数据存储。你可以为其中一个或另一个添加额外的TFields,用于计算字段等,而不影响克隆版。这样做没有问题。

但请记住,原始数据集和它的克隆版共享一个数据存储。你不能改变这个数据存储而不影响另一个数据集。如果你向数据存储中添加一个新字段,那么无论你是否创建任何TField对象来读写它,这个新数据都将存在于原始数据集引用的存储中。如果这开始听起来像个坏主意,好吧,我也是这么想的。

最后,如果你希望原始数据集和它的“克隆”具有不同的数据存储,那么你可以分配Data属性而不是使用CloneCursor。当你这样做时,原始数据被复制到“克隆”的数据存储中,但原始数据集和“克隆”不再共享一个数据存储。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接