如何捕获 Access VBA 中的任何错误

如何捕获 Access VBA 中的任何错误

我找到一个教程,它向我展示了如何在 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

相关内容