MS Access -“自从您开始编辑此记录以来,该记录已被其他用户更改”

Posted

技术标签:

【中文标题】MS Access -“自从您开始编辑此记录以来,该记录已被其他用户更改”【英文标题】:MS Access - "This Record Has Been Changed By Another User Since You Started Editing It" 【发布时间】:2021-03-12 20:19:34 【问题描述】:

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

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

我尝试过的如下:

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

这些项目都没有影响。

感谢任何有关可能导致此问题的帮助。

【问题讨论】:

这些项目都没有什么不同,因为它们都没有解决根本问题,即两个人同时编辑同一条记录。 好的,你需要做的第一件事就是首先找出导致冲突的原因。采取随机行动并不能解决问题;这是您的解决方案需要精确的时候之一。 为什么 Access 认为正在从两个来源编辑记录?两个用户是否在编辑同一条记录?还是在用户开始编辑表单记录后代码运行 UPDATE SQL?是否有两个表单打开同一记录并尝试编辑? @RobertHarvey:在处理绑定到链接 ODBC 表的 Access 表单时,这是一个常见问题,并且绑定表单以外的任何内容都会修改记录。 罗伯特:两个人没有同时编辑记录。我可以保证,因为它仍在开发中,只有用户的 UI 可以访问数据库中的新表。 【参考方案1】:

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

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

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

更多详情(Albert 总是提供 很多 的详情:p):MS Access Write Conflict - SQL Server - Me = Dirty

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

【讨论】:

赞成 - 解决方法是不使用日期时间 - 您必须使用 TimeStamp - 与时间有关的 TimeStamp 为零 - 一个是不使用触发器或类似的东西。 TimeStamp 是一个“blob”,与时间关系不大。海报是删除 DateTime + 触发器并添加 TimeStamp。用户甚至触发器都不会修改时间戳。添加时间戳并 100% 确保任何位字段的默认值为 0,(并且不为空)将解决给定的问题 - 这篇文章是正确的答案。 谢谢你。我删除了触发器和“Updated_On”列,并添加了 TimeStamp 列。但是,我仍然遇到此错误消息,但仅在我的搜索列表中的第一条记录上。它不会发生在我尝试过的任何其他记录上。我会发布我的 VBA 代码,但这里没有太多内容,因为除了更新部分之外,它主要是访问表单。 好吧,如果没有您的代码和任何重现问题的方法,我们无法为您提供帮助。 @AMC 这可能是我忽略的一个问题,但我重新阅读了您发布的链接,并注意到我在数据库中也没有明确定义的主键,因为我有一个 ID 列是一个识别字段,所以记录是唯一的,所以我没有意识到我没有在 SQL Server 中明确定义它。然后我在 Access 中重新链接了表,问题是正确的。感谢您的帮助。非常感谢。

以上是关于MS Access -“自从您开始编辑此记录以来,该记录已被其他用户更改”的主要内容,如果未能解决你的问题,请参考以下文章

MS ACCESS, VBA 将外部 MS Access 表导入 SQL server 表

MS Access:突出显示 MS Access 报告中的特定字段

MS access 使用相对路径查询多个 MS Access 数据库

连接 MS Access 而另一个应用程序使用相同的 MS Access 文件

将 MS Access 用作 Winform 或 WPF 的后端时如何避免损坏 MS Access

如何让 ms-access 以其他用户身份连接到 ms-sql?