我正在使用ms Access 2010和oracle的应用程序上工作。现在,我正在使用SQL 5.7代替oracle。

但是ms访问中的代码包含recordset.edit,然后是2个set语句,然后是recordset.update。
recordset.editrecordset.Fields(22).value=1recordset.update

这将导致运行时错误3197。您和另一个用户试图同时更改相同的数据。

我试图匹配所有数据类型。但是似乎没有任何作用。还是我得到同样的错误。

感谢您的帮助。提前致谢

最佳答案

该“其他”用户消息通常会误导您,并且实际上另一个用户尚未更新该记录。

要检查的两件事:

如果某些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)列都具有默认值。如果现有位列具有空值,则运行更新查询以将它们全部设置为false(0)。

更改表后(如果需要),然后重新链接所有访问表。

当您确定该“其他”用户消息实际上不是另一位用户时,以上内容应涵盖99%的情况。

关于mysql - mysql的MS Access 错误,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/51126083/

10-11 01:27