我在 Access 2010 数据库中的两层深度的 NavigationSubform 中嵌入了一个连续表单。我正在使用连续表单中不可编辑文本框的 onclick 事件将当前导航子表单的源对象属性更改为详细表单,该表单应提示用户单击的文本框指示的特定记录。
问题是访问将用户发送到 +1 记录 ID (addr_id) 而不是所需的 addr_id。这在大多数情况下会产生错误的数据。当用户单击当前最高的 addr_id 时,它也会产生错误消息。奇怪的是,当且仅当 addr_id = 1 时,访问才会将用户发送到正确的 addr_id。
这是导致问题的 onclick 事件的代码:
Private Sub AddressID_Click()
Dim addr_id As Long
addr_id = Me.AddressID
Forms!Main!NavigationSubform.Form!NavigationSubform.SourceObject = "AddressDetails"
DoCmd.GoToRecord , , acGoTo, addr_id
End Sub
我测试了一个 hack 编辑来“修复”这个问题,如下所示:
Private Sub AddressID_Click()
Dim addr_id As Long
Dim new_addr_id As Long
addr_id = Me.AddressID
Forms!Main!NavigationSubform.Form!NavigationSubform.SourceObject = "AddressDetails"
If addr_id = 1 Then
new_addr_id = addr_id
Else
new_addr_id = addr_id - 1
End If
DoCmd.GoToRecord , , acGoTo, new_addr_id
End Sub
但是我的“修复”似乎是一个完整的破解,因为显然必须有一个更好的解决方案。谁能告诉我如何修复此代码,以便我不必添加 if-else 逻辑来处理访问正在执行的这个有趣的重新路由?