Ошибка с 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
Больше ошибок нет!