** NORMAS DEL FORO **
Inicio del foro Inicio del foro > Access y VBA > Access y VBA
  Mensajes nuevos Mensajes nuevos RSS - Obtener nombre de función en ejecución
  Preguntas frecuentes Preguntas frecuentes  Buscar en el foro   Eventos   Registro Registro  Iniciar sesion Iniciar sesion

Tema cerradoObtener nombre de función en ejecución

 Responder Responder
Autor
Mensaje
simbad Ver desplegable
Nuevo
Nuevo
Avatar

Unido: 10/Mayo/2006
Localización: España
Estado: Sin conexión
Puntos: 22
Enlace directo a este mensaje Tema: Obtener nombre de función en ejecución
    Enviado: 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.
Arriba
deneg_nhj Ver desplegable
Habitual
Habitual
Avatar

Unido: 03/Septiembre/2012
Localización: Mexico
Estado: Sin conexión
Puntos: 102
Enlace directo a este mensaje Enviado: 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
Arriba
xavi Ver desplegable
Administrador
Administrador
Avatar
Terrassa-BCN

Unido: 10/Mayo/2005
Localización: Catalunya ||||
Estado: Sin conexión
Puntos: 11916
Enlace directo a este mensaje Enviado: 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

Mi web
Arriba
javier.mil Ver desplegable
Colaborador
Colaborador
Avatar

Unido: 10/Agosto/2005
Localización: España
Estado: Sin conexión
Puntos: 4286
Enlace directo a este mensaje Enviado: 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


Arriba
simbad Ver desplegable
Nuevo
Nuevo
Avatar

Unido: 10/Mayo/2006
Localización: España
Estado: Sin conexión
Puntos: 22
Enlace directo a este mensaje Enviado: 30/Abril/2019 a las 16:15
Gracias.
Probaré y os comentaré resultados.

Editado por simbad - 30/Abril/2019 a las 16:18
Arriba
simbad Ver desplegable
Nuevo
Nuevo
Avatar

Unido: 10/Mayo/2006
Localización: España
Estado: Sin conexión
Puntos: 22
Enlace directo a este mensaje Enviado: 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.


Editado por simbad - 20/Junio/2019 a las 01:21
Arriba
 Responder Responder
  Compartir tema   

Ir al foro Permisos de foro Ver desplegable