Newsgroup: it.comp.appl.access
Titolo: Conferma prima della modifica

Salve a tutti,
ho realizzato un database e tutto funziona bene, l'unico problema è che
quando modifico un dato da una maschera, la modifica si applica
automaticamente; se qualcuno accidentalmente cambia dei dati, questi vengono
modificati quasi senza accorgersene.
Pensavo di fare delle maschere in sola lettura con un pulsante che abiliti
la modifica, oppure lasciarle così ma che alla fine mi chieda di salvare i
cambiamenti.
In entrambi i casi, come lo devo fare?
Grazie, Filippo.

 ha scritto nel messaggio
news:3f1f7...@news.dada.it...

Prova con questo
Function SaveRecord(X As String)
Dim frm As Form
Dim Cancel
Set frm = Forms(X)
If frm.Dirty = True Then
        Dim strmessage As String, strtitle As String
        Dim lResponse As Long
        strmessage = "Salvare le modifiche del record in corso?"
        strtitle = "Tuo titolo"
        lResponse = MsgBox(strmessage, vbYesNo + vbQuestion, strtitle)
        If lResponse = vbNo Then
            Cancel = True
            frm.Undo
        End If
    End If
End Function
Sul pulsante di chiusura della form prima di chiuderla prova a richiamare
tale funzione
Call SaveRecord("TuaMaschera")
Saluti
Alex De Rossi

"Alex De Rossi" <omis...@SPAMlibero.it> ha scritto nel messaggio
news:lFLTa.199277$lK4.5...@twister1.libero.it...

Ti ringrazio per la risposta, non ho capito però dove devo inserire questo
codice, nel corpo della maschera? e devo inserire dei miei riferimenti ?
Ti ringrazio ancora, Filippo.


La funzione la puoi sistemare in un modulo e richiamarla in qualsiasi parte
del Db
Vai su moduli -- Nuovo modulo copia e incolla e salvi il modulo
per richiamare la funzione come ti ho detto prima
call SaveRecord("Nomedella maschera")
Io la richiamo dal pulsante di chiusura della form. quindi:
Private Sub CmdCHIUDI_Click()
On Error Resume Next
Call Record("NomeMashera")
    DoCmd.Close
End Sub

 ha scritto nel messaggio
news:3f1f7...@news.dada.it...

Premetto che non sono molto esperto.
Comunque io utilizzo il Dirty per vedere se qualcosa è stato modificato, il
OldValue per rimetterla a posto
Mi spiego
Sul Click del tasto chiudi:
Dim Risposta As Integer
CtlC As Control
If Me.Dirty = True Then
  Risposta=MsgBox("C'è una modifica, laconfermi",vbYesNo)
   If Risposta = vbNo Then
    CICLO SU TUTTI I CAMPI
      For Each CtlC in Me Controls
        If CtlC= acTextBox Or CtlC = acComboBox Then
            CtlC.Value = CtlC.OldValue
        End If
     Next CtlC
  Else
    DoCmd.Close
  End If
End if

 wrote in message 3f1f7...@news.dada.it...

Vai sul Sito Comune (link qui sotto) e nella Sezione Forms leggi la FAQ di
Federico Luciani intitolata "Confermare il salvataggio dei dati".
--
Roberto
---------------------------------------------
il Sito Comune di it.comp.appl.access:
http://www.sitocomune.com
---------------------------------------------

 ha scritto nel messaggio
news:3f1f7...@news.dada.it...

Se vuoi intercettare ogni singolo cambiamento è una cosa un pò
ardua, se invece ti basta rilevare prima di effettuare il salvataggio
l'eventuale manomissione o modifica puoi intercettare l'Evento
OnDirty, oppure su BeforeUpdate la proprietà Dirty e forzare
Me.Undo e Cancel=True
@Alex.