我正在开发一个使用ms Access 2010和oracle的应用程序。现在,我正在使用SQL 5.7代替oracle。
但是ms Access中的代码包含recordset.edit,然后是2个set语句,后跟recordset.update。
recordset.edit
recordset.Fields(22).value=1
recordset.update
这将导致运行时错误3197。您和另一个用户试图同时更改同一数据。
我尝试匹配所有数据类型。但是似乎没有任何作用。我仍然遇到相同的错误。
感谢您的帮助。预先感谢
答案 0 :(得分:1)
此“其他”用户消息经常会误导您,实际上,另一个用户尚未更新记录。
要检查的两件事:
如果某些sql更新或记录集代码“可能”更新了您正在处理的当前记录,则强制进行磁盘写入,因此不存在任何暂挂更新:
例如:
If me.Dirty = True then me.Dirty = false.
YOUR code here such as above is now called/run
第二个常见问题是空位列。这些通常会混淆访问,因此您需要在SERVER级别上确保为此类列设置了默认设置(sql server的值为0 – MySQL的不确定)。因此,这是一个必须检查的问题。
下一步:
确保所涉及的表具有PK,并且应添加行版本(时间戳)。此类列不能与日期时间或保存当前时间的列混淆,它是行版本列。因此,添加一个timestamp列,确保PK列存在,并确保表中的任何位(true / false)列都具有默认值。如果现有位列的值为空,则运行update query将它们全部设置为false(0)。
更改表(如果需要)后,然后重新链接所有访问表。
以上内容应涵盖99%的情况,当您获得该“其他”用户消息时,实际上您确定它不是另一个用户。