Newsgroup: it.comp.appl.access
Titolo: Messaggio che mi chiede se voglio salvare i dati …..

Dalle FAQ, ho usato il codice che fa apparire un messaggio, che mi
chiede se voglio salvare i dati
appena modificati in una maschera.
Tutto ok
Solo che ora volevo ricostruire una maschera simile con i tre pulsanti
di scelta.
Ho provato, ma mentre con il codice da faq, quando modifico i dati ad
esempio nel record n.5 di maschera_base,
passo al record successivo, si apre la msgbox che mi consente o di
salvare la modifica, o di ritornare a maschera _base, o di annullare le
modifiche fatte.
Nel momento in cui si apre la msgbox, dietro alla stessa continuo a
vedere masch_base che rimane sul record 5 e solo se clicco su: Si
Accetto Modifiche, la maschera si posiziona sul record 6.
Invece, se creo una mia maschera (simile) e sull’evento
Form_BeforeUpdate di masch_base la apro, praticamente il record di
maschera base, passa subito a quello successivo, ed č chiaro che a
questo punto non posso, o meglio non so piů, come fare a ricreare i 3
pulsanti con le rispettive azioni simili a quelli della msgbox.
Eppure il codice che apre la msg e la maschera_simile č sempre dentro lo
stesso evento Form_BeforeUpdate di masch_base; la msgbox perň intercetta
l’evento, mentre la maschera_simile no.
Quindi devo risolvere sia il problema di intercettazione (come fa la
msgbox) e sia poi
il codice da inserire dentro i 3 pulsanti.
Riporto l’oggetto e il codice della FAQ
E' possibile far apparire un messaggio che mi chiede se voglio salvare i
dati appena modificati in una maschera? Autore: Federico Luciani [
fluciani @
libero.it
] Ogni volta che Access cerca di salvare un record,
viene generato l'evento BeforeUpdate (Prima di aggiornare) prima che il
record venga realmente salvato.
Quindi se vogliamo annullare l'aggiornamento del record, ci basta
intercettare questo evento.
Private Sub Form_BeforeUpdate(CANCEL As Integer)
Dim retValue As Integer
   Dim strTtl As String
   Dim strMsg As String
   strTtl = "Salvare il record?"
   strMsg = "I dati sono cambiati." & vbCrLf & _
            "Vuoi salvare le modifiche?"
   retValue = MsgBox(strMsg, vbQuestion + vbYesNoCancel, strTtl)
   Select Case retValue
       Case vbYes
           'non fare nulla
       Case vbNo
           DoCmd.RunCommand acCmdUndo
       Case vbCancel
           CANCEL = True
   End Select
End Sub
Ringrazio in anticipo

 [cut]
diro' un'ovvieta'. Ma la maschera che hai costruito e' di tipo modale?
a.cara

> diro' un'ovvieta'. Ma la maschera che hai costruito e' di tipo modale?
che cosa intendi per tipo modale.
comunque più avanti ho ricevuto alcuni suggerimenti solo
che mi rimane ancora il problema del codice dei pulsanti
Il post è Simulare una msgbox con una mia maschera  Di sab ore 17,00
mi si consigliava di vedere sulla guida l'argomento popup e ho risolto
la primissima parte del problema con acDialog etc...
(funziona se in apertura maschera uso il Docmd.OpenForm … e acDialog)
Rimane ora il problema del codice da assegnare ai pulsanti.
1)pulsante si: accetta modifiche al record
-in questo caso la msgbox si chiude e la masch_base va al record successivo
nella msgbox è risolto con:
            Case vbYes              'non fare nulla
su click del mio pulsante
            DoCmd.Close acForm, "Maschera_che_simula_msg"
(n.b. da codice diretto non funziona, da macro invece si.
Quindi problema del 1° pulsante l’ho superato solo se su click inserisco una
macro
chiudi maschera )
2) puls. no: non accetta modifiche
e si ritorna a masch_base con annullate le modifiche inserite
nella msgbox risolto con:
Case vbNo
           DoCmd.RunCommand acCmdUndo
nel mio pulsante
[Forms]![masch_base].Undo
 DoCmd.Close
solo che mi dà il seguente errore
L’espressione su click immessa come impostazione della proprietà di evento
ha
provocato il seguente
errore: La dichiarazione della routine di eventi non corrisponde alla
descrizione dell’evento con lo stesso
nome.
*L’espressione non corrisponde al nome di una macro, di una funzione
definita
dall’utente oppure a
[Routine Evento].
*Si è verificato un errore durante la valutazione di una funzione, di un
evento
o di una macro.
praticamente lo stesso errore che dava per il primo pulsante solo
che ora non so come fare un macro che svolga tale procedura
3) puls. annulla :
nessuna variazione, si ritorna alla masch_base, le modifiche inserite sono
rimaste, il record è lo stesso e quindi posso continuare a modificare.
nella msgbox risolto con:
Case vbCancel
           CANCEL = True
nel mio codice del pulsante ho messo
Private Sub Comando3_Click()
''CANCEL = True
''DoCmd.Close
End Sub
solo che dà lo stesso errore di sopra
Riporto nuovamente il codic della faq
Quindi se vogliamo annullare l'aggiornamento del record, ci basta
intercettare questo evento.
Private Sub Form_BeforeUpdate(CANCEL As Integer)
Dim retValue As Integer
   Dim strTtl As String
   Dim strMsg As String
   strTtl = "Salvare il record?"
   strMsg = "I dati sono cambiati." & vbCrLf & _
            "Vuoi salvare le modifiche?"
   retValue = MsgBox(strMsg, vbQuestion + vbYesNoCancel, strTtl)
   Select Case retValue
       Case vbYes
           'non fare nulla
       Case vbNo
           DoCmd.RunCommand acCmdUndo
       Case vbCancel
           CANCEL = True
   End Select
End Sub
Ringrazio di nuovo