Delphi 如何向克隆的TClientDataset添加字段

Delphi 如何向克隆的TClientDataset添加字段,delphi,clone,dbexpress,tclientdataset,Delphi,Clone,Dbexpress,Tclientdataset,我有 ClientDataSet1>DataSetProvider1>SqlDataSet1>sql=select*from customer 我在设计时添加所有字段 然后复制ClientDataSet1并将其重命名为ClientDataSet2 在DataModule创建事件时,我克隆光标 ClientDataset2.CloneCursor(ClientDataset1, True); 因此,克隆的数据集现在在cds1中定义了所有持久性字段 根据这篇文章的答案 我试图向克隆的数据集添加额外

我有

ClientDataSet1>DataSetProvider1>SqlDataSet1>sql=select*from customer

我在设计时添加所有字段 然后复制ClientDataSet1并将其重命名为ClientDataSet2 在DataModule创建事件时,我克隆光标

ClientDataset2.CloneCursor(ClientDataset1, True);
因此,克隆的数据集现在在cds1中定义了所有持久性字段 根据这篇文章的答案 我试图向克隆的数据集添加额外的字段InternalCalc/LookupField 在设计时,但在执行“未找到字段”时出错

我的问题是,添加中不存在的额外字段的正确方法是什么 将数据库中的主数据集或复制到克隆的TClientDataSet


thank's…

我试图在设计时向克隆的数据集添加额外的字段InternalCalc/LookupField,但在设计时它尚未克隆;您可以在运行时克隆它。是的,在设计时,当我打开cds2错误发生时,我会从提供程序标志中删除pfInWhere/pfInUpdate。要向克隆的数据集添加字段,您需要首先克隆它,因为克隆会清除任何当前字段定义。这意味着您必须在运行时添加计算字段和查找字段,在克隆之后。好的,谢谢的TOndrej。你能提供更多关于克隆的解释吗?清除任何当前字段定义我还没有得到它。我可以迭代在设计时定义的字段,没有任何问题。还可以使用数据感知组件将其绑定。数据集从源数据集中接管字段定义。在克隆之前为目标数据集定义的字段将被丢弃。