Newsgroup: it.comp.appl.access
Titolo: Problema con variabile globale

In un modulo nuovo mi dichiaro una variabile globale public ut as
string e in una maschera A gli assegno il valore ut = "pincopalla".
Ora se passo in una maschera B e nell'evento apertura scrivo un
controllo tipo if ut = "pippopalla" then....non mi esegue l'if! Ma
perchè ;-( secondo voi dove sbaglio?


Scommetto che hai usato il Debug per vedere la valorizzazione delle
variabili...!!
Che danno...?
@Alex

 Che danno...?
Fuori dall'if ho passato il contenuto di ut a una text della maschera
B...nada, niet...nella text non c'è nulla...alla faccia della
globalità ;)

 ha scritto nel messaggio 
news:1176818818.2...@l77g2000hsb.googlegroups.com...
In un modulo nuovo mi dichiaro una variabile globale public ut as
string e in una maschera A gli assegno il valore ut = "pincopalla".
Ora se passo in una maschera B e nell'evento apertura scrivo un
controllo tipo if ut = "pippopalla" then....non mi esegue l'if! Ma
perchč ;-( secondo voi dove sbaglio?
Come hai dichiarato la variabile?
Dovrebbe essere cosě:
In un modulo pubblico, non in un modulo di maschera,
Global UT As String
E' cosě?
Ciao, Carlo 


No non è possibile, di certo sei tu a sbagliare.
In primis il Debug non si esegue con TextBox disseminate, ma esiste il
Debug.Print
e la finestra immediata, o meglio ancora il PassoPasso con l'uso dei
BreackPoint e F8, e l'ausilio della finestra delle variabili
Locali....!
Altra cosa devi essere certo della valorizzazione, anche se nel tuo
caso non ne vedo l'esigenza....!
La Funzione OpenForm consente di usare il Parametro Args per passare
un "Parametro"... hai pensato di usare quello...?
Lo recuperi nella Form aperta tramite la proprietà OpenArgs.
@Alex

 Locali....!
Non ho mai fatto il debug...adesso ci ho provato ma non so se ho fatto
le cose correttamente. Ho impostato un breakpoint alla fine dell'if e
sono andato a guardare nella finestra delle variabili locali la text
che si prende il valore della variabile globale. Il valore della text
è nullo. (inoltre non ho capito come si fa a impostare il debug passo
dopo passo).
Non ho capito perchè la maschera B non riconosce il valore della
variabile globale. Avessi sbagliato a dichiararla? Nel modulo libero
ho scritto:
Option Compare Database
Global ut As String
e basta, credo che vada bene così.


Io non uso il Global ma preferisco il Public, ad essere sincero
definisco delle Public Property di progetto, è sintatticamente più
corretto anche se è più un sofismo...
Option Compare Database
Option Explicit
Public ut as String
Innanzitutto essendo una stringa non è possibile che restituisca NULL
pertanto devi aver guardato male, al massimo potrebbe restituire "" o
vbNullString.
Ma sei sicuro che ti serva...? Hai letto quello che ti ho
scritto...??????
Il Passo Passo si esegue con F8 dal momento del BreakPoint.
Un buon Libro di Access ti eviterebbe Lacune di questo tipo che serve
colmare per essere autonomi.
@Alex

 colmare per essere autonomi.
Lo so, devo provvedere...

 colmare per essere autonomi.
Lo so, devo provvedere...
Io utilizzo una cosa simile e a me funziona. La variabile Public va definita 
perň in un modulo standard e non nel modulo abbinato alla maschera.
saluti 
thomas.az

 ha scritto nel messaggio 
news:1176818818.2...@l77g2000hsb.googlegroups.com...

.................................
Vorrei ricordarti che per valorizzare una variabile devi seguire delle 
regole.
Per esempio se in una maschera, in un controllo scrivi come origine = UT, la 
variabile non verrà valorizzata, nemmeno se nel controllo, a maschera 
aperta, scrivessi "pincopallo" o qualsiasi altra cosa...
Per verificare se hai fatto bene fai questo piccolo esperimento:
in una maschera inserisci un pulsante, sull'evento click scrivi queste due 
righe di codice:
UT = "pincopallo"
Msgbox UT
Apri la maschera e fai click sul pulsante. Cosa leggi?
Se leggi "pincopallo" vuol dire che la variabile è stata valorizzata 
correttamente e se è stata dichiarata pubblica e in un modulo pubblico, da 
questo momento, la potrà leggere tutto il db.
Ricorda inoltre che se volessi attribuire ad un'altra variabile il valore di 
UT, questa deve essere dello stesso tipo di dati.
Un esempio serve di più:
Dim MiaVariabile as integer
If UT = "pincopallo" Then
MiaVariabile = UT
end if
Questo codice darebbe un errore perchè MiaVariabile è un integer, mentre UT 
è una variabile stringa.
Ciao, Carlo