Logo_Access_global_380x114Favicon_Access_global_180x180Logo_Access_global_380x114Logo_Access_global_380x114
  • Home
  • University
    • Destellos formativos
  • Labs
  • TV
  • Secciones
    • El mundo de Access
    • Explorando VBA
      • Artículos sobre VBA
      • Un trocito de código
    • Entrevistas
      • Profesionales de Access
    • El rincón de Excel
    • Bases de datos
      • MS SQL
      • MySQL
      • postgreSQL
      • SQLite
    • Clases magistrales
    • Utilidades hechas con Access
  • Access en el mundo
  • ¿Quiénes somos?
  • Cómo colaborar
  • Eventos
✕
            No hay resultados Mostrar todos los resultados
            Access: NorthWind traders
            15/05/2023
            Access: tipo datos adjuntos
            17/05/2023
            Mostrar todos

            VBA: clsErrorHandler

            Publicado por Luis Viadel
            Categorías
            • Clases magistrales
            Etiquetas
            • ActiveVBProject
            • cODEmODULE
            • CountOfDeclarationLines
            • CountOfLines
            • Find
            • NorthWind
            • ProcCountLines
            • ProcOfLine
            • VBE
            • VBProjects
            Módulo de clase: clsErrorhandler
            Option Compare Database
            Option Explicit
            
            '---------------------------------------------------------------------------------------------------------------------------------------------------------
            ' Fuente            : https://access-global.net/vba-clsErrorHandler/
            '                     Destello formativo 324
            '---------------------------------------------------------------------------------------------------------------------------------------------------------
            ' Título            : clsErrorHandler
            ' Autor original    : Microsoft | NorthWind Traders | Developer edition
            ' Adaptado          : Luis Viadel | luisviadel@cowtechnologies.net
            ' Creado            : 2023
            ' Propósito         : establecer un objeto propio de control de errores que genere un log para el programador
            '---------------------------------------------------------------------------------------------------------------------------------------------------------
            ' Información       : https://learn.microsoft.com/openspecs/microsoft_general_purpose_programming_languages/ms-vbal/189fb41b-cc3a-4999-a6d2-ba89f72d2870
            '                     Esta es una clase estática, lo que significa que el desarrollador no necesita instanciarla, siempre está ahí.
            '                     Para usarlo en sus propios proyectos, debe usar este procedimiento:
            '                     Exportar archivo fuera de esta base de datos e Importar archivo a su base de datos.
            '                     Un simple copiar/pegar el código NO es suficiente.
            '
            ' Test:             : Para adaptar este código en tu aplicación puedes basarte en este procedimiento test. Copiar el bloque siguiente al
            '                     portapapeles y pega en el editor de VBA. Pulsa F5 para ver su funcionamiento.
            '
            ' Sub clsErrorHandler_test()
            '10        On Error GoTo Err_Handler
            '
            '          'Pon aquí el código que desees
            '
            'Exit_Handler:
            '20        Exit Sub
            '
            'Err_Handler:
            '30        clsErrorHandler.HandleError "TuModulo", "TuProcedimiento", err.number, err.description, Erl
            '40        Resume Exit_Handler
            '
            ' End Sub
            '-----------------------------------------------------------------------------------------------------------------------------------------------------------
            
            Private Const LOGFILENAME As String = "MiLogDeErrores.log"
            Private m_strLogFilePath As String
            
            Private Sub Class_Initialize()
            10        On Error GoTo Err_Handler
            
            'Crea la ruta completa al archivo de registro de errores en la misma carpeta que la base de datos actual, & _
            concatenando la carpeta, una barra invertida y un nombre de archivo.
            20        m_strLogFilePath = CurrentProject.Path & "" & LOGFILENAME
            
            Exit_Handler:
            30        Exit Sub
            
            Err_Handler:
            40        clsErrorHandler.HandleError "clsErrorHandler", "Class_Initialize", Err.Number, Err.Description, Erl
            50        Resume Exit_Handler
            End Sub
            
            'NOTE:
            '   This main error handler should not itself have an error handler.
            Public Sub HandleError(ByVal strModuleName As String, ByVal strProcedureName As String, ErrorNumber As Long, ErrDescription As String, Erl As Long)
            Dim strMsg As String
            
            10        If ErrorNumber = 2501 Then Exit Sub    '2501 = la acción de abrir el formulario ha sido cancelada. No se trata realmente de un error.
            
            'Registra el error, incluso antes de mostrárselo al usuario.
            20        LogErrorToFile ErrDescription, ErrorNumber, Erl, strModuleName, strProcedureName
            
            'Crea el mensaje concatenando cadenas con la información
            30        strMsg = "Se ha producido el siguiente error: " & vbCrLf
            40        strMsg = strMsg & ErrDescription & vbCrLf
            50        If Erl <> 0 Then strMsg = strMsg & "en la linea " & Erl & vbCrLf
            60        strMsg = strMsg & strModuleName & "." & strProcedureName & vbCrLf & vbCrLf
            70        strMsg = strMsg & "Número de error: " & ErrorNumber & vbCrLf & vbCrLf
            80        strMsg = strMsg & "Por favor, notifíquelo al administrador del sistema. Gracias."
            
            ' Muestra el mensaje al usuario. Si ejecutas ACCDB puedes presionar Ctrl+Break+Step en el depurador para acceder al procedimiento de llamada.
            90        MsgBox strMsg, vbCritical
            
            End Sub
            
            Private Sub LogErrorToFile(ByVal strError As String, ByVal lngError As Long, ByVal lngErrorLine As Long, ByVal strModuleName As String, ByVal strProcedureName As String)
            10        On Error GoTo Err_Handler
            
                      Dim intFile         As Integer
            
            20        intFile = FreeFile
            30        Open m_strLogFilePath For Append As intFile
            
            40        Print #intFile, "Fecha y hora   : " & Now
            50        Print #intFile, "Módulo         : " & strModuleName
            60        Print #intFile, "Procedimiento  : " & strProcedureName
            70        Print #intFile, "Descripción    : " & strError
            80        Print #intFile, "Número de error: " & lngError
            90        Print #intFile, "Línea          : " & IIf(lngErrorLine = 0, "<none>", lngErrorLine)
            100       Print #intFile, "Usuario        : " & Environ$("USERNAME")
            110       Print #intFile, "Equipo         : " & Environ$("COMPUTERNAME")
            120       Print #intFile, "---------------"
            
            130       Close #intFile
            
            Exit_Handler:
            140       Exit Sub
            
            Err_Handler:
            150       clsErrorHandler.HandleError "clsErrorHandler", "LogErrorToFile", Err.Number, Err.Description, Erl
            160       Resume Exit_Handler
            
            End Sub
            ¡Ver en el repositorio!
            Compartir
            13
            Luis Viadel
            Luis Viadel

            Entradas relacionadas

            24/05/2023

            VBA: la forma más sencilla de crear un código QR


            Leer más
            10/05/2023

            VBIDE: algunas estadísticas


            Leer más
            24/04/2023

            MsgBox personalizado


            Leer más

            Deja una respuesta Cancelar la respuesta

            Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

            ETIQUETAS

            Access API ComboBox Consultas CountOfDeclarationLines CountOfLines CStr DCount Diseño DoCmd Excel Fecha FileExists FileSystemObject Filtros For Each...Next Formulario Formularios Funciones Funciones de dominio GetFolder Google maps Informes InStr Kill Listbox Mid Mod Módulos Node ProcCountLines Procedimientos ProcOfLine References Replace Ribbon RunCommand Split Tablas TreeView VBA VBE VBIDE With...End With WizHook

            ÚLTIMAS ENTRADAS

            • 0
              VBA: crea códigos QR sin conexión a Internet
              31/05/2023
            • 0
              VBA: imprimir sin informes
              30/05/2023

            ¿QUIERES PUBLICITAR TU EMPRESA AQUÍ?

            SUSCRÍBETE A NUESTRO
            NEWSLETTER

            Recibirás información puntual sobre el mundo de Access y VBA

            ¡Próximamente!

            Promovemos el uso de Access y de la programación en VBA en todo el mundo

            Centro de conocimiento


            Toda la sabiduría de los mejores programadores de Access y VBA a tu alcance.

            Legal

            Política de privacidad

            Condiciones de uso

            Condiciones del redactor

            ®Access Global 2021 | All right reserved
                      No hay resultados Mostrar todos los resultados