数据库:sql server 2000 ID为自增字段
连接: adoconntion + adoquary+tdatasetprovider+clientdatasetadoquary与clientdataset的 prociderflags ID字段设置为:pkinupdate,pkinwhere ,其它字段全部设置为:pkinupdate,datasetprovider option poincfieldprops为true ,其它为falseupdatemode为upwherechanged
REsolvetodataset 为true
现在操作如下:
  clientdateset delete 部份数据
  clientdateset edit 和 append 部份数据(这些数据有可能与删除的数据相同)ApplyUpdates(0) 提示:无法定位行,一些数据可能在读取后更改
请各位高手指点,如果没有一个好的解决方法,我几天的工作就白做了。

解决方案 »

  1.   

    我个人估计与自增字段有关系,但是找不到证据更找不到解决办法,在append 时是不可以append ID字段的。
      

  2.   

    这个错误提示很明显了,由于你要修改的那条记录已被修改,所以找不到。比如你加载了数据后,将数据库里的某条记录修改,然后你没刷新数据就直接在界面操作这条记录,就会报这个错。“现在操作如下: 
      clientdateset delete 部份数据 
      clientdateset edit 和 append 部份数据(这些数据有可能与删除的数据相同) ”你在一个操作之后马上刷新界面的数据,再作另一个操作就不会有这个问题了。
      

  3.   

    1、这个错误我也遇到过,一般是这样,数据集与数据库的数据不匹配(即数据库中有默认值)
    2、解决办法,Close、Open 数据集,问题应该能得到解决
      

  4.   


    也不知道是搞了什么了
    现在不提示出错了不过由于我delphi 后,我并没有提交数据到服务器,所以不存在刷新的问题
    还有我的delete 与insert 相当于是一个事务,先删了再添加,要么都成功,要么都失败(没有做事务控制)