Newsgroup: it.comp.appl.access
Titolo: Variabile che si svuota dopo "cancell = true"

Ciao a tutti, ho un problema che non so come risolvere. All'apertura
di alcune maschere il valore di una variabile cambia in modo che la
query associate a queste maschere si possano filtrare con una funzione
che ha il valore di questa variabile. Se modifico i dati in queste
maschere ho associato all'evento "prima di aggiornare" una msgbox con
due pulsanti (Si, no) e associato al pulsante no c'e "cancell=true"
che pero' una volta premuto mi svuota tutte le variabili creandomi dei
problemi. E' possibile fare in modo che schiacciando il pulsante "no"
le variabili mantengano il loro valore?. Grazie in anticipo a chi
potra' darmi una mano, ciao.

Silvestro ha scritto:

Non ce l'hai "Option Explicit" in testa al modulo eh?
"Cancell" in VBA non esiste, � quello che chiude la recizione del tuo
"Giardin", semmai sar� Cancel con un L sola!
Ciao.
-Marco-
-- 
questo articolo e` stato inviato via web dal servizio gratuito 
http://www.newsland.it/news
 segnala gli abusi ad 
ab...@newsland.it

" semmai sarà Cancel con un L sola!"
semmai sarà Cancel con UNA L sola! (ora siamo pari). scherzo.... ciao
e grazie.

nula da fare..... anche mettendo "Option Explicit" in tutti i moduli
associati alle maschere la variabile si svuota, provando nella
finestra immediata mi da valore 0. Suggerimenti? ciao ciao


Dove le hai dichiarate le variabili...??
@Alex

> Dove le hai dichiarate le variabili...??
 le variabili le ho dichiarate in un modulo chiamato
"VariabiliFunzioni", sono variabili pubbliche e ripeto, tutto
funziona. il problema sorge quando nel convalidare o meno
l'inserimento di un nuovo record decido di non convalidare
l'inserimento associando a questo evento "cancel=true". la variabile
incriminata e' questa : "Public NumeroFiltroReport As Integer", la
funzione che mi permette di prendere il valore della variabile per
filtrare le query e' questa:
Public Function FiltroReport()
If NumeroFiltroReport <> 0 Then
FiltroReport = NumeroFiltroReport
End If
End Function
Function FiltroReport() è il parametro che passo alla query.
ciao

> Function FiltroReport() è il parametro che passo alla query.
opss....  FiltroReport() è il parametro che passo alla query

 wrote:

Le ipotesi imho sono 2 :
O le variabili si "perdono" quando il codice và in errore (questo è
una "normale difesa" di VBA), e l'errore non è gestito... per cui il
tuo msgbox potrebbe creare un errore (doppia L come ti ha fatto notare
Marco, a parte)... quindi và verificato..
oppure
il tuo Cancel, per il codice, potrebbe risultare come il classico
comando "ANNULLA", che ti farebbe ritornare indietro di "un passo"
rispetto a tutte le operazioni effettuata... questo sta a significare
che se la tua ultima operazione è PIPPO=2, scegliando ANNULLA
(Cancel=true), PIPPO ritornerebbe ad essere quello che era prima
(sempre che prima aveva qualche valore)... per cui, se PIPPO prima di
essere 2, era NULL, ritornerebbe ad esser NULL (e quindi a te
"sembrerebbe" esser stata persa)...
tienici aggiornati.

 finestra immediata mi da valore 0. Suggerimenti? ciao ciao
Hai delle istruzioni "On error resume next" nel codice? Se si toglile o
commentale e fai girare il programma per vedere dov'� l'errore.
Oppure metti dei punti di interruzione nel codice, esegui le sub
passo-passo con F8 e cerca di capire dopo quale istruzione le variabili
perdono i valori.


innanzitutto grazie per le risposte. provo prima a descrivere il
programma e poi entro nel dettaglio delle vostre argomentazioni.
Il mio programma è di inserimento interventi, apro la maschera di
avvio nel quale ci sono tre pulsanti che mi aprono tre diverse
maschere per la gestione di questi interventi. gli interventi sono
(esempio) "idraulici", "muratura", "elettrici". all'apertura di ogni
maschera alla variabile "NumeroFiltroReport" viene assegnato un valore
("idraulici" NumeroFiltroReport=1 ; "muratura" NumeroFiltroReport=2
ecc. ecc.) e visto che la tabella degli interventi è unica (per motivi
statistici) filtro "tutte" le query delle varie maschere e report con
questa variabile (tramite una funzione) per visualizzare "solo" i
record associati alla tipologia di intervento selezionata, e tutto
funziona a meraviglia.
Torniamo alle vostra argomentazioni
Le ipotesi imho sono 2 :
O le variabili si "perdono" quando il codice và in errore (questo è
una "normale difesa" di VBA), e l'errore non è gestito... per cui il
tuo msgbox potrebbe creare un errore (doppia L come ti ha fatto
notare
Marco, a parte)... quindi và verificato..
"
il codice della msgbox associata all'evento "prima di aggiornare" è
questo:
Dim pulsante_premuto
Private Sub Form_BeforeUpdate(Cancel As Integer)
pulsante_premuto = MsgBox("Salvare i dati?", vbYesNo + vbExclamation)
If pulsante_premuto = vbYes Then
MsgBox "Dati salvati"
End If
If pulsante_premuto = vbNo Then
Cancel = True
MsgBox "Dati annullati"
End
End If
End Sub
Non mi da nessun errore e se confermo l'inserimento il record viene
normalmente aggiunto e la variabile mantiene il suo valore.
"
oppure
il tuo Cancel, per il codice, potrebbe risultare come il classico
comando "ANNULLA", che ti farebbe ritornare indietro di "un passo"
rispetto a tutte le operazioni effettuata... questo sta a significare
che se la tua ultima operazione è PIPPO=2, scegliando ANNULLA
(Cancel=true), PIPPO ritornerebbe ad essere quello che era prima
(sempre che prima aveva qualche valore)... per cui, se PIPPO prima di
essere 2, era NULL, ritornerebbe ad esser NULL (e quindi a te
"sembrerebbe" esser stata persa)...
"
Qua non so cosa dire ... potrebbe essere. Alla variabile il valore
viene attribuito nell'evento "su apertura" della maschera.......
"
Hai delle istruzioni "On error resume next" nel codice? Se si toglile
o
commentale e fai girare il programma per vedere dov'è l'errore.
Oppure metti dei punti di interruzione nel codice, esegui le sub
passo-passo con F8 e cerca di capire dopo quale istruzione le
variabili
perdono i valori.
"
Non ho nessuna istruzione "On error resume next" nel codice. e oltre
al codice postato sopra (nel modulo associato alla maschera) ci sono
solo le istruzioni di chiusura  e altro codice che mi cambia il focus
in base agli inserimenti.....
Ciao ciao

 End
che certo svuota un gran parte delle variabili. Vedi <F1>.
--> Cancella questa riga senza sostituzione, perch� nel tuo
codice postato � inutile.
-- 
HTH
Karl
*********
Access FAQ: 
www.donkarl.com/it
 


ERRORE!!!! si scrive così...
Private Sub Form_BeforeUpdate(Cancel As Integer)
        If MsgBox("Salvare i dati?", vbYesNo, "ATTENZIONE") = 6 Then
             MsgBox "Dati salvati"
        Else
              Cancel = True
              MsgBox "Dati salvati"
        End If
End Sub

 Access FAQ:
www.donkarl.com/it
Ops... più o meno detto la stessa cosa (tu prima di me)... sorry...
it's my newsreader retard :D

 End Sub
-- 
:-))


Funzionaaaaaaaa!!!!!!!
ho cancellato "end" e ora è tutto ok, grazie tante per l'aiuto non
sarei mai arrivato da solo alla soluzione, grazie ancora a tutti e
ciao ciao

 Abbindolatore!
:)
volevo vedere se almeno questo errore lo vedeva! :D