在下面的代码中,我们偶尔会遇到碰撞错误。如果它会等待一秒钟并重试,它将通过。
我希望它尝试一次。如果失败,请记录错误并重试。如果失败 3 次,MsgBox 给用户,放弃并返回。我能想到的唯一方法是使用 GOTO 回到 ExeHandler。似乎应该有更好的方法。
Public Function RunADO(strContext As String, strSQL As String, Optional intErrSilent As Integer = 0, Optional intErrLog = -1) As Integer
On Error GoTo ErrHandler
ExeHandler:
PostToLog strContext, "SQL: " & strSQL
CurrentProject.Connection.Execute strSQL, dbFailOnError
RunADO = -1
Exit Function
ErrHandler:
RunADO = 0
If intErrSilent = 0 Then
MsgBox Err.Number & ": " & Err.Description, vbCritical, "Run ADO"
End If
If intErrLog = -1 Then
PostErrorToLog Err.Number, strContext, Err.Source & ":" & Err.Description & ": " & "SQL: " & strSQL
End If
End Function