delphi CloneCursor的强大及坑

CloneCursor不光可用于clientdataset,fdmemtable, 还可用于TFDDataSet。也就是TFdQuery也可以使用。

procedure CloneCursor(ASource: TFDDataSet; AReset: Boolean = False;  AKeepSettings: Boolean = False); virtual;

描述

共享属于另一个数据集的数据。

使用CloneCursor将属于另一个数据集的数据与此数据集共享。调用CloneCursor 后,该数据集和ASource数据集的内部数据存储在物理上是相同的。 

ASource 是对其数据将与此数据集共享的数据集的引用。 

AResetAKeepSettings确定如何设置以下属性和事件的值:

如果AResetAKeepSettings都是False,则上面列出的属性值都设置为与源数据集匹配。 

如果AResetTrue,上面列出的属性都设置为默认值。 

如果AResetFalse并且AKeepSettingsTrue,则上面列出的属性不会更改。在这种情况下,应用程序必须确保现有索引、过滤器等与克隆数据兼容。 

CloneCursor不会克隆:

  • Persistent fields.
  • Adapter / update object.
  • Event handlers, excluding OnFilterRecord.

具体FDQuery使用时可以 如下

//重要,否则克隆数据集中append及last报错.
  csk.FP.FetchOptions.Mode := fmManual;
  csk.QD.FetchOptions.Mode := fmManual;
//AKeepSetting = true很重要,不然子表会链接到原主表去,即修改了mastersource
  csk.FP.CloneCursor(sk.FP,False,true);
  csk.QD.CloneCursor(sk.QD,False, true);

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值