防止'数据已被更改'使用Me.Refresh与ODBC链接表

时间:2016-08-29 20:33:38

标签: sql-server ms-access access-vba odbc

在我的Access应用程序的数据输入表单中,我使用Me.Refresh根据用户在非计算字段中输入的数据向用户显示计算字段的新值。目的是为他们提供下一份工作的截止日期。

此Access应用程序通过ODBC使用链接的SQL Server 2012表。计算字段位于基础SQL Server表中,而不是Access Record Source查询的一部分,因为我想将计算值存储在实际数据中,而不仅仅是作为接口元素。

计算非常简单:

nextjob = jobdate + 79

因此我将jobdate字段设置为在更新后运行Me.Refresh。一切都很好。

问题在于,如果用户更新jobdate,则通过移动到另一个字段来触发刷新,然后返回到jobdate字段并更改他们输入的日期Access会抛出一个"数据已被其他用户更改了#34;错误。

我使用本机Access表测试了该方法,但没有出现问题。但是数据需要保留在服务器上,因此移植到本机表不是我的解决方案。

1 个答案:

答案 0 :(得分:1)

有几种可能的解决方案。

1-如果它总是jobdate + 79,根本不存储,请使用包含计算字段的视图。

2-使用Me.Requery代替Me.Refresh。如果表单显示多条记录,则必须导航回当前记录,您可以使用Me.Bookmark

3-将计算移动到Access前端 - 使nextjob成为普通列并在表单中进行设置,这样就不会有另一个用户(服务器)更新数据。