2009-03-25 24 views
8

¿Sería posible ver el CallStack en VBA para MS Access 2003? Es decir, ¿se podría ver desde qué procedure o function se llamó a otro function?Cómo inspeccionar Call Stack

+0

Este es el tipo de tarea para la que ASM es bueno. – pyon

Respuesta

3

No hay una forma programática en VBA para ver la pila de llamadas que conozco. La solución habitual a este problema es utilizar alguna estructura para rastrear la llamada de funciones, pero siempre me parece un desafío, y de uso real solo cuando se programa (no en tiempo de ejecución), en cuyo caso me parece que los VBE la capacidad incorporada para ver la pila de llamadas es suficiente.

Y, por cierto, siempre pongo el botón de pila de llamadas en mi barra de herramientas VBE, ya que es una de las funciones más utilizadas para mí. También agregué el botón de compilación: creo que es una locura que no esté en la barra de herramientas de forma predeterminada porque anima a las personas a codificar sin forzar una compilación. Por otra parte, Access 2000 ni siquiera usaba Opción explícita de forma predeterminada (supuestamente por coherencia con las otras aplicaciones que usan VBE, en otras palabras, simplifica el acceso para que sea coherente con las aplicaciones que no son tan codificadas). pesado).

Pero estoy divagando ...

9

En tiempo de ejecución, menú Ver -> Pila de llamadas (o presione CTRL + L).

2

Finalmente, añadir un parámetro opcional para su función, y pase la persona que llama el nombre de esa manera. Para formularios, puede usar Me.Name como parámetro.

0

Sí, es posible, ¡pero no es muy útil!

Private Declare Sub SetMode Lib "vba332.dll" Alias "EbSetMode" (ByVal lngMode As Long) 
Private Declare Function GetCallStackCount Lib "vba332.dll" Alias "EbGetCallstackCount" (lngCount As Long) As Long 
Private Declare Function GetCallStackFunction Lib "vba332.dll" Alias "EbGetCallstackFunction" (ByVal Lvl As Long, ByRef strBase As String, ByRef strModule As String, ByRef strFunction As String, ByRef Done As Long) As Long 

Antes del uso GetCallStackCount y GetCallStackFunction llamada Ajustar Modo (2), y después de Ajustar Modo (1).