我正在开发一个使用msaccess2010和oracle的应用程序。现在我正在使用SQL5.7而不是oracle。
但是ms access中的代码包含recordset.edit,然后是两个set语句,后跟recordset.update。 recordset.edit recordset.Fields(22).value=1 recordset.update
这将产生运行时错误3197。您和另一个用户正试图同时更改相同的数据。
我尝试匹配所有数据类型。但似乎什么都不管用。但我还是犯了同样的错误。
谢谢你的帮助。提前谢谢
1条答案
按热度按时间rlcwz9us1#
这个“其他”用户消息通常是误导性的,实际上另一个用户没有更新记录。
要检查两件事:
如果某些sql更新或记录集代码“可能”更新您正在处理的当前记录,则强制磁盘写入,因此不存在挂起的更新:
如:
第二个常见问题是空位列。这些通常会混淆访问,因此您需要确保在服务器级别为这些列设置了默认值(SQLServer的值为0—不确定mysql的值是否相同)。所以这是一个必须检查的问题。
下一步:
确保有问题的表有pk,并且应该添加行版本(timestamp)。这种类型的列不能与日期时间或保存当前时间的列混淆,它是一个行版本列。因此,添加一个timestamp列,确保pk列存在,并确保表中的任何位(true/false)列都有默认值。如果现有位列具有空值,则运行update query将其全部设置为false(0)。
更改表后(如果需要),请重新链接所有访问表。
以上应该涵盖99%的情况下,当你得到“其他”用户的消息,而事实上你确定它不是另一个用户。