首页 > 解决方案 > MS Access -“自从您开始编辑此记录以来,该记录已被其他用户更改”

问题描述

我知道这已经被问过很多次了,我已经尝试了许多对其他人有用的建议和解决方案,但我无法让这个错误消失(请参阅附件)。 写冲突截图

这是一个 Access 应用程序,它实际上只是 SQL Server 数据库的 UI,并使用 SQL Server 数据库的所有链接表。用户打开访问权限并转到一个打开“搜索”的表单,用户在其中选择一堆标准并单击“应用过滤器”。出现符合其条件的记录列表。他们单击所需的记录,然后打开一个显示有关该记录的详细信息的表单。然后,他们单击“编辑”按钮,打开另一个表单,允许他们编辑某些字段。当他们进行更改并点击保存时,就会出现此错误。对我来说奇怪的是,这仅在用户选择搜索列表中的第一条记录时才会发生,但列表中的其他记录似乎不会发生。

我尝试过的是以下内容:

  1. 在“BeforeUpdate”和“Update Button Click”事件中添加了代码以检查“If Me.IsDirty = True Then Me.IsDirty = false” End If。
  2. 向 SQL 数据库中添加了一个 datetime 列,该列通过触发器 ON UPDATE 进行更新
  3. 验证数据库没有位列
  4. 将表单上的“记录锁”属性更改为“编辑记录”

这些项目都没有任何区别。

感谢您对可能导致此问题的任何帮助。

标签: vbams-access

解决方案


2. 在 SQL 数据库中添加了一个 datetime 列,该列通过触发器 ON UPDATE 进行更新

这实际上可能是您的问题的原因 - Access 和 Sql Server 同时修改同一行会导致您看到的写入冲突。
恐怕您误解了您找到的有效建议。

您想要的是Sql Server 表中的ROWVERSION又名列。TIMESTAMP这有助于 Access 确定行是否已更改并解决写入冲突。它是全自动的,不需要触发器。

更多细节(Albert 总是提供很多细节:p)在这里:
MS Access Write Conflict - SQL Server - Me = Dirty

如果这没有帮助:检查您是否有任何其他触发器,并发布您的 VBA 代码以进行过滤/编辑/保存。


推荐阅读