我有一个连续的表单嵌入在Access 2010数据库中深两层的NavigationSubform中。我使用连续表单中不可编辑文本框的onclick事件将当前导航子表单的源对象属性更改为应粘贴到用户单击的文本框指定的特定记录的详细表单。DoCmd.GoToRecord将1添加到目标记录
问题是,访问发送用户+1记录id(addr_id),而不是所需的addr_id。这在大多数情况下会产生错误的数据。当用户点击当前最高的addr_id时,它也会产生错误信息。奇怪的是接入向用户发送到正确的addr_id当且仅当在addr_id = 1
下面是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
我测试的黑客编辑
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逻辑来处理访问正在进行的有趣重新路由?
我敢打赌,它是事做改变形式源与该地址标识的结果。我知道当我过去需要类似的用户行为,而不是资源表单时,我打开了一个新表单,指出原始子表单的采购活动记录。 –