Imprimir página | Cerrar ventana

Obtener nombre de función en ejecución

Impreso de: Foro de Access y VBA
Categoría: Access y VBA
Nombre del foro: Access y VBA
Descripción del foro: Foro de programacion en Access (Con código y sin código)
URL: http://www.mvp-access.com/foro/forum_posts.asp?TID=84472
Fecha de impresión: 28/Marzo/2024 a las 10:22


Tema: Obtener nombre de función en ejecución
Publicado por: simbad
Asunto: Obtener nombre de función en ejecución
Fecha de publicación: 29/Abril/2019 a las 22:58
Hola:
Quiero hacer estadísticas con las funciones que más uso en mis aplicaciones de Access. La idea es que mediante un procedimiento o función quede registrado en una tabla el nombre del procedimiento o de la función que ha sido llamada y un contador de llamadas. Lo que pasa es que no consigo obtener el nombre del procedimiento o función que se está ejecutando en tiempo real. Desconozco si existe algún método al estilo de 'Me.Name' de los formularios. En la pila de llamadas aparecen todos los procedimientos y funciones recorridas. Y en la ventana de inmediato los nombres de las funciones también aparecen. ¿Cómo puedo capturarlos?.

Gracias.



Respuestas:
Publicado por: deneg_nhj
Fecha de publicación: 30/Abril/2019 a las 01:49

'-- Registrar las llamadas que tiene una Subrutina

Sub sbabc_HaceAlgo()

 sbRegUso "abc_HaceAlgo"

'-- Aquí va tu rutina tu rutina
A = A + A
..
..
etc..


end sub

sub  sbRegUso (pmt_nomRutina as string )
 '-- En la tabla xTablaLog, tendrás el registro del uso
Currentdb "Insert into  xTablaLog(Campo_NomRutina, Fecha)  values '" &  pmt_nomRutina  & ", now() ")
en sub

La he escrito de memoria, así que solo corrige, 


Saludos!
deneg











-------------
Especializado en Microsoft Access, SQL SERVER y Excel


Publicado por: xavi
Fecha de publicación: 30/Abril/2019 a las 13:20
Desde Access no es posible acceder al nombre del procedimiento. No existe un (me lo invento) ActiveProcedure.Name

Esa "carencia" hace que lo que pidas sea laborioso de implementar... salvo si utilizas MZ-Tools que te permite hacer eso con un solo clic (previa configuración en la biblioteca de código)

Un saludo


-------------
Xavi, un minyó de Terrassa

http://www.llodax.com" rel="nofollow - Mi web


Publicado por: javier.mil
Fecha de publicación: 30/Abril/2019 a las 14:02
Buenas

Creo que la soluciones que te dieron son las simple, perooooo si quieres probar y modificar el siguiente código estaría bien que luego nos digas como lo has hecho

En principio si se podria pero añadiendo la Referencia o Libreria Microsoft Visual Basic for Applications Extensibility 5.3 ,



Sub XecEsFuncionIncreible()

' REFERENCIA Microsoft Visual Basic for Applications Extensibility 5.3

    Dim KodModulo As CodeModule
   
    Dim lngOption As Long
    Dim lngKod As Long
    Dim strAd2 As String

    Set KodModulo = Application.VBE.ActiveCodePane.CodeModule

    For lngKod = 1 To KodModulo.CountOfDeclarationLines
        If InStr(1, KodModulo.Lines(lngKod, 1), "Option Explicit", vbTextCompare) = 0 Then
            lngOption = lngOption + 1
        End If
    Next lngKod

    lngOption = KodModulo.CountOfDeclarationLines - lngOption


    For lngKod = 1 To KodModulo.CountOfLines
        strAd2 = KodModulo.Lines(lngKod + lngOption, 1)
       
        If VBA.Left(strAd2, 3) = "Sub" Then
            strAd2 = Mid(strAd2, 5, Len(strAd2) - 6)
            GoTo Exit_Local
        End If

    Next
   
   
Exit_Local:
    MsgBox strAd2
    Set KodModulo = Nothing

End Sub




-------------
https://www.accessdemo.info" rel="nofollow - https://www.accessdemo.info





Publicado por: simbad
Fecha de publicación: 30/Abril/2019 a las 16:15
Gracias.
Probaré y os comentaré resultados.


Publicado por: simbad
Fecha de publicación: 20/Junio/2019 a las 01:19
Gracias por la ayuda.

Al final me decanto por la solución de deneg_nhj.

en cada función y procedimiento incluyo código que llama al procedimiento que archiva el nombre en una tabla. Con el tiempo la tabla se va llenando y puedo saber qué código es el más usado.

Gracias.



Imprimir página | Cerrar ventana