Domanda

Sarebbe possibile vedere la CallStack in VBA per MS Access 2003? Vale a dire, sarebbe possibile vedere da ciò che procedure o function un'altra function è stato chiamato?

È stato utile?

Soluzione

Non c'è modo programmatico in VBA per visualizzare lo stack di chiamate che io sappia. La soluzione più comune a questo problema è quello di utilizzare una struttura per monitorare chiamate di funzioni, ma sembra sempre come un ripiego per me, e davvero di utilizzare solo durante la programmazione (non in fase di esecuzione), nel qual caso mi sembra che la VBE del built-in capacità di vedere lo stack di chiamate è sufficiente.

E, a proposito, ho sempre messo il pulsante di stack di chiamate sulla toolbar VBE, dal momento che è una delle funzioni più frequentemente utilizzate per me. Ho anche aggiungere il pulsante di compilazione - penso che sia pazzesco che non è sulla barra degli strumenti per default, perché incoraggia le persone a codice senza mai forzare una compilazione. Poi di nuovo, Access 2000 non ha nemmeno utilizzare Option Explicit per default (presumibilmente per la coerenza con le altre applicazioni che utilizzano il VBE - in altre parole, muti di accesso verso il basso, al fine di renderlo coerente con le applicazioni che non sono quasi come code- pesante).

Ma sto divagando ...

Altri suggerimenti

In fase di runtime, il menu Visualizza -.> Stack di chiamate (o premere CTRL + L)

Alla fine, aggiungere un parametro opzionale per la vostra funzione, e passare il nome del chiamante in quel modo. Per i moduli, è possibile utilizzare Me.Name come parametro.

Sì, è possibile, ma non è abbastanza utile!

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

Prima dell'uso GetCallStackCount e GetCallStackFunction chiamata setmode (2), e dopo setmode (1).

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top