Ошибка с Access VBA Recordset, чтобы найти сначала в другой форме?

Я создал всплывающую форму в доступе, чтобы найти запись и перейти к ней в основной форме ввода. Всплывающая форма "найти" имеет список со всеми записями, которые находятся в основной форме ввода, а первый столбец этого списка - это идентификатор в основной форме ввода. Это скрытый столбец в списке.

Пользователь может ввести что-то в несвязанное текстовое поле, которое отфильтрует список, а затем, когда он увидит запись, он хочет, он сможет дважды щелкнуть строку списка, и он должен перенести их в эту запись на основная форма заявки. Я получаю ошибку и не знаю почему.

Это код для двойного щелчка по списку:

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 ответ

Так что я не могу найти, где я нашел это (смеется), но я нашел это действительно элегантное решение, которое, кажется, работает очень хорошо:

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

Больше ошибок нет!

Другие вопросы по тегам