Newsgroup: it.comp.appl.access
Titolo: Esportare tutto il codice di un'applicazione Access in un file di testo: ecco come

Ciao a tutti. Ho costruito una routine che esporta in un file di testo 
esterno tutto il codice dei moduli di ogni form contenuta in 
un'applicazione Access, ed il codice dei moduli non associati a nessuna 
form). Il file di testo e' unico, tutti i moduli sono accodati, separati 
tra di loro da una scritta "*** Modulo "<nome della form/modulo>".
Il file di testo viene scritto su un file C:\CODICE.TXT.
Per eseguirlo e' sufficiente creare una nuova maschera nell'applicazione 
della quale volete esportare il codice, creare un bottone e 
copiare/incollare la seguente routine sull'evento "click". Lanciate poi 
la maschera e fate click sul bottone creato :-)
Ho scritto questa routine perché avevo la necessità di trovare le 
differenze nel codice di due diverse versioni della stessa applicazione. 
Avendo la possibilita' di avere UN unico file di testo contenente TUTTO 
il codice, mi e'bastato usare un Windiff (in realtà ho usato "Compare 
It", ottimo) ed ho beccato in un unico colpo tutte le differenze. 
Altrimenti avrei dovuto confrontare ogni modulo a mano... pant, pant!
Lo metto qui perche' 1) penso possa essere utile ad altre persone, ho 
rovistato un poco su Internet ma non ho trovato niente di simile 2) mi 
piacerebbe se mi diceste se c'era un modo piu' efficace/efficiente per 
ottenere lo stesso risultato!
Ciao!
Angelo.-
------------------------------------------------------------------------------------------
Private Sub Comando0_Click()
Dim tmpDb As database
Dim modulo As Module
Dim forma As Form
Dim mdl As AccessObject
DoCmd.Hourglass True
Open "C:\codice.txt" For Output As #1
Set tmpDb = CurrentDb
' Esporta il codice dei moduli "orfani"
For Each xx In tmpDb.Containers![Modules].Documents
     DoCmd.OpenModule xx.Name
     Set modulo = Modules(xx.Name)
     Print #1, "'**** Modulo """ + modulo.Name + """"
     For t = 1 To modulo.CountOfLines
         Print #1, modulo.Lines(t, 1)
     Next
     DoCmd.Close acModule, xx.Name
Next
' Esporta il codice dei moduli associati alle Form
For Each xx In tmpDb.Containers![Forms].Documents
     DoCmd.OpenForm xx.Name
     Set forma = Forms(xx.Name)
     Set modulo = forma.Module
     Print #1, "'**** Modulo """ + modulo.Name + """"
     For t = 1 To modulo.CountOfLines
         Print #1, modulo.Lines(t, 1)
     Next
     DoCmd.Close acForm, forma.Name
Next
Close #1
DoCmd.Hourglass False
End Sub

 ottenere lo stesso risultato!
Hai avuto una bella idea: complimenti  :-)
Ciao, Simone

 un'applicazione Access, 
Gradito e copiato. Proverollo.
Ciao.
Riccardo

 ha scritto nel messaggio news:Cwk_c.252812$5D1.11...@news4.tin.it...

L'hai già segnalato al Sito Comune?
Ciao.
-- 
Sergio MAZZA

 Angelo.-
Tentar non cuoce...
Ciao.
-- 
Sergio MAZZA

...

Quando provo il codice il programma mi dice:
con riferimento al rigo "For Each xx In
tmpDb.Containers![Modules].Documents"
XX  = Variabile non definita ???
Dopo che aggiungo Dim xx As Object (... ci ho provato ...) ricevo
questo ulteriore messaggio, con riferimento al rigo For t = 1 To
modulo.CountOfLines
T  Tipo non corrispondente
Non riesco ad andare oltre..... 
Vorrei un consiglio perché trovo molto utile quanto proposto.
Grazie 
Federico

Ciao! Scusa per il ritardo nella risposta!
Dunque, prova a definirla come tipo "document", ovvero fai
	dim xx as document
dovrebbe funzionare!
Cia,
Angelo.-


 
 Ti ringrazio per la precisazione.
 Ora funziona; perņ, ho dovuto aggiungere al codice, oltre a Dim xx As
      Document anche Dim t As Integer.
Federico
