无法为更新定位行,一些值可能已在最后一次读取后已更改

ADOTable,ACCESS数据库,表某个字段A-数字类型,默认值是0.

添加一条记录后,

http://wenku.baidu.com/view/bd87ea50ad02de80d4d840c8.html

无法为更新定位行,一些值可能已在最后一次读取(2009-03-11 11:58:22)标签:it 报错:无法为更新定位行,一些值可能已在最后一次读取后已更改 在Delphi 7中,用ADOQuery或ADODataSet操作数据库很方便,可查询,可增删改。

但如果对数据进行修改保存,然后再次对其进行修改保存,就会遇到“无法为更新定位行,一些值可能已在最后一次读取后已更改”的问题。

原因有这样几种:

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

2.数据库对应的表没有主键,输入了重复的数据以后,数据库里有两条一样的数据,从而使ADOQuery无法对数据进行定位。

解决方法:

1.修改数据库设计,不再设置默认值,为数据库表定义主键,保证其唯一性。

2.在执行完ADOQuery.Post之后,执行ADOQuery.Refresh,对于设置默认值的情况可以解决。 (refresh后dataset中的默认值字段获得了值,跟数据库中一致了)

3.改用Insert into sql语句插入,而不是add--post方式. 但这种方式不更新其他打开该表的query, 所以要requery才行, refresh不起作用.

4.使用ADODataSet也是同样的解决方法

时间: 2024-11-13 08:58:45

无法为更新定位行,一些值可能已在最后一次读取后已更改的相关文章

用ADO更新MYSQL报“无法为更新定位行。一些值可能已在最后一次读取后已更改”问题的解决

今天在DELPHI中用ADO通过ODBC连MYSQL更新数据时遇到这个奇怪的错误:无法为更新定位行.一些值可能已在最后一次读取后已更改. 百思不得其解,于是上网查.有的说是因为没主键,但我这个表是有的:有的说是有缺省值,我检查了一下,所有字段都是没缺省值的:有的说是先INSERT再EDIT导致的,我这就是纯EDIT.POST,没有INSERT,所以也不存在. 又找了半天,终于找到类似情况,有人说如果EDIT修改的数据与原有数据一样,那POST时就会报这个错误.我检查了一下,还真是,我EDIT其实

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

使用delphi中的ADOQuery控件中自带的,insert ,edit,delete此操作时,有时会出现下面的错误提示,提示错误信息:"无法为更新定位行.一些值可能已在最后一次读取后已更改." 此解决方案: 出现的原因: 1.可能是修改的时候在其它地方已经重新修改过此数据集中的某些字段信息,例如我在上传文件时,修改了某表中的文件名称和文件路径,由于没有注意到,所以在修改数据,并再一次选择上传文件时,就会报出此错误; 2.数据库中的表没有主键; 3.在数据库设计时,为某些字段设置了默

Delphi ADOQuery无法更新定位行问题(其它数据库访问控件类似)

在Delphi中用ADOQuery进行数据库的记录操作时,有时会报 “无法为更新定位行.一些值可能已经在最后一次读取后已更改” 这个错. 这个错通常是 你操作的记录 在数据库中已经被修改过了, 如: 在数据库中已被删除了,你用ADOQuery更新了被删除的记录 数据库表字段有默认值,你用ADOQuery插入新记录后没有重新查询一遍就再次操作该记录 暂时知道的会引起该错误的可能有这两种,归纳起来 就是 ADOQuery的记录 与 数据库 表记录 对应不上 Delphi ADOQuery无法更新定位

java.io.IOException: ORA-22920: 未锁定含有 LOB 值的行

究其原因是因为没有锁定要更新的行记录.将 mysql="select filebody from filelist where filename=?"中的SQL语句加上 for update即可.如:mysql="select filebody from filelist where filename=? for update". 昨天测weblogic试连接池情况,多次刷新,连接不释放,然后查代码,连接的地方都在finally里边关掉了啊,还是不释放,突然想起sq

HDU 1754 I Hate It(线段树之单点更新,区间最值)

I Hate It Time Limit: 9000/3000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 70863    Accepted Submission(s): 27424 Problem Description 很多学校流行一种比较的习惯.老师们很喜欢询问,从某某到某某当中,分数最高的是多少. 这让很多学生很反感.不管你喜不喜欢,现在需要你做的是,就是按照老师的

poj 2763 树链剖分(单点更新,区间求值)

http://poj.org/problem?id=2763 Description After their royal wedding, Jiajia and Wind hid away in XX Village, to enjoy their ordinary happy life. People in XX Village lived in beautiful huts. There are some pairs of huts connected by bidirectional ro

hdu3966 树链剖分(区间更新和单点求值)

http://acm.hdu.edu.cn/showproblem.php?pid=3966 Problem Description Our protagonist is the handsome human prince Aragorn comes from The Lord of the Rings. One day Aragorn finds a lot of enemies who want to invade his kingdom. As Aragorn knows, the ene

HDU 1754-I Hate It(线段树:单点更新,区间最值)

I Hate It Time Limit: 9000/3000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 39163    Accepted Submission(s): 15507 Problem Description 很多学校流行一种比较的习惯.老师们很喜欢询问,从某某到某某当中,分数最高的是多少. 这让很多学生很反感. 不管你喜不喜欢,现在需要你做的是,就是按照老师

更新clob类型的值

/** * 更新clob数据类型的值 * @param columnName * @param lids * @param para * @return */ public static boolean executeClobSQL(String columnName,String lids,String para){ boolean flag = false; Connection connection = null; PreparedStatement pstmt = null; Resul