单击表单上的“取消”按钮时,不要在字段上运行“退出时代码”

时间:2018-08-28 19:31:06

标签: access-vba

在我的表单上,必须输入第一个字段,因此我有一个On Exit命令。由于它还会检查表中是否存在该值,因此我希望它立即进行检查-是空白(因此需要将数据放入字段中)还是已经存在。我的问题与第一部分有关-它是否为空白。

在此表单上,我还有一个“取消”按钮。当用户单击“取消”时,我希望它关闭表单而不保存任何数据。

问题-如果用户未在第一个字段中输入任何内容并单击“取消”,则它正在运行“退出时”代码,要求将数据输入到第一个字段中-因为他们正在取消,因此他们不必这样做。我收到运行时错误“ 2585”。

是否有要让“取消”代码停止运行“退出”代码的问题?还有其他想法吗?

这是我的“取消”代码:

Private Sub CancelFormButton_Click()
  Me.Undo
  DoCmd.OpenForm "fmuMainMenu"
  DoCmd.Close acForm, "frmVetNewMainForm"
End Sub

这是我在该字段上的“退出代码”的一部分:

If IsNull(Me.txtSSN) Then

  strMsg = "Social Security Number Must Not Be Left Blank!" & vbCrLf
  strMsg = strMsg & "Do you want to add new veteran's record?" & vbCrLf

  If MsgBox(strMsg, vbQuestion + vbYesNo, "Go to Record?") = vbYes Then

    Me.txtSSN.SetFocus
    Exit Sub

  Else

    Me.Undo
    DoCmd.OpenForm "fmuMainMenu"
    DoCmd.Close acForm, "frmVetNewMainForm"

  End If

Else
  'RUNS THE REST OF CODE
End if

1 个答案:

答案 0 :(得分:0)

OnExit事件每次您离开文本框时都会发生,即使是简单的选项卡或单击以转到另一个组合框或选择一些文本也会触发它。 您可能想尝试AfterUpdates中的代码。

,然后在关闭表单命令后尝试“ nosave” ...

此外,通常鼓励在Form_BeforeUpdate部分中执行任何确保字段已填充/具有数据的检查...否则,我被告知