Access VBA记录集在其他表格上首先查找时出错?

时间:2018-08-22 18:07:57

标签: vba ms-access-2010 dao recordset findfirst

我在Access中创建了一个弹出表单,以搜索记录并在主输入表单上转到它。弹出的“查找”表单具有一个列表框,其中包含所有在主条目表单中的记录,并且该列表框的第一列是主条目表单上的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

就像它没有保留其他形式的记录集一样。我可以看到主窗体看起来像是短暂地转到了该记录,但是随后我认为该窗体正在检查/重置它的记录集,因为它必须检查将按钮设置为打开状态的切换按钮。那种形式。

我不知道该如何解决。有什么想法吗?

谢谢!

1 个答案:

答案 0 :(得分:0)

所以我找不到在哪里找到这个(大声笑),但是我找到了一个非常优雅的解决方案,似乎效果很好:

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

没有更多错误!