Newsgroup: it.comp.appl.access
Titolo: elenco routine di un progetto

ciao a tutti, sto cercando un modo per ottenere l'elenco di tutte le
routine presenti in un DB
devo mettere ordine in alcuni DB che ormai a furia di aggiungere e
sostituire pezzi sono lievitate troppo
ho trovato il modo di elencare tutti i moduli presenti con il codice che
allego, ma per le singole routine non trovo il modo
 
Sub PrintOpenModuleNames()
    Dim i As Integer
    Dim modOpenModules As Modules
 
    Set modOpenModules = Application.Modules
 
    For i = 0 To modOpenModules.Count - 1
 
        Debug.Print modOpenModules(i).Name
 
    Next
 
    Debug.Print modOpenModules.Count
End Sub
 
dario
 

dario ha scritto:

Dichiari un oggetto di tipo Module, lo associ ad uno dei moduli (Set
Oggetto=application.modules("Nome modulo")) e fai un ciclo utilizzando la
proprietą Lines (vedi help F1).
Conti tutte le righe che iniziano per [Public/Private/Friend]
Sub/Function/Property.
Ciao.
-Marco-
 
 
 
-- 
 
questo articolo e` stato inviato via web dal servizio gratuito 
http://www.newsland.it/news
 segnala gli abusi ad 
ab...@newsland.it
 
 
 


Purtroppo non esiste modo di intercettare le singole Dichiarazioni,
devi analizzarlo solo come File di Testo facendo ricerche...
 
Puoi usare questo ma funziona solo nelle Form  e devono essere
aperte...
 
http://www.alessandrobaraldi.it/DettaglioFaq.asp?IdFAQ=35
 
 
@Alex


ci sto lavorando, proseguo domani
 
dario
 

 allego, ma per le singole routine non trovo il modo
 
Se il DB e' A2003 o inferiore  puoi vedere se ti  e' utile questo:
http://lnx.accessgroup.it/community/access-web/frugator-10.0.html
 
 
 
-- 
 
ac (x=y-1)

 wrote:

Guarda se può esserti utile questo:
http://groups.google.com/group/it.comp.appl.access/browse_thread/thread/70604474887ac951/d18dd61c5f6cf00f?q=#d18dd61c5f6cf00f
 
 
Io utilizzo molto questa cosa per salvare in modo continuativo il
lavoro fatto, tutto in un botto!
Esporta tutto il codice, creando un file con estensione ".bas" per
ogni singolo oggetto del database.
Ciao
Tommaso


ho guardato velocemente ma per quello che ho capito non fa al caso mio 
grazie cmq
 


in effetti è comodissimo anche se no è quello che sto cercando
proverò a studiarlo un po per vedere se riesco a trovare soluzioni adatte
al mio scopo
grazie
 

 -Marco-
 
dunque partendo dalle tue indicazioni sono riuscito a produrre un risultato
accettabile del tipo:
 
Elenco delle routine presenti nei moduli
 
Report_elenco clienti
 - Private Sub Corpo_Print(Cancel As Integer, PrintCount As Integer)
 - Private Sub Report_Close()
 - Private Sub Report_Open(Cancel As Integer)
Form_elenco clienti
 - Private Sub Comando14_Click()
 - Private Sub Comando15_Click()
ecc.
 
 ecco il codice:
 
Set modOpenModules = Application.Modules
For i = 0 To modOpenModules.Count - 1
        Set strModuleName = Application.Modules(i)
	Print #1, modOpenModules(i).Name
        rout = strModuleName.CountOfLines
	lngSLine = 1
        lngSCol = 1
	Do
        If strModuleName.Find("Sub", lngSLine, lngSCol, lngELine, lngECol)
Then
		lngNumLines = Abs(lngELine - lngSLine) + 1
            	strTemp = LTrim$(strModuleName.Lines(lngSLine, lngNumLines))
		If strTemp <> "End sub" Then
            		If strTemp <> "exit sub" Then
                    		xx = " - " & strTemp 
                    		Print #1, xx
                	End If
            	End If
        End If
        lngSLine = lngSLine + 1
        lngSCol = 0
        lngELine = 0
        lngECol = 0
     	Loop While lngSLine < rout
Next
 
ora volendo ordinare un poco la cosa, come posso fare per far estrarre le
routine prima dai form, poi dai report e poi dai moduli?
qualche suggerimento?
 
dario
 


Non lo so se fa al caso tuo. Ma.....
Ti fa vedere "tutte" le routine organizzate per Routine (function, sub) 
per modulo (Macro,Modulo,Classe,Form, Report) e volendo le manda su un 
html e rivolendo genera anche una crossreference (dipendenza) fra le 
routines
 
Per rispondere alla tua domanda (in altro post):
Il type dei moduli e' 1
Il type delle classi e' 2
Il type dei form/report e' 100 ma su modules sono prefissati da Form_ e 
Report_ rispettivamente
 
ergo fai tre cicli (*) (o ti organizzi in modo alternativo ;-{)  )
 
(*) a occhio mi sembra che non usi classi.
-- 
 
ac (x=y-1)

 (*) a occhio mi sembra che non usi classi.
 
ho provato ad usare "Application.Modules(i).Type" e ottengo 
0 per i moduli
1 per i form e report
1 per l'unico modulo di classe che ho 
 
se non c'è un altro metodo non risolvo completamente il "problema"
 
dario
 


Mi sembra strano che usi,intendo Access, un diverso type su collezioni 
diverse.Comunque.....
Io uso un'altra collezione questa:
Application.VBE.vbprojects.vbcomponents
e posso assicurare che le cose stanno come ho scritto.
 
E, sempre comunque, se ti guardi gli oggetti (mentre in debug) ti rendi 
conto di come stanno "i ccose"
 
 
-- 
 
ac (x=y-1)

 conto di come stanno "i ccose"
 
scusa la mia ignoranza, ma non so di cosa stai parlando, non ho nozioni
specifiche percui non capisco "collezioni diverse" e "se tiguardi gli
oggetti", puoi spiegarmi?
 
dario
 


Collezione: raccolta di oggetti di una partcolare categoria
Application.Modules "e'" una collezione (anche altrimenti detta "insieme")
 
Le stesse cose che stanno in
Application.Modules
 
si trovano in
Application.VBE.vbprojects.vbcomponents
(stessa collezione con altro nome)
 
"se ti guardi gli oggetti" : OK Non sai usare il debug.
Mi spiace ma diventa troppo lungo spiegare  sia il concetto di oggetto 
che l'utilizzo del Debug.
 
-- 
 
ac (x=y-1)

 che l'utilizzo del Debug.
 
OK grazie lo stesso
 
dario