• 主页
  • 招聘
  • 语言基础/算法/系统设计
  • 数据库相关
  • 图形处理/多媒体
  • 网络通信/分布式开发
  • VCL组件开发及应用
  • Windows SDK/API

请教高手,D6+ADO+SQL SERVER中<无法更新定位行,一些值可能已在最后一次读取后已更改>该如何解决?

dearfws 2002-05-27 09:22:33
请教高手,D6+ADO+SQL SERVER,当前编辑的表如果在读取后别人又做了修改,在更新时会出现<无法更新定位行,一些值可能已在最后一次读取后已更改>的错误,该如何解决?
...全文
254 点赞 收藏 14
写回复
14 条回复
liangzongqiang 2002年05月28日
用事务处理.
try
adoconnection1.BeginTrans

.....

adodataset1.post;
adoconnection1.CommitTrans ;
except;
adoconnection1.RollbackTrans ;
end;
回复 点赞
manboo 2002年05月27日
使用事物锁定就行了,其他的一些办法很好玩,我在软件工程板看的哦,
设置一个Version如果有修改则version+1,如果你最先读入的Version 和现在Version 不同则可以确定你的修改不能被提交呵呵!这个办法好玩,主要好处是资源,锁定的少!
回复 点赞
leon2k 2002年05月27日
>>>lwk_hlj(阿凯)
我觉得应该这样才行:
AdoConnection.BeginTrans
Try
//更改数据
AdoConnection.CommitTrans;
Except
AdoConnection.RollbackTrans;
End;

回复 点赞
liuziran 2002年05月27日
索引去掉唯一值
回复 点赞
lwk_hlj 2002年05月27日
用事务处理!!!!
李维的书写得很明白
try
adoconnection1.BeginTrans
adodataset1.post;
adoconnection1.CommitTrans ;
except;
adoconnection1.RollbackTrans ;
end;
回复 点赞
shindynj 2002年05月27日
Transaction!

同意zyj320621(小朱)、gmc007(江西的佬表) !
回复 点赞
guguda 2002年05月27日
我也出现过这样的问题,GZ
回复 点赞
dippa 2002年05月27日
用事务!!
回复 点赞
gmc007 2002年05月27日
agree with: zyj320621(小朱)
回复 点赞
星之瀚海 2002年05月27日
你在其中是不是有些字段和别的表中的值有关联,如果有,
请检查是不是两个字段的类型或长度不相同,这往往会造成
你所说的这种现象。
回复 点赞
紫气东来-长江 2002年05月27日
这一种情况 请你用事务处理
回复 点赞
outer2000 2002年05月27日
需要重新关闭,打开一次。
回复 点赞
8341 2002年05月27日
这个问题发生在插入记录时,不小心移动了记录位置,此时记录已POST,然后再修改,就会产生这个错误。
我是在AFTERPOST事件里,REQUERY一下。
回复 点赞
zhaohun 2002年05月27日
我也遇到过,但应该在该表设置主键,因为没有主键 在新增记录后 再修改该记录就会出现“无法定位”的错误提示。一般将表的ID字段设为主键
回复 点赞
发动态
发帖子
Delphi
创建于2007-08-02

1471

社区成员

26.2w+

社区内容

Delphi 开发及应用
社区公告
暂无公告