Database连接SQL SERVER,rec_num是Table的主键,在DBGrid中修改Price字段,然后用ClientDataSet.ApplyUpdates(0)做数据更新. 当DataSetprovider的UpdateMode属性设为upWhereAll时能正常更新.UpdateMode属性设为upWhereKeyOnly时提示错误'Unable to find record. No key specified'.
    我试过调整DataSetprovider的ResolveToDataSet属性值及ClientDataSet的StoreDefs属性值,甚至在rec_num字段的ProviderFlags属性中加入pfInKey, 但问题仍然存在.
    我究竟错在什么地方?

解决方案 »

  1.   

    UpdateMode=upWhereKeyOnly 时必须指定对应DataSet要包括所有的关键字段.
      

  2.   

    这个问题有一点点复杂,,如果你要用 UpdateMode=upWhereKeyOnly 实现更新话那么你要保证在
    CLIENTDATASET有一个字段的PROVIDERFLAGS中有pfInKey,,但是我测试过D5好象你在客户端改动的关于PROVIDERFLAGS的动作不会被传递到中间层,,我看过源码也没有找到相当的写入数据包的代码,,不知道是BUG还是我的看错了,,所以你用SQLRESOLVE的方式时中间层会找不到你的主建字段, 
    所以最直观的解决方式是,,你必须自己把谁是主建的信息传给中间层,  然后在PROVIDER的ONUPDATEDATA事件,,将这个信息传更新中CDS中(这个事件的一个参数),,,具体方法相信你会
    做;记到给你哦!!!