在我的Access应用程序的数据输入表单中,我使用Me.Refresh
根据用户在非计算字段中输入的数据向用户显示计算字段的新值。目的是为他们提供下一份工作的截止日期。
此Access应用程序通过ODBC使用链接的SQL Server 2012表。计算字段位于基础SQL Server表中,而不是Access Record Source查询的一部分,因为我想将计算值存储在实际数据中,而不仅仅是作为接口元素。
计算非常简单:
nextjob = jobdate + 79
因此我将jobdate
字段设置为在更新后运行Me.Refresh
。一切都很好。
问题在于,如果用户更新jobdate
,则通过移动到另一个字段来触发刷新,然后返回到jobdate
字段并更改他们输入的日期Access会抛出一个"数据已被其他用户更改了#34;错误。
我使用本机Access表测试了该方法,但没有出现问题。但是数据需要保留在服务器上,因此移植到本机表不是我的解决方案。
答案 0 :(得分:1)
有几种可能的解决方案。
1-如果它总是jobdate + 79
,根本不存储,请使用包含计算字段的视图。
2-使用Me.Requery
代替Me.Refresh
。如果表单显示多条记录,则必须导航回当前记录,您可以使用Me.Bookmark
。
3-将计算移动到Access前端 - 使nextjob
成为普通列并在表单中进行设置,这样就不会有另一个用户(服务器)更新数据。