Olá pessoal,
Incomodado de como o Access trata os erros, compartilho com o grupo uma solução. Criei uma rotina para salvar os erros ocorridos em uma tabela, aberto a sugestões.
Primeiro criar uma tabela com os campos citados na procedure LogError
Nos formulários:
On Error GoTo trataErro
.
.
.
sair:
Exit Sub
trataErro:
LogError Err.Number, Err.Description, Me.Form.Name, "NomeRotina", Erl
Resume sair:
End Sub
Para as rotinas localizadas nos módulos:
On Error GoTo trataErro
.
.
.
sair:
Exit Sub
trataErro:
LogError Err.Number, Err.Description, "Modulo", "NomeRotina", Erl
Resume sair:
End Sub
Public Sub LogError(ByVal ErrNumber As Long, ByVal ErrDesc As String, Optional FormNome As String = "", Optional ProcedureNome As String = "", Optional Linha As Long = 0)
' Rotina para salvar os erros
' O parametro Erl é para os numeros das linhas numeradas.
' by Fernando Lucas, 2024/01
On Error Resume Next
Dim db As DAO.Database
Dim rs As DAO.Recordset
Set db = CurrentDb()
Set rs = db.OpenRecordset("tLogError")
With rs
.AddNew
![ErrNumber] = ErrNumber
![ErrDesc] = ErrDesc
![ErrData] = Now()
![ErrForm] = FormNome
![ErrProcedure] = ProcedureNome
![ErrLine] = Linha
![Versao] = gVersao ‘ variável publica/global da versão do Front End
![Id_Usuario] = TempVars!IdUsuario.Value
![ComputerName] = Environ$("COMPUTERNAME")
.Update
.Close
End With
db.Close
Set rs = Nothing: Set db = Nothing
MsgBox "Erro: " & ErrNumber & vbCrLf & ErrDesc & vbCrLf & "Formulário/Rotina: " & FormNome & " / " & ProcedureNome, vbCritical, "Aviso de erro"
On Error GoTo -1
End Sub
Aberto a comentários e sugestões.
Obrigado,
Fernando Lucas
Incomodado de como o Access trata os erros, compartilho com o grupo uma solução. Criei uma rotina para salvar os erros ocorridos em uma tabela, aberto a sugestões.
Primeiro criar uma tabela com os campos citados na procedure LogError
Nos formulários:
On Error GoTo trataErro
.
.
.
sair:
Exit Sub
trataErro:
LogError Err.Number, Err.Description, Me.Form.Name, "NomeRotina", Erl
Resume sair:
End Sub
Para as rotinas localizadas nos módulos:
On Error GoTo trataErro
.
.
.
sair:
Exit Sub
trataErro:
LogError Err.Number, Err.Description, "Modulo", "NomeRotina", Erl
Resume sair:
End Sub
Public Sub LogError(ByVal ErrNumber As Long, ByVal ErrDesc As String, Optional FormNome As String = "", Optional ProcedureNome As String = "", Optional Linha As Long = 0)
' Rotina para salvar os erros
' O parametro Erl é para os numeros das linhas numeradas.
' by Fernando Lucas, 2024/01
On Error Resume Next
Dim db As DAO.Database
Dim rs As DAO.Recordset
Set db = CurrentDb()
Set rs = db.OpenRecordset("tLogError")
With rs
.AddNew
![ErrNumber] = ErrNumber
![ErrDesc] = ErrDesc
![ErrData] = Now()
![ErrForm] = FormNome
![ErrProcedure] = ProcedureNome
![ErrLine] = Linha
![Versao] = gVersao ‘ variável publica/global da versão do Front End
![Id_Usuario] = TempVars!IdUsuario.Value
![ComputerName] = Environ$("COMPUTERNAME")
.Update
.Close
End With
db.Close
Set rs = Nothing: Set db = Nothing
MsgBox "Erro: " & ErrNumber & vbCrLf & ErrDesc & vbCrLf & "Formulário/Rotina: " & FormNome & " / " & ProcedureNome, vbCritical, "Aviso de erro"
On Error GoTo -1
End Sub
Aberto a comentários e sugestões.
Obrigado,
Fernando Lucas
Última edição por Fernando Lucas em 23/1/2024, 14:14, editado 1 vez(es)