删除数据时,提示‘无法为更新数据集定位:一些值可能已在最后读取后改变‘请大虾指点!(100分)

  • 主题发起人 主题发起人 视觉音乐
  • 开始时间 开始时间

视觉音乐

Unregistered / Unconfirmed
GUEST, unregistred user!
我用ADOTbl,每次删除一个数据时,都会提示‘无法为更新数据集定位:一些值可能已在
最后读取后改变‘ 数据也被删除掉了,但是却找不到问题的原因。所有表中只有这一个表
会出错,但此表一共只有三个字段,一个主键,没有外键关联,(只是该表的id作为了另
一个表的外键,但只是Non identifyiing 关系),请各位大虾指点!
 
升级ado了吗?
 
这可能有两种原因:
1、你没有升级DELPHI的ADO控件;2、你的程序或别人的程序在你删除数据钱更改了数据。
 
建议:不要偷懒!自己用SQL语句写!
 
是不是用的SQL Server2000,Delphi5?那就需要升级你的Delphi的ado包了。
 
谢谢各位回答:
to 荷塘新月:ADO确认已升级了,我的程序目前还只是在单机上用,所以不存在别人更改
数据的情况
to 天真:我原来就使用sql写的,后来老是出现这样的错误,我就只用DBNavigator和这个
ADOTable测试,结果还是出这样的错。
 
to tanglu:我用的是sql7+delphi5
 
以前我一直用ado从没出过问题的,补丁确定早就打过了。
 
你是不是先修改這個數據,
保存之后再刪除,然后就
出現上述錯誤提示?
可試試當數據保存后刷新
一下,在數據集AdoTable的
OnAfterpost后加上
AdoTable.refresh;(或Adotable.Requery;)
還有就是用緩存不會出現上述問題。
 
能贴出源码吗? 贴!
 
确定是否设置了主键
 
可能是做了第一次操作后,没有刷新,接着就做第二个操作的缘故。
你在两次操作中间,加一个refresh试试呢?
 
不是的,我打开这个表,在没有任何操作的情况下,删除一条数据就出错。
所以应该不存在刷新的情况。
主键当然有了。
大家都没有遇到过吗?这个问题捆饶我两三天了,莫名其妙的找不到原因,怪怪怪!
 
整个程序退出后再进入事不是就可以删除了?
 
我遇到过,但是好像重新装了Delphi就好啦。
你换台机器编译试试呢。
 
我连机子都重启了啊 :)
重装delphi?不会吧?
 
我换了一台机子,结果完全一样啊~~~~~~~~~~~~~~~~~~~~
筋疲力尽了
算了
过几天再说吧
谢谢各位大虾了
等我解决掉时,就给大家散分,呵呵
 
此记录的一个逻辑型字段值为空,将其值改为非空值.
 
是否因为你的表中存在bit类型的字段,而且你为该字段设置了默认值,当您新增记录时有指定
该字段的值时,系统认为与后台数据库的原值不匹配时则报错。
或者你可用事件探查器跟踪一下后台执行的数据库脚本,也许能找到原因。
 
这样的问题我已回答多遍了,楼上的除了“天真”的接近些,其余都不对:
这是一个世界性的问题,就是"records have changed by other users"有几种可能
1,该表损坏,备份该表数据,删除之,再新建同样的表
2,在BDE 中,编辑数据最好用Tupdatesql,就是为了防止出现类似的问题
3,即使ADO也有同样的问题,但Ado没有Tupdatesql控件,常做刷新吧
4,如果是BDE,一定要用Tupdatesql来编辑数据,不要仅用Tdbnavigator
5,如果程序太大,短期内可以用这样的方法解决:
定义一个procedure
procedure refreshtb(dataset:Tdataset)
var mybookmark:tbookmark;
begin
with dataset do
begin
mybookmark:=getbookmark;
close; open;
gotobookmar(mybookmark); freebookmark(mybookmark);
end;
end;
加在数据表的afterpost中
 

Similar threads

S
回复
0
查看
730
SUNSTONE的Delphi笔记
S
S
回复
0
查看
738
SUNSTONE的Delphi笔记
S
S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
1K
SUNSTONE的Delphi笔记
S
后退
顶部