Ho trovato un tutorial che mi ha mostrato come registrare gli errori in Access VBA, e funziona principalmente ... ma quando si controlla la mia tabella degli errori ci sono circa 40 voci che non hanno un numero di errore registrato né c'è una descrizione. Desidero che l'errore non venga visualizzato per l'utente, ma quando si verifica l'errore, inviami tramite e-mail il nome utente, il nomecomputer, il numero di errore e la descrizione in modo da poterlo aggiornare secondo necessità. Ma senza descrizione e / o numero di errore non posso fare molto.
Questa è la procedura che ho, cosa devo aggiungere / alterare / modificare / aggiornare per essere in grado di catturare gli errori mancanti?
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
E la procedura sopra mostra i numeri di errore nella mia tabella
6, 2113, 3070
EDIT
Sto usando il sub come un catch-all generale per provare a scrivere errori e posso rimediare una volta ricevuto un avviso. Ad esempio, questo è un sottotitolo che utilizzo per cercare dati da un database e popolare campi in un modulo:
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
Error()
come la Error()
funzione integrata non è una buona idea.