Ms access DoCmd.RunCommand acCmdSaveRecord重置子
我有一个很简单的表格。您可以添加或编辑信息。但是,当尝试添加记录时,不在列表中事件会激发,但当它到达DoCmd.RunCommand acCmdSaveRecord时,它会返回到开头并再次启动,不会发生任何事情。如果您回答“否”,则它将最终退出sub,但仅在出现错误3270和错误2237后,然后出现一个框,告诉我文本不在列表中Ms access DoCmd.RunCommand acCmdSaveRecord重置子,ms-access,Ms Access,我有一个很简单的表格。您可以添加或编辑信息。但是,当尝试添加记录时,不在列表中事件会激发,但当它到达DoCmd.RunCommand acCmdSaveRecord时,它会返回到开头并再次启动,不会发生任何事情。如果您回答“否”,则它将最终退出sub,但仅在出现错误3270和错误2237后,然后出现一个框,告诉我文本不在列表中 Private Sub CboBrandCode_NotInList(NewData As String, Response As Integer) On Error G
Private Sub CboBrandCode_NotInList(NewData As String, Response As Integer)
On Error GoTo ErrorCrap
Dim ans As Variant
If NewData = "" Then
Let ans = MsgBox("The Brand Code cannot be blank!", vbOKOnly)
Exit Sub
End If
Let ans = MsgBox("Do you want to add the new Brand " & NewData & "?", vbYesNo)
If ans = vbYes Then
DoCmd.RunCommand acCmdSaveRecord
Response = acDataErrAdded
ElseIf ans = vbNo Then
DoCmd.RunCommand acCmdUndo
Response = acDataErrContinue
End If
Exit Sub
ErrorCrap:
MsgBox "Error " & Err.Number & ": " & Error$
Exit Sub
End Sub
您是否尝试过用
Exit Sub
替换End
问题可能是因为当程序到达Sub CboBrandCode\u NotInList
中的Exit Sub
时,它会返回到以前的Sub或函数并重新启动代码,但参数NewData
或Response
现在为空或为空
您是否调用此Sub以期望从中得到结果?如果是,请更改
函数CboBrandCode\u NotInList的名称Sub CboBrandCode\u NotInList
为什么在“Yes”的情况下有acCmdSaveRecord
?应该没有必要。在由绑定数据的更改引发的事件期间更改绑定数据通常不是一个好主意-很容易创建循环事件和错误。如果不想保存记录,则无需这样做。这是一条新记录,保存该记录是非常可取的。您的语句听起来好像永远不会对数据进行任何更改或添加。当然,记录需要在某个时候保存。但是如果用户在组合框中输入的值不在其行源中,则会发生NotInList
事件。这些是独立的事件,您不应该尝试自动链接它们。为什么要将响应变量作为参数?但当vbYes/vbNo时设置此变量。也许你想要的是函数而不是子函数,对吧?