用ADO组件存取Access数据库碰到的问题(100分)

  • 主题发起人 主题发起人 santgan
  • 开始时间 开始时间
S

santgan

Unregistered / Unconfirmed
GUEST, unregistred user!
采用ADO组件连接Access数据库,设置了主键。在编辑完记录,Post的时候出现如下错误提示:
The specified row could not be located for updating:Some values may have been changed since it was last read.
无法提交所做的更改。请问这句话是什么意思,应该如何解决。程序中不涉及到任何并发操作,因此不应该出现这种更新异常的。
我的ConnectionString是:

Provider=Microsoft.Jet.OLEDB.4.0;Password="";User ID=Admin;Data Source=D:/gz/CBuilder/SenSoft/sensoft.mdb;Mode=Share Deny None;Extended Properties="";Locale Identifier=2052;Jet OLEDB:System database="";Jet OLEDB:Registry Path="";Jet OLEDB:Database Password="";Jet OLEDB:Engine Type=4;Jet OLEDB:Database Locking Mode=0;Jet OLEDB:Global Partial Bulk Ops=2;Jet OLEDB:Global Bulk Transactions=1;Jet OLEDB:New Database Password="";Jet OLEDB:Create System Database=False;Jet OLEDB:Encrypt Database=False;Jet OLEDB:Don't Copy Locale on Compact=False;Jet OLEDB:Compact Without Replica Repair=False;Jet OLEDB:SFP=False
 
你的数据库是否有自增字段,或字段里有缺省值,这些情况都会导致这种错误发生。
在每次添加纪录后用Requery试一下,在Requery前面加一个书签,然后再添加新纪录,也许会解决。

具体解决方法过几天给你。
 
你是用ODBC,以前版本有问题,当你的表中有自增字段时,会出现以上的错误,
不过也有可能别人在使用此记录,你将不能POST.
最近我也碰到你一样的错误(用ADO 、ACCESS2000),可以保存,不过我在删除
刚增加的记录时出错,后来我发现即使新记录被加入数据库中,但自增字段的值为0。
退出再次运行程序后发现自增字段值不再为0了,
而用(BDE,ACCESS2000)则在保存后刷新一下就可以删除记录且不报错误。

解决方法:
将ODBC升级为目前的2.5版本,问题不见了。

 
这不关ADO的事情,主要是数据库设计问题,表中含有默认值或,自增字段
 
同意zengr
 
不是ADO的事情,那是谁的错?不过我还是建议一下,升级ODBC。
请高手来谈一谈ADO的使用心得,开导一下我们。
 
我碰到过这个问题,确实是因为自增字段:可能你认为它不用赋值而任其自增,但这不行,
我只好给它一个值(不重复);另一个原因就是设有默认值而又取值唯一的字段在搞鬼.

对于第一个原因,用BDE却没有问题,谁知道?
 
it's not ado's fault.agree with zengr
 
多人接受答案了。
 
后退
顶部