求 无法为更新定位行,一些值可能已在最后一次读取后已更改 的最终解决办法 ( 积分: 100 )

  • 主题发起人 主题发起人 蜉蝣小生
  • 开始时间 开始时间

蜉蝣小生

Unregistered / Unconfirmed
GUEST, unregistred user!
同一个数据表里面的内容,要在不同的界面打开更改,不同的界面保存。用的是ado,可是总是出现 无法为更新定位行,一些值可能已在最后一次读取后已更改 的问题,自己试验了好多种方法,总是不能解决,请问有没有人遇到过这样的情况,是怎么解决的?
 
直接用UPDATE语句,但是会有其它问题,同步的问题,如果出现不能更新的就取消此次操作,这样才是最好的最
 
我猜测你是不是使用adoquery打开的表。而且是多个表查询得到的结果。这样当然不可以直接修改。主要是系统都不知道应该怎么给你update,应该是有多行对应数据。
 
是同一个表,如果你打开了某条记录,别人也同时打开了这条记录,并且更改了这条记录的内容,你再保存的话就会给出这个提示。
 
是不是同时有人更新,你是用二层,还是三层
 
最简单的两层,反正不能同时更改同一条记录的 同一个字段
 
...<br>反正不能同时更改同一条记录的&nbsp;同一个字段<br><br>这本来就有逻辑错误吧!!!<br>你想怎样&quot;同时更改同一条记录的&nbsp;同一个字段&quot;
 
两个界面打开同一条记录,然后在这两个界面里面更改这一条记录的同一个字段。在先后保存,后保存的截面肯定会出现这个错误
 
晕,这就是数据库里面最基本的问题啊。叫做读脏数据。<br>A和B都打开了同一个数据表,此时A更改了表并保存了,但B也更改了,但B更改的源数据还是A没更改之前的,所以B只能放弃此次修改的结果,或者B在更改之前再次读一遍。<br>解决办法是读写都加独占锁;或者读不加锁,但写的时候必须先加锁读再写。
 
给数据库表设置一主键索引即可
 
这个问题我也遇见过,可能你忘了设主键了。。
 
LZ设主键没啊...低级失误啊..
 
如果两行的数据(所有的列)完全一样的话可能会出现这个情况
 
设置主键后就不可能完全一样了。
 

Similar threads

回复
0
查看
877
不得闲
D
回复
0
查看
881
DelphiTeacher的专栏
D
D
回复
0
查看
850
DelphiTeacher的专栏
D
后退
顶部