Метод 'FindFirst' объекта 'Recordset2' не выполнен.После не сохранения новой записи - PullRequest
0 голосов
/ 22 января 2019

В форме создайте новую запись, отредактируйте некоторые данные, но перед сохранением используйте поле со списком в форме, чтобы выбрать другую запись для перехода. Это вызывает cboSalePicker_AfterUpdate. Затем во время этого саба Form_BeforeUpdate выполняется. Пользователь нажимает нет на MsgBox, чтобы не сохранить новую запись. Затем выполняется остаток cboSalePicker_AfterUpdate, однако отображается следующее сообщение об ошибке:

Сообщение об ошибке

Error number -2147417848: Method ‘FindFirst’ of object ‘Recordset2’ failed.

Связан с линией Me.Recordset.FindFirst "[SaleID] = " & Str(Nz(cboSalePicker.Value, 0))

Однако, если новая запись сохранена, ошибка не выдается, и код работает должным образом.

Form_BeforeUpdate

Private Sub Form_BeforeUpdate(Cancel As Integer)
On Error GoTo ErrorHandler
    Dim strMsg As String
    Dim iResponse As Integer

    'Specify the mesage to display
    strMsg = "Do you wish to save the changes?" & Chr(10)
    strMsg = strMsg & "Click Yes to Save or No to Discard changes."

    'Display the msg box
    iResponse = MsgBox(strMsg, vbQuestion + vbYesNo, "Save Record?")

    'Check response
    If iResponse = vbNo Then
        'Undo the change.
        DoCmd.RunCommand acCmdUndo
        'Cancel the update
        Cancel = True
    End If

    Exit Sub

ErrorHandler:
    MsgBox "Error number " & Err.Number & ": " & Err.Description
End Sub

cboSalePicker_AfterUpdate

Private Sub cboSalePicker_AfterUpdate()
On Error GoTo ErrorHandler

    Me.Recordset.FindFirst "[SaleID] = " & Str(Nz(cboSalePicker.Value, 0))

    Exit Sub
ErrorHandler:
    MsgBox "Error number " & Err.Number & ": " & Err.Description
End Sub

Спасибо

1 Ответ

0 голосов
/ 22 января 2019

Вы конвертируете свой SaleID в строку, используя эту

Str(Nz(cboSalePicker.Value, 0))

Но ваша находка сначала ищет номер. Если SaleID равен , то удалите функцию Str () из своего кода вокруг значения в выпадающем списке.

Чтобы показать объединение, попробуйте это

  Private Sub cboSalePicker_AfterUpdate()
On Error GoTo ErrorHandler

    Dim sCriteria as String

    sCriteria = "[SaleID] = " & Nz(Me.cboSalePicker, 0)
    debug.print sCriteria

     Me.Recordset.FindFirst sCriteria

    Exit Sub
ErrorHandler:
    MsgBox "Error number " & Err.Number & ": " & Err.Description
End Sub

Закомментируйте первую строку обработчика ошибок во время отладки.

...