1

我在访问中创建了一个弹出表单,用于搜索记录并在主条目表单上转到它。弹出的“查找”表单有一个列表框,其中包含主条目表单中的所有记录,该列表框的第一列是主条目表单上的 ID。这是列表框上的隐藏列。

用户可以在未绑定的文本框中输入一些内容,这将过滤列表框,然后一旦他们看到他们想要的记录,他们应该能够双击列表框的一行,并且应该将他们带到该记录主条目表格。我收到一个错误,不知道为什么。

这是双击列表框的代码:

Private Sub lstRecords_DblClick(Cancel As Integer)
    Dim rs As DAO.Recordset


    Set rs = Forms!frmMainEntry.Form.RecordsetClone
    rs.MoveFirst
    rs.FindFirst "[ID] = " & Forms!frmFindRecords.lstRecords.Column(0)
    If Not (rs.BOF And rs.EOF) Then
        'Display the found record in the form.
        Forms!frmMainEntry.Form.Bookmark = rs.Bookmark
        Forms!frmMainEntry.Form.cboJumpToRecord = Forms!frmFindRecords.lstRecords.Column(0)
        Forms!frmMainEntry.Form.cboJumpToRecord.Requery
        cmdClose_Click
    Else
        MsgBox "Weird, I can't find that record. Tell Someone!"
    End If
    Set rs = Nothing
End Sub

当我尝试选择某些内容时,我收到以下错误:运行时错误“2473”:您作为事件属性设置输入的表达式 |2 产生了以下错误:|1。

它突出显示了上述代码的这一行:

        Forms!frmMainEntry.Form.Bookmark = rs.Bookmark

就像它不保留其他形式的记录集一样。我可以看到主表单看起来像是短暂地转到了该记录,但是我认为该表单正在检查/重置它的记录集,当它转到它时,因为它必须检查一个切换按钮,该按钮将过滤器的状态设置为那个表格。

我不知道如何绕过它。有什么想法吗?

谢谢!

4

1 回答 1

0

So I can't find where I found this (lol), but I found this really elegant solution, that seems to work really well:

Private Sub lstRecords_DblClick(Cancel As Integer)
    Forms!frmMainEntry.Recordset.FindFirst "[ID] = " & Forms!frmFindRecords.lstRecords.Column(0)
    Forms!frmMainEntry.Form.cboJumpToRecord = Forms!frmFindRecords.lstRecords.Column(0)
    Forms!frmMainEntry.Form.cboJumpToRecord.Requery
    cmdClose_Click
End Sub

No more errors!

于 2018-08-22T19:52:39.533 回答