打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
ClientDataSet upWhereKeyOnley
我的一些疑惑:

1。UpdateMode=upWhereAll 时,通过所有的字段进行匹配,除了BLOB,浮点数字段无

法正确匹配外,还有什么类型的字段无法正确匹配

2。UpdateMode=upWhereKeyOnly时,如果无法找到匹配的键值会有什么原因呢





解决办法:



下面代码是appserver上一个Provider的BeforeUpdateRecord事件中的代码,
关于Provider和Field.ProviderFlag的详细资料你参考李维写的d5分布开发的系统篇。



procedure TiCRMSaleDataRDM.dspVAccountBeforeUpdateRecord(Sender: TObject;

  SourceDS: TDataSet; DeltaDS: TCustomClientDataSet;

  UpdateKind: TUpdateKind; var Applied: Boolean);

var

  i: Integer;

begin

  //如果是调用DatasetProvider.ApplyUpdates就非常重要,因为在客户端静态设定

  //字段的ProviderFlag中的fpInkey会在对ClientDataSet.Data赋值时丢失

  for i := 0 to DeltaDS.RecordCount - 1 do

  begin

    if not (pfInKey in DeltaDS.FieldByName('ID').ProviderFlags) then

      DeltaDS.FieldByName('ID').ProviderFlags :=

        DeltaDS.FieldByName('ID').ProviderFlags + [pfInkey];

  end;

end;



这个办法实际上就是在DataSetProvider提交之前设定一个fpInKey,这要求表必须有主键!

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
Delphi DataSnap方法实现BLOB字段的读写
Clientdataset关于record change by another user错误的总结
TClientDataSet[22]: 数组字段与 ObjectView
ClientDataset的使用
FieldByName速度优化
解决DBGridEh遍历记录后不移动当前行位置的方法
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服