整容说文库 > 程序代码 > 教育资讯

clientdatset ApplyUpdates(0) 无法定位行,一些数据可能在读取后更改

来源:学生作业帮助网 编辑:整容说文库 时间:2020/12/05 15:48:02 程序代码
clientdatset ApplyUpdates(0) 无法定位行,一些数据可能在读取后更改程序代码
数据库:sql server 2000 ID为自增字段
连接: adoconntion + adoquary+tdatasetprovider+clientdataset

adoquary与clientdataset的 prociderflags ID字段设置为:pkinupdate,pkinwhere ,其它字段全部设置为:pkinupdate,

datasetprovider option poincfieldprops为true ,其它为false

updatemode为upwherechanged
REsolvetodataset 为true


现在操作如下:
  clientdateset delete 部份数据
  clientdateset edit 和 append 部份数据(这些数据有可能与删除的数据相同)

ApplyUpdates(0) 提示:无法定位行,一些数据可能在读取后更改


请各位高手指点,如果没有一个好的解决方法,我几天的工作就白做了。
我个人估计与自增字段有关系,但是找不到证据更找不到解决办法,在append 时是不可以append ID字段的。
这个错误提示很明显了,由于你要修改的那条记录已被修改,所以找不到。

比如你加载了数据后,将数据库里的某条记录修改,然后你没刷新数据就直接在界面操作这条记录,就会报这个错。

“现在操作如下: 
  clientdateset delete 部份数据 
  clientdateset edit 和 append 部份数据(这些数据有可能与删除的数据相同) ”

你在一个操作之后马上刷新界面的数据,再作另一个操作就不会有这个问题了。

1、这个错误我也遇到过,一般是这样,数据集与数据库的数据不匹配(即数据库中有默认值)
2、解决办法,Close、Open 数据集,问题应该能得到解决
引用 2 楼 nightmaple 的回复:
这个错误提示很明显了,由于你要修改的那条记录已被修改,所以找不到。

比如你加载了数据后,将数据库里的某条记录修改,然后你没刷新数据就直接在界面操作这条记录,就会报这个错。

“现在操作如下:
  clientdateset delete 部份数据
  clientdateset edit 和 append 部份数据(这些数据有可能与删除的数据相同) ”

你在一个操作之后马上刷新界面的数据,再作另一个操作就不会有这个问题了。


也不知道是搞了什么了
现在不提示出错了

不过由于我delphi 后,我并没有提交数据到服务器,所以不存在刷新的问题
还有我的delete 与insert 相当于是一个事务,先删了再添加,要么都成功,要么都失败(没有做事务控制)
引用 3 楼 zhangjing1979666 的回复:
1、这个错误我也遇到过,一般是这样,数据集与数据库的数据不匹配(即数据库中有默认值)
2、解决办法,Close、Open 数据集,问题应该能得到解决


问题我的几个操作之间并没有提交数据,而且现在是测试的,数据库就我是一客户端连接。
不存在别人更改的问题..............
结贴了,不过答案不是我想要的!
程序代码