В форме создайте новую запись, отредактируйте некоторые данные, но перед сохранением используйте поле со списком в форме, чтобы выбрать другую запись для перехода. Это вызывает 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
Спасибо