电脑计算机论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 2455|回复: 2

delphi ADOQUery中错误解决方法"无法为更新定位行。一些值可能已在最后...

[复制链接]
admin 发表于 2011-9-6 09:18:21 | 显示全部楼层 |阅读模式
使用delphi中的ADOQuery控件中自带的,insert ,edit,delete此操作时,有时会出现下面的错误提示,提示错误信息:"无法为更新定位行。一些值可能已在最后一次读取后已更改。" 此解决方案:

出现的原因:

1.可能是修改的时候在其它地方已经重新修改过此数据集中的某些字段信息,例如我在上传文件时,修改了某表中的文件名称和文件路径,由于没有注意到,所以在修改数据,并再一次选择上传文件时,就会报出此错误;

2.数据库中的表没有主键;

3.在数据库设计时,为某些字段设置了默认值,在修改进行提交以后,数据库会自动修改对应字段的所有行的默认值,从而导致了数据库与数据集中数据的不一致,使ADOQuery无法对数据集进行定位。

解决方法:
1.把数据集重新关闭,再打开,如ADOQuery.close;ADOQuery.open;然后再执行Adoquery.post,完成后,也可以执行 ADOApply.Refresh或 ADOApply.Requery; 视情况而定;
2.修改数据库设计,不再设置默认值,为数据库表定义主键,保证其唯一性。

3.在执行完ADOQuery.Post之后,执行ADOQuery.Refresh,对于设置默认值的情况可以解决。
lailiao1 发表于 2011-12-8 20:02:31 | 显示全部楼层
关注一下。。。。。
回复

使用道具 举报

coolbei88 发表于 2011-12-12 21:06:00 | 显示全部楼层
不容易哦。要支持一下哦。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则


QQ|手机版|小黑屋|电脑计算机论坛 ( 京ICP备2022023538号-1 )

GMT+8, 2024-11-23 17:21 , Processed in 0.100950 second(s), 26 queries .

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表