Newsgroup: it.comp.appl.access
Titolo: Richiesta di conferma in seguito ad una modifica

    Agli esperti di Access...
Sto lavorando in una maschera di inserimento dati, nel momento in cui vado a
modificare un campo già esistente (già stato inserito precedentemente)
vorrei che mi si presentasse una finestra, la quale mi chiedesse se sono
sicuro della modifica che voglio fare, se rispondo di Sì proseguo al campo
sucessivo e accetta la modifica, mentre se dico di No mi ritorna alla
versione precende del record prima dell'aggiornamento.
Ho provato con la funzione sottostante, però non riesco a trovare il sistema
di tornare alla versione precedente del campo prima dell'aggiornamento.
    Dim strconf As String
     strconf = "Sei sicuro del dato modificato?'" & Me![Codice Articolo] &
vbCrLf & "è Ok"
     If MsgBox(strconf, vbYesNo) = vbNo Then
    Cancel = True
     Else
        Exit Sub
    End If
        End Sub
Grazie in anticipo a chi mi darà dei suggerimenti
Alessio

 wrote in message
8i8775$e5d$1...@fe1.cs.interbusiness.it...

Non funziona anche se è praticamente simile all'esempio che c'è sull'Help a
riguardo di Cancel. Forse c'è da settare qualche altra proprietà. boh?
Non vorrei che la procedura preveda che, dopo aver premuto il pulsante NO
del messaggio di avviso, si debba ripristinare manualmente il contenuto del
campo e questa volta selezionare il pulsante SI del messaggio di avviso.
Comunque se ti può servire, nel caso che tu scrivi il tuo codice VBA a
fronte dell'evento "Prima di aggiornare" della maschera anziché a quello del
campo, e sostituisci
    Cancel = True
con
    Me![NomeCampo] = Me![NomeCampo].Oldvalue
hai l'effetto desiderato
Roberto

 Roberto
Attenzione!
Cancel = True
serve ad annullare l'evento e non a ripristinare il valore precedente.
Per ripristinare il valore precedente ti basta inserire
me.nomecontrollo.Undo
-- 
Federico
--------------------------------------
Sito Comune di it.comp.appl.access
http://members.xoom.it/it_db_access
mailto:
it_db_...@usa.net
--------------------------------------
Tutte le richieste che mi arrivano
in privato, vengono cestinate.
--------------------------------------
Rimuovi paperino. per e-mail
--------------------------------------

 Alessio
nell'evento BeforeUpdate del controllo:
Dim strconf As String
strconf = "Sei sicuro del dato modificato?'" & Me![Codice Articolo] & vbCrLf &
"è Ok"
If MsgBox(strconf, vbYesNo) = vbNo Then
  Cancel = True
  Me![Codice Articolo].Undo
End If
Attenzione: le modifiche vengono realmente salvate solo quando passi ad un
altro record o chiudi la form.


 Federico
[CUT]
GRANDE!!!!!

 Federico
[CUT]
Troppo giusto!!!
Grazie!
Roberto

 GRANDE!!!!!
Ci incrociamo :-))
Potresti decidere di inserire una terza opzione:
non salvare, ma non ripristinare il valore originale (Annulla)
retVal = MsgBox(strconf, vbYesNoCancel)
Select Case retVal
 Case vbNo
  'annulla l'evento-ripristina il valore
  Cancel = True
  Me![Codice Articolo].Undo
 Case vbCancel
  'annulla l'evento-non salva-non ripristina
  Cancel = True
 Case vbYes 'non necessario
  'salva
End Select


         End Sub
Se devi ripristinare ill Record, è sufficiente inserire al posto di
Cancel=True, SendKeys "{ESC}"
Se devi ripristinare il solo campo (supponiamo visualizzato in una casella
di testo TxtCodice) allora creati una variabile temporanea (Dim sTemp$)
nella sezione Generale-Dichiarazioni del modulo.
Quindi nell'evento 'Su Attivato' della casella di testo, inserisci
l'istruzione:
sTemp = IIf(IsNull([TxtCodice]), "", [TxtCodice])
Ed infine al posto del solito 'Cancel=True' inserisci l'istruzione:
[TxtTesto] = sTemp
Ciao,
Paolo





[CUT]
Funziona solamente a fronte dell'evento "Prima di aggiornare" della
maschera, ma non funziona se lo metti a fronte dell'evento "Prima di
aggiornare" del controllo Cliente: dà un errore che dice che non può essere
restituito l' OldValue di un controllo che non è stato aggiornato.
Vale quanto ha scritto Federico con i suoi messaggi del 14/06/00 delle ore
19:57 e delle ore 20:22.
Roberto