Newsgroup: it.comp.appl.access
Titolo: Variabile in un modulo.........

Un salutone a tutti!
Ho un problemino che non riesco a venirne a capo:
in una maschera ho un controllo dove viene aggiornato un valore da un 
pulsante di comando.
Il pulsante di comando, ad esempio, contiene:
me.controllo.defaultvalue=me.controllo2.value
modulo1
il modulo1 contiene una condizione dove verifica se in un altro controllo 
della maschera un valore è inferiore o maggiore ad X;
il risultato è nullo ma se elimino la prima riga nel pulsante prima che 
avvii il modulo1, va tutto bene.
Ho potuto notare che è come se qualsiasi valore venga annullato subito dopo 
la prima riga.
Ho fatto la prova a creare due pulsanti:
il primo contiene la prima riga e il secondo contiene la chiamata alla 
funione modulo1 e tutto funziona.
Perchè non posso indicare con un solo pulsante tutto cio'? mi manca qualche 
fondamentale istruzione nella funzione del modulo1?
ho provato a dichiarare e dimensionare una variabile ma niente da fare, mi 
restituisce sempre valore nullo (lo verifico con un msgbox per controllare 
che numero ottengo).
Spero sia stato abbastanza chiaro.
Marco.


Se alla funzione "modulo1" hai indicato anche i parametri che conterranno i valori da passargli, quando la invochi glieli devi dare 
altrimenti non arrivano (mammamiacheintreccio!).
Es. di funzione
Function Modulo(nomeParametro as String) as booeano
if nomeParamentro = "Sergio" then
    Modulo = true
else
    Modulo = false
end if
End Function
la userai cosě:
If Modulo("Tizio") = False Then
    Msgbox "Ma tu... Chi siii?? Che vvoi??"
else
    Msgbox "Ti riconosco, mascherina..."
end if
Ciao.
-- 
Sergio MAZZA 

 Sergio MAZZA
Grazie della tempestiva risposta. Effettivamente hai ragione per " 
l'intreccio " e complimenti per la metafora partenopea :-)
Allora ho pensato di prendere la routine sull'evento di clic di un pulsante 
e spostarla in un modulo perchè questa "routine" deve essere la stessa per 
ben 8 o più pulsanti. Ogni pulsante rispettivamente dovranno aggiornare un 
controllo non associato il cui valore, a seconda del pulsante premuto, darà 
un valore da 1 a 8 - pulsante 1 - valore del controllo=1 e così via e, 
quindi ho pensato di creare un modulo anzichè mettere, per ogni pulsante la 
routine che viene subito dopo eseguita con la funzione chiamata "AggServ" di 
seguito riportata:
Public Function AggServ()
If Form_servizi.contaid <= 1 Then
GoTo PrimoServizio
Else
servnorm:
DoCmd.SetWarnings False
DoCmd.OpenQuery "query1"
Form_servizi.servizio.Requery
GoTo FINE
PrimoServizio:
DoCmd.SetWarnings False
DoCmd.OpenQuery "PrimoServizio"
Form_servizi.servizio.Requery
FINE:
End If
DoCmd.SetWarnings True
Form_servizi.data.SetFocus
End Function
Sicuramente avrò usato un sistema "maccheronico" (è la prima volta che 
faccio uso di moudli) e forse qualcosa andrebbe "aggiustato".
Grazie dell'attenzione.
Marco.

-----[cut]
Allora, caro Sergio, il problema non è nel modulo ma nella maschera e, 
precisamente, nel pulsante:
Private Sub Comando55_Click()
Me.UFF.DefaultValue = 2
'AggServ
MsgBox Me.contaid
End Sub
msgbox me.contaid mi restituisce un valore nullo (che dovrebbe essere il 
conteggio dell'id in un controllo non associato);
se tolgo l'istruzione Me.UFF.DefaultValue = 2, il msgbox mi dà il corretto 
responso, a prescindere di invocare la funzione AggServ o meno.
Cosa c'è che non va?
Grazie dell'attenzione.
Marco. 

 ha scritto nel messaggio news:436ce6ab$0$29604$4faf...@reader3.news.tin.it...

Come primo inizio non c'è male e hai detto bene che è possibile dargli ancora una limata; più che altro per rendere onore al fatto 
che il codice di una funzione dovrebbe essere libero da qualsiasi riferimento fisso (leggi: nomi form/controlli/...)...
Ciao.
-- 
Sergio MAZZA 

 ha scritto nel messaggio news:436cf935$0$1484$4faf...@reader2.news.tin.it...

Non so'.
Per esempio, a che ti serve impostare il DefaultValue di UFF?
Se contaid ti ritorna un valore nullo un motivo ci sarà ma io non sapendo cosa contiene contaid non posso fare nulla (se è li il 
problema)...
Ciao.
-- 
Sergio MAZZA 

Grazie Sergio,
ho risolto semplicemente creando un altro controllo non associato dove mi 
"memorizza" il valore del controllo "contaid" origine del 
controllo=(Conteggio(ID))
Su evento dopo aggiornamento dell'inserimento del controllo Data, della 
maschera:
Me.NuovoControlloNonAssociato.DefaultValue = Me.contaid
Cosě funziona tutto.
Mah, aveva bisogna di un altro controllo "d'appoggio" per "congelare" il 
valore, perchč sembra che andasse perso appena si preme un pulsante. INfatti 
quando si visualizzava il msgbox (per monitorare il valore), il controllo 
interessato risultato vuoto !?!?
Grazie ancora dell'attenzione.
Marco.