Una famiglia di sistemi di gestione per database relazionali di Microsoft progettati per semplificare l'uso.
Me.undo serve per annullare tutti i controlli della maschera mentre il cancel si riferisce al controllo dell'evento
Mimmo
Questo browser non è più supportato.
Esegui l'aggiornamento a Microsoft Edge per sfruttare i vantaggi di funzionalità più recenti, aggiornamenti della sicurezza e supporto tecnico.
Win 10
Access 2007
Buongiorno,
sto cercando di risolvere questo quesito:
in una maschera ho:
Testo1
CasellaControllo2
e la casellacontrollo3
vorrei che nel momento che seleziono la casellacontrollo3 questa azzera il testo1 e la casellacontrollo2
per farlo ho proceduto in questo modo:
Private Sub CasellaControllo3_BefoureUpdate(Cancel As Integer)
If MsgBox ("Sei sicuro? tutti i dati verranno eliminati!", vbQuestion + vbYesNo + vbDefoultButton2, "Azzeramento dati") = vbNo Then
me.Undo
End If
me.Testo1 = Null
me.CasellaControllo2 = Null
End Sub
tutto bello peccato che se dico di no mi azzera ugualmente i campi :(
dove sbaglio?
Ivan
Una famiglia di sistemi di gestione per database relazionali di Microsoft progettati per semplificare l'uso.
Domanda bloccata. Questa domanda è stata eseguita dalla community del supporto tecnico Microsoft. È possibile votare se è utile, ma non è possibile aggiungere commenti o risposte o seguire la domanda.
Me.undo serve per annullare tutti i controlli della maschera mentre il cancel si riferisce al controllo dell'evento
Mimmo
perchè così dici:
se la risposta è NO allora Cancel = True (annulla l'operazione)
altrimenti (Else)
procedi con l'azzeramento dei campi = Null
però adesso mi devi spiegare perchè hai sostituito il mio Me.Undo con Cancel = True
:)
Ivan
Ciao ora, al pc ,è tutto più semplice.
tu sei nell'evento BefoureUpdate del pulsante3.
Ei hai il seguente codice:
If MsgBox ("Confermi il salvataggio?", vbQuestion + vbYesNo + vbDefoultButton2, "SchedaInformazioni") = vbNo Then
me.Undo
End If
End Sub
immagino che avendo una risposta vbNo vuoi innanzi tutto annullare la modifica del pulsante3 allora devi usare solo
Cancel=True
infatti la sub prevede: Private Sub CasellaControllo3_BefoureUpdate(Cancel As Integer)
Inoltre, nel codice che hai postato all'inizio, tu hai
Private Sub CasellaControllo3_BefoureUpdate(Cancel As Integer)
If MsgBox ("Sei sicuro? tutti i dati verranno eliminati!", vbQuestion + vbYesNo + vbDefoultButton2, "Azzeramento dati") = vbNo Then
me.Undo
End If
me.Testo1 = Null
me.CasellaControllo2 = Null
End Sub
che dopo il me.Undo End If prosegue con le istruzioni che impostano i Null
allora,
o dopo la Me.Undo imposti una Exit sub per non proseguire
o modifichi la If in questo modo
If MsgBox ("Sei sicuro? tutti i dati verranno eliminati!", vbQuestion + vbYesNo + vbDefoultButton2, "Azzeramento dati") = vbNo Then
me.Undo
Else
me.Testo1 = Null
me.CasellaControllo2 = Null
End If
End Sub
Riepilogando, prova con il seguente codice:
Private Sub CasellaControllo3_BefoureUpdate(Cancel As Integer)
If MsgBox ("Sei sicuro? tutti i dati verranno eliminati!", vbQuestion + vbYesNo + vbDefoultButton2, "Azzeramento dati") = vbNo Then
Cancel = True
Else
me.Testo1 = Null
me.CasellaControllo2 = Null
End If
End Sub
Ciao Mimmo
grande Mimmo :)
sapevo che arrivavi in mio soccorso ma ... l'arabo non l'ho mai capito :))))
Me.Undo l'ho usato per evitare una manipolazione dei dati errata, come richiesta se si volevano apportare i cambiamenti prima di chiudere la maschera e pensavo che andava bene anche qui per non procedere con la cancellazione dei dati su NO.
andiamo per gradi:
If MsgBox ("Confermi il salvataggio?", vbQuestion + vbYesNo + vbDefoultButton2, "SchedaInformazioni") = vbNo Then
me.Undo
End If
End Sub
questa era la stringa che uso per confermare o meno la modifica apportata alla maschera.
allora ho pensato che riadattandola potesse andare bene anche per azzerare alcuni campi maschera:
Private Sub CasellaControllo3_BefoureUpdate(Cancel As Integer)
If MsgBox ("Sei sicuro? tutti i dati verranno eliminati!", vbQuestion + vbYesNo + vbDefoultButton2, "Azzeramento dati") = vbNo Then
me.Undo
End If
End Sub
così cosa fa? apporta le modifiche oppure no.
come faccio allora a dirgli:
NO non azzerare i campi?
= vbNo Then
Me.Undo
dovrebbe essere corretto.
ma se invece è SI come fare a fargli azzerare i campi?
Ivan
Ciao,
Il problema è il comando Me.Undo
Ed inoltre devi impostare una Exit sub altrimenti cmq ripulisce i campi.
Mimmo