Noticias:

Ya hay algunas cosas colgadas en la web así que ya vuelve a estar disponible.

Menú Principal

Crear control de errores

Iniciado por xavi, Abril 14, 2012, 08:01:45 PM

Tema anterior - Siguiente tema

xavi

Palabras clave: manejador, control, errores, log
Autor: Parece que McPegasus
Extraído de: La web del Búho


Objetivo
Estandarizar el manejo del control de errores.


En un comando cualquiera, de un formulario cualquiera, un dia cualquiera y a una hora cualquiera...


Private Sub CmdFacturar_Click()
On Error GoTo Err_CmdFacturar_Click

    'cuerpo del procedimiento, codigo cualquiera

Exit_CmdFacturar_Click:
    Exit Sub

Err_CmdFacturar_Click:
    'En la siguiente funcion ERRORES, recogemos errores para escribirlas posteriormente en un LOG
    'además de mostrar datos en pantalla al usuario:

     Errores Err.Number, Err.Description & vbCrLf & _
            "Evento: " & Screen.ActiveControl.EventProcPrefix & vbCrLf & _
            "Formulario: " & Me.Name
    Resume Exit_CmdFacturar_Click
   
End Sub


En el resto de la aplicacion solo habrá que copiar y pegar la linea:

Errores Err.Number, Err.Description & vbCrLf & _
            "Evento: " & Screen.ActiveControl.EventProcPrefix & vbCrLf & _
            "Formulario: " & Me.Name

en todos los flujos de errores de todos los eventos de los formularios.Tampoco cuesta tanto...¿No?



Ahora en un módulo BAS,las funciones de apoyo para grabar indicencias y para dar aviso en pantalla al usuario....


Function Errores(NumeroError As Integer, Texto As String)

  MsgBox "Atención, mensaje Nº: " & NumeroError & vbCrLf _
         & Texto, vbInformation + vbOKOnly, "Servicio de Mantenimiento"
   
     EscribeDatosTxt ("----------------------------------------------------------")
     EscribeDatosTxt ("Incidencia en el programa:")
     EscribeDatosTxt ("Aviso Nº: " & NumeroError)
     EscribeDatosTxt ("Descripción: " & Texto)
     EscribeDatosTxt ("Fecha de la incidencia:" & Date & " -> Hora : " & Time)
     EscribeDatosTxt ("----------------------------------------------------------")
     ' Fin de control de esta incidencia

End Function

Function EscribeDatosTxt(Texto As String)
Dim NumeroArchivo
NumeroArchivo = FreeFile
Open CurrentProject.Path & "\Incidecnias.txt" For Append As #NumeroArchivo
Print #NumeroArchivo, Texto
Close #NumeroArchivo
End Function




....asi si abrimos el fichero de incidencias...observaríamos unas lineas grabadas como esta...

----------------------------------------------------------
Incidencia en el programa:
Aviso Nº: 2102
Descripción: El nombre del formulario 'McPegasus :-P' está mal escrito o hace referencia a un formulario que no existe.
Evento: CmdFacturar
Formulario: Facturacion
Fecha de la incidencia:23/10/2003 -> Hora : 10:03:05
----------------------------------------------------------