![如何捕获 Access VBA 中的任何错误](https://linux22.com/image/1503329/%E5%A6%82%E4%BD%95%E6%8D%95%E8%8E%B7%20Access%20VBA%20%E4%B8%AD%E7%9A%84%E4%BB%BB%E4%BD%95%E9%94%99%E8%AF%AF.png)
我找到一个教程,它向我展示了如何在 Access VBA 中记录错误,并且它大部分都有效……但是当我检查我的错误表时,发现大约有 40 个条目没有记录错误编号,也没有描述。我希望错误不显示给用户,但当错误发生时,通过电子邮件将用户名、计算机名称、错误编号和描述发送给我,以便我可以根据需要进行更新。但是如果没有描述和/或错误编号,我无能为力。
这是我的程序,我需要添加/更改/编辑/更新什么才能捕获丢失的错误?
Public Sub Error()
On Error GoTo errorerrorhandler
strDescription = Chr(34) & Err.Description & Chr(34)
strSQL = "INSERT INTO tblErrorLog (ErrDate, CompName, UsrName, ErrNumber, ErrDescription, ErrModule)" _
& " VALUES(#" & Now() & "#, '" & Environ("computername") _
& "', '" & CurrentUser & "', " & Err.Number _
& ", " & strDescription & ", '" & VBE.ActiveCodePane.CodeModule & "')"
DoCmd.SetWarnings False
DoCmd.RunSQL strSQL
DoCmd.SetWarnings True
Exit Sub
errorerrorhandler:
Exit Sub
End Sub
上述过程在我的表中显示错误编号
6, 2113, 3070
编辑
我使用子程序作为总体汇总,尝试编写错误,一旦收到通知,我就可以纠正错误。例如,这是我用来从数据库中查找数据并填充表单字段的子程序:
Private Sub PullDataFromDB()
On Error GoTo errHandler
Dim rs As DAO.Recordset
Set rs = CurrentDb.OpenRecordset("SELECT [ASD], [ID], [JN], [SP], [CI], [CM] FROM DBTable1 WHERE [IN] = CSTR(" & Me.[INNum] & ") ")
Me.[INNum] = rs![ID]
Me.[SD] = rs![ASD]
Me.[JN] = rs![JN]
Me.[SP] = rs![SP]
Me.[CI] = rs![CI]
Me.[CM] = rs![CM]
rs.Close
Set rs = Nothing
Exit Sub
errHandler:
Error
End Sub