我知道这个问题已经被问过很多次了,我已经尝试了许多对其他人有用的建议和解决方案,但我无法消除这个错误(请参阅附件)。
这是一个 Access 应用程序,实际上只是 SQL Server 数据库的 UI,并使用 SQL Server 数据库的所有链接表。 用户打开访问权限,然后转到打开“搜索”的表单,用户在其中选择一系列条件并单击“应用过滤器”。 将出现符合条件的记录列表。 他们单击所需的记录,然后打开一个表单,显示有关该记录的详细信息。 然后,他们单击“编辑”按钮,打开另一个表单,允许他们编辑某些字段。 当他们进行更改并点击“保存”时,就会出现此错误。 对我来说奇怪的是,只有当用户选择搜索列表中的第一条记录时才会发生这种情况,但列表中的其他记录似乎不会发生这种情况。
我尝试过以下方法:
这些项目都没有产生影响。
任何有关可能导致此问题的原因的帮助都会受到赞赏。
2。向 SQL 数据库添加了一个日期时间列,该列通过 UPDATE 触发器进行更新
这实际上可能是您的问题的原因 - Access 和 Sql Server 同时修改同一行会导致您看到的写入冲突。
恐怕您误解了您找到的有效建议。
您想要的是 Sql Server 表中的
ROWVERSION
又名 TIMESTAMP
列。这有助于 Access 确定行是否已更改并解决写入冲突。它是全自动的,无需触发。
更多详细信息(Albert 总是提供很多详细信息:p)在这里:
MS Access 写入冲突 - SQL Server - Me = 脏
如果这没有帮助:检查您是否有任何其他触发器,并发布您的 VBA 代码以进行过滤/编辑/保存。
与上述相关,我花了几天时间才找到这个,但我也遇到了这个错误,涉及到我的日期/时间字段,默认约束为 getdate()。我有许多带有日期/时间字段的 SQL 表,它们都具有此默认值。我发现,当打开具有毫秒日期/时间值的表进行编辑时,MS Access 将抛出此错误(我假设 MS Access 不喜欢毫秒,并且正在更新打开的记录集以删除它们)。为了避免这个问题(对于不需要毫秒的数据),我从现有行中删除了毫秒并将默认约束更改为以下内容:
默认(dateadd(毫秒,-datepart(毫秒,getdate()),getdate()))