Newsgroup: it.comp.appl.access
Titolo: errore su scaricamento di una maschera

Buon giorno a tutto il n.g.
problema
Su scaricamento di una maschera vorrei che la maschera non si chiuda se le 
mie condizioni non fossero OK
Le condizioni sono Se campo1 è superiore di zero , il campo2 deve avere un 
valore di testo.
Ho scritto su scaricamento il codice che segue:
....
if campo1>0 and campo2 = "" then
Docmd. CancelEvent
Msgbox " devi darmi un vapore nel campo2"
else
end if
end Sub
e non funziona cosa sbaglio.
ringraziamenti già da subito
saluti
giovanni

 e non funziona cosa sbaglio.
apporta le modfiche e prova
ciao
Daniele 

 e non funziona cosa sbaglio.
apporta le modfiche e prova
ciao
Daniele
Ciao Daniele
grazie per l'aiuto ma anche cosě non funziona.
cioč: uscendo dalla maschera mi da sempre il mio msgbox indipendentemente se 
il campo2 č vuoto o no .
saluti giovanni

 indipendentemente se il campo2 č vuoto o no .
Per controllare se campo2 (o controllo2) č vuoto, usa:
And IsNull(Me!Campo2) Then
Se non riesci, incolla il tuo vero codice.
-- 
Ciao
Karl
*********
Access FAQ:  
http://www.donkarl.com/it
 

"Karl Donaubauer"  ha scritto nel messaggio 
news:8mmu5s...@mid.individual.net...


And IsNull(Me!Campo2) Then


Ciao Karl
come sempre bravissimo
saluti
giovanni 


ciao Karl et NG
Ho ancora un piccolo problema!!!
grazie al tuo aiuto ed al tuo sito ho creato una procedura nuova per far si
che la maschera in questione non si chiuda se
le mie indicazioni non siano OK
Ecco la procedura:
Private Sub Form_Close()
DoCmd.SetWarnings False
DoCmd.OpenQuery "aggiorna festività"
DoCmd.SetWarnings True
On Error GoTo ErrNoData
If IsNull(Me!Testo108) And Testo106 > 0 Then
MsgBox "Siccome c`é un valore positivo nel campo altro mi devi dare delle
indicazioni"
Cancel = True
Else
End If
ErrNoData:
If Err.Number = 2501 Then Resume Next 'oppure Exit Sub
End Sub
purtroppo la procedura in questione non funziona!!!
La mia logica è alla fine ... non capisco dove sbaglio.
ringraziamenti
saluti
giovanni

 giovanni
Non puoi annullare l'evento Close, manca del parametro "Cancel" 
Dall'Help:
"L'evento Scaricamento si verifica prima dell'evento Chiusura. È possibile
annullare l'evento Scaricamento, ma non l'evento Chiusura"
--
sv
-- 
questo articolo e` stato inviato via web dal servizio gratuito 
http://www.newsland.it/news
 segnala gli abusi ad 
ab...@newsland.it

 ha scritto nel 
messaggio news:4d078919$0$4018$5402...@news.sunrise.ch...


ad usare l'evento Close
prova a mettere il codice su Unload (scaricamento)
ciao
Daniele 

 giovanni


--
sv
-- 

Vi ringrazio molto per le vostre indicazioni.
ho modificato il tutto ed ho messo la medesima procedura su  scaricamento 
della maschera
purtroppo  mi crea ancora l'erroe di run-Time "2501" descritto nel sito di 
Karl
cosa sbaglio!!!
grazie e saluti
giovanni

 sv
Non capisco la gestione dell'errore 2501. Se non sbaglio quello serve ad
intercettare l'apertura di un report vuoto. Qui si parla di bloccare la
chiusura della maschera, se Testo108 è nullo quando Testo106 è >0.
.
.
Nella tua maschera se effetivamente hai due controlli Testo106 e Testo108
il seguente codice blocca la chiusura della stessa al verificarsi delle
condizioni dette prima:
If IsNull(Me.Testo108) And Me.Testo106 > 0 Then
MsgBox "Siccome ..."
Cancel = True
Else
End If
--


 sv


--
sv
OK al verificarsi delle condizioni descritte,   la maschera non si chiude ma 
mi da l'errore
Errore di Run-Time "2501"
L'azione Close è stata annulata
Fine    Debug
Io vorrei togliere questo messaggio
saluti
giovanni

 giovanni
Se devi verificare Testo106 e Testo108, chiaramente la If deve essere
posta all'inizio del tuo codice, poi verrà la OpenQuery.
Cosa fa la "aggiorna festività"? L'hai testata. Sicuramente è lei che va
in errore.


 Fine    Debug
la questione è come faccio a interfacciarlo ed a annularlo
saluti
giovanni

 giovanni
Ma il codice di cui stiamo parlando deve essere inserito "Su Scaricamento"
Per caso lanci un'anteprima report o apri altra maschera "Su Chiusura"?
Insomma c'è del codice su qualche altro evento?
Comunque prova in questo modo:
On Error GoTo ErrNoData
.
.
'qui metti il codice
.
.
Exit_ErrNoData:
    Exit Sub
ErrNoData:
    If Err <> 2501 Then        'Escludi il 2501
       MsgBox Err.Description
    End If
    Resume Exit_ErrNoData


cut--------
Ma il codice di cui stiamo parlando deve essere inserito "Su Scaricamento"
Per caso lanci un'anteprima report o apri altra maschera "Su Chiusura"?
Insomma c'è del codice su qualche altro evento?
Comunque prova in questo modo:
On Error GoTo ErrNoData
.
.
'qui metti il codice
.
.
Exit_ErrNoData:
    Exit Sub
ErrNoData:
    If Err <> 2501 Then        'Escludi il 2501
       MsgBox Err.Description
    End If
    Resume Exit_ErrNoData
--
sv
Grazie SV per la tua pazienza.
Ho rifatto la procedura come mi hai detto tu eccola:
Private Sub Form_Unload(Cancel As Integer)
On Error GoTo ErrNoData
If IsNull(Me!Testo108) And Testo106 > 0 Then
MsgBox "............ Siccome c`é un valore nel campo ALTRO mi devi scrivere 
il perchè! ............"
Cancel = True
exit_ErrNoData:
Exit Sub
ErrNoData:
If Err <> 2501 Then
MsgBox Err.Description
End If
Resume exit_ErrNoData
End If
End Sub
L'errore di run-time "2501"
c'è sempre.
io desisto e lo lascio così.
saluti
giovanni 

 c'è sempre.

Ma così come lo scrivi è errato.
Correggi:
Private Sub Form_Unload(Cancel As Integer)
 On Error GoTo ErrNoData
If IsNull(Me!Testo108) And Testo106 > 0 Then
 MsgBox "............ Siccome c`é un valore nel campo ALTRO mi devi
scrivere 
 il perchè! ............"
 Cancel = True
Exit Sub
END IF           'Devi chiudere If IsNull
 Exit_ErrNoData:
 Exit Sub
 ErrNoData:
 If Err <> 2501 Then
 MsgBox Err.Description
 End If
 Resume exit_ErrNoData
 End Sub


 giovanni
Ma cos� come lo scrivi � errato.
Correggi:
Private Sub Form_Unload(Cancel As Integer)
On Error GoTo ErrNoData
If IsNull(Me!Testo108) And Testo106 > 0 Then
MsgBox "............ Siccome c`� un valore nel campo ALTRO mi devi
scrivere
il perch�! ............"
Cancel = True
Exit Sub
END IF           'Devi chiudere If IsNull
Exit_ErrNoData:
Exit Sub
ErrNoData:
If Err <> 2501 Then
MsgBox Err.Description
End If
Resume exit_ErrNoData
End Sub
--
sv
Che pazienza sv!!!
scusami ero eventualmente sconcentrato.
ho ripreso il tuo codice eccolo:
Private Sub Form_Unload(Cancel As Integer)
On Error GoTo ErrNoData
If IsNull(Me!Testo108) And Testo106 > 0 Then
MsgBox "............ Siccome c`� un valore nel campo ALTRO mi devi scrivere 
il perch�! ............"
Cancel = True
Exit Sub
End If
Exit_ErrNoData:
Exit Sub
ErrNoData:
If Err <> 2501 Then
MsgBox Err.Description
End If
Resume Exit_ErrNoData
End Sub
il risultato � rimasto come prima.
Ho provato a modificare la linea If err<>2501 then con
if err = 2501 then
medesimo risultato.
Ma Ma
ti ringrazio
saluti
giovanni

 giovanni
Ti avevo chiesto nei post precedenti se c'è del codice sull'evento CLOSE.
In pratica quando chiudi questa benedetta maschera ci sono automatismi che
aprono report, form o fanno altre azioni?
Prova inoltre a importare tutto in un nuovo database.


 Prova inoltre a importare tutto in un nuovo database.
Ciao Salvino,
questa mattina ha anche postato la domanda con il codice errato
in un NG tedesco. Ho risposto con una correzione del codice
e la domanda come chiude la maschera. Il thread qui è troppo
lungo con troppi citati inutili per controllare se avete già discusso
questo aspetto. ;-)
Se p.e. tenta di chiudere la maschera con un pulsante e il metodo
DoCmd.Close... l'errore 2501 viene da questo metodo e
dev'essere gestito, cioè ignorato, nella medesima sub.
-- 
Ciao
Karl
*********
Access FAQ: 
www.donkarl.com/it
 

 Ciao Salvino,


Richiesto e controrichiesto. Non ho avuto mai risposta..


 dev'essere gestito, cioè ignorato, nella medesima sub.
Richiesto e controrichiesto. Non ho avuto mai risposta..
Grazie a Salvino e Karl questa settimana ho imparato tante cose ed oltre a 
questo ho anche risolto il mio problema.
Infatti l'errore 2501 era da interfacciare sul tasto di chiusura Docmd.Close
Sono consapevole e vi ringrazio ancora per la pazienza che avete avuto nei 
miei riguardi.
La causa della mia incoerenza era sicuramente dovuta a due fattori:
1 la mia ignoranza in materia e secondo al fatto che mia mamma stava quasi 
per morire.
Grazie a Dio adesso sta meglio.
saluto.
Giovanni

 Giovanni
Finalmente.
Auguri per la tua mamma.
