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
            Moda, mediana y algo más
            20/03/2023
            Tratamiento de errores: Objeto Err
            22/03/2023
            Mostrar todos

            ¿Mis procedimientos tienen tratamiento de errores?

            Publicado por Alba Salvá
            Categorías
            • Destellos formativos
            Etiquetas
            • Err.Number
            • Left$
            • ProcCountLines
            • ProcOfLine
            • VBComponent
            • VBIDE
            Public Function TieneControlErrores(vbc As VBIDE.VBComponent, lngInicioProc As Long) As Integer
            '--------------------------------------------------------------------------------------------------------
            ' Fuente            : https://access-global.net/mis-procedimientos-tienen-tratamiento-de-errores
            '--------------------------------------------------------------------------------------------------------
            ' Título            : TieneControlErrores
            ' Autor original    : Alba Salvá
            ' Creado            : 2023
            ' Propósito         : detectar los procedimientos que no contienen tratamiento de errores
            ' Argumentos        : La sintaxis de la función consta de los siguientes argumentos
            '                     Variable          Modo           Descripción
            '-------------------------------------------------------------------------------------------------------
            '                     vbc               Obligatorio    VBIDE
            '                     lngInicioProc     Obligatorio    Nombre de la tabla
            '--------------------------------------------------------------------------------------------------------
            ' Retorno           : Long
            '                     0 = No tiene tratamiento de errores
            '                     1 = tratamiento comentado
            '                     2 = tratamiento disponible
            '--------------------------------------------------------------------------------------------------------
            Dim lngFinLineaProc As Long
            Dim lngInicioLineaTr As Long
            Dim lngFinLineaTr As Long
            Dim lngFinColTr As Long
            Dim lngProcTyp As Long
            Dim PosManejaError As Boolean
            
                On Error GoTo lbError
                
                With vbc.CodeModule
                    lngFinLineaProc = lngInicioProc + .ProcCountLines(.ProcOfLine(lngInicioProc, _
                    lngProcTyp), lngProcTyp) - 1 ' Calculo la última línea del procedimiento.
                    lngInicioLineaTr = lngInicioProc
                    PosManejaError = .Find("On Error", lngInicioLineaTr, 0, lngFinLineaTr, lngFinColTr, True) ' Busco la aparición de "On Error"
                    Do While PosManejaError = True And (lngFinLineaTr < lngFinLineaProc)
                        If Not EsComentario(.Lines(lngFinLineaTr, 1)) Then
                            TieneControlErrores = 2
                            Exit Function
                        Else
                            TieneControlErrores = 1
                            Exit Function
                        End If
                        lngInicioLineaTr = lngInicioLineaTr + 1 ' Si no se ha encontrado, incremento el número de línea y sigo buscando
                        PosManejaError = .Find("On Error", lngInicioLineaTr, 0, lngFinLineaTr, lngFinColTr, True)
                    Loop
                End With
            
                GoTo lbFinally
            
            lbError:
            
                MsgBox "Ha ocurrido un error" & vbCrLf & vbCrLf & _
                       "Código de Error : " & Err.Number & vbCrLf & _
                       "Origen del Error : ObtenerCode" & vbCrLf & _
                       "Descripción Error : " & Err.Description & _
                       Switch(Erl = 0, "", Erl <> 0, vbCrLf & "Línea No: " & Erl) _
                       , vbOKOnly + vbCritical, "¡Ha ocurrido un error"
            
            lbFinally:
            
            End Function
            
            Public Function EsComentario(strLinea As String) As Boolean
            '--------------------------------------------------------------------------------------------------------
            ' Fuente            : https://access-global.net/mis-procedimientos-tienen-tratamiento-de-errores
            '--------------------------------------------------------------------------------------------------------
            ' Título            : EsComentario
            ' Autor original    : Alba Salvá
            ' Creado            : 2023
            ' Propósito         : comprobar si una línea de un procedimiento es un comentario
            ' Argumentos        : La sintaxis de la función consta de los siguientes argumentos
            '                     Variable          Modo           Descripción
            '-------------------------------------------------------------------------------------------------------
            '                     strLinea          Obligatorio    Línea que se va a analizar
            '--------------------------------------------------------------------------------------------------------
            ' Retorno           : booleano
            '                     sí = es un comentario
            '                     no = no es un comentario
            '--------------------------------------------------------------------------------------------------------
                strLinea = Trim$(strLinea)
            
                If Left$(strLinea, 1) = "'" Or Left$(strLinea, 3) = "Rem" Then
                    EsComentario = True
                End If
            
            End Function
            
            
            ¡Ver en el repositorio!
            Compartir
            61
            Alba Salvá
            Alba Salvá

            Entradas relacionadas

            31/05/2023

            VBA: crea códigos QR sin conexión a Internet


            Leer más
            30/05/2023

            VBA: imprimir sin informes


            Leer más
            29/05/2023

            VBA: método BrowseTo


            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