Newsgroup: it.comp.appl.access
Titolo: Confermare il salvataggio dei dati.

Applicando ad una mia form,
la faq 3.13 del sito comune Confermare il salvataggio dei dati
a fronte dell'evento prima di aggiornare.
Però succede una cosa seccante, ogni volta che voglio scorrere i dati,
anche quando non li modifico, mi chiede se voglio salvare le modifiche,
questo me lo fà ad ogni record.
Allego il codeice che tutti voi ben conoscete.
-----------------------------------------------------
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-------------------------Napoleone 

 ha scritto nel messaggio
news:QJ7he.6709$795.1...@twister1.libero.it...

Ciao Napoleone,
metti  questo test prima della MsgBox:
If Me.Dirty then
    retValue = MsgBox(strMsg, vbQuestion + vbYesNoCancel, strTtl)
    .....
    .....
end if
in questo modo te lo dovrebbe chiedere solo se effettivamente hai modificato
qualcosa.
Cinzia

 ha scritto nel messaggio 
news:4285089d$0$20670$5fc...@news.tiscali.it...

Ciao Cinzia, tutto bene?
ho fatto cosi:
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?"
    If Me.Dirty Then
    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 If
End Sub
...........................
ma lo fa lostesso
Ciao Napoleone 

 Ciao Napoleone
Uhm....
Non è che hai qalche sub sull'evento corrente che va a modificare qualche
campo?
Ciao
Cinzia

 ha scritto nel 
messaggio news:17yr2kreu9143$.x08itsirhekc.dlg@40tude.net...

Non se può influire, ma ho questa sub
Private Sub Form_Current()
Me.lPrezzo = ([lCostoLordo]) - ([TestoSconto])
Me.lPrezzoVendita = ([lCostoLordo] + [TestoRicarico] + [TestoIVA])
End Sub
Napoleone 

 End Sub
Burlone. Cambiare il record "non può influire"?
Certo questo ti rende sporco il record e provoca gli evento
di aggiornamento. Puoi sempre testare con
Msgbox Me.Dirty
-- 
HTH
Karl
*********
Access FAQ: 
www.donkarl.com/it
 + iscriviti alla prima Conferenza
Italiana per Sviluppatori di Access (CISA 1), Arezzo, 4+5/6/2005 

 Karl
Effettivamente se tolgo la sub su corrente, il problema scompare.
Ma come faccio ad aggiornare i miei calcoli??
Ciao
Napoleone
PS: per Karl
Riguardo al post del 12.05.2005 Record duplicato non segnalato,
non c'è soluzione? 

 non c'è soluzione?
La tua risposta per me era troppo difficile a leggere, senza
spazio interlineare ecc. e con info che per me sembrava poco
chiaro e non completo. Aggiungio il mio male italiano e il
fatto che leggo centianaie di messaggi in diversi NG...
In questi casi di solito lascio aperto il thread perché qui
si trova tanta gente capace che non ha almeno il problema
della lingua e che di solito interviene se il messaggio è più
chiaro che per me.
Se invece non ricevi una risposta dopo 2-3 giorni puoi sempre
provare a riformulare la domanda più chiara e con più
informazione necessario in un nuovo thread.
-- 
cu


 fatto che leggo centianaie di messaggi in diversi NG...
In pratica quel tread si collega a questo tgread di oggi, perchè?
se in beforUpdate ho il codice che mi avvisa sul cambiamento dei dati??
il codice che segue per identificare i duplicati, va bene in AfterUpdate??
------------------------------
Private Sub Form_AfterUpdate()
   If DataErr = 3022 Then
  Response = acDataErrContinue
  MsgBox Me!lCodiceBarreProdotto & " " & " sDescrizione" & 
lCodiceBarreFornitore & " Già esiste.", vbOKOnly, " -- CLIENTE Duplicato! --  
"
  Me!lCodiceBarreProdoto.SetFocus
End If
End Sub
--------------------------------------
Ciao
Napoleone

 --------------------------------------
No. L'errore che viene a causa di un indice esclusivo duplicato non
puoi solo gestire nel evento Errore della maschera. Anche DataErr
è solo usabile in questo evento.


 --------------------------------------
No. L'errore che viene a causa di un indice esclusivo duplicato
puoi solo gestire nel evento Errore della maschera. Anche DataErr
è solo usabile in questo evento.
-- 


 Karl
Ho fatto cosi, però succede questo:
caso1
Se inserisco volutamente un record duplicato nella maschera,
chiudo la maschera dal bottone chiudi, mi chiude la maschera e non mi 
segnala nulla.
caso2
Se inserisco volutamente un record duplicato nella maschera,
scrollo il mouse per passare ad un'altro record, mi da il giusto messaggio 
di errore.
caso3
Se inserisco volutamente un record duplicato nella maschera,
clicco sul bottone Inserisci nuovo record, mi dice
Impossibile passare al record specificato.
Tre segnalazioni diverse ??????????????
Ciao
Napoleone 

 Tre segnalazioni diverse ??????????????
Perfetto se fai tre azioni diversi o esegue codici diversi.
-- 
HTH


 Karl
Napoleone 

CUT
 ------------------------------------------
 Private Sub Comando63_Click()
 On Error GoTo Err_Comando63_Click
 '.......PARTE NUOVA....
   If Me.Dirty Then
        Me.Dirty = False
    End If
    DoCmd.Close acForm, Me.Name
 Exit_Comando63_Click:
    Exit Sub
 Err_Comando63_Click:
    MsgBox Err.Description
    Resume Exit_Comando63_Click
 End Sub
----------------------------------------------
Napoleone 

 ha scritto nel messaggio 
news:Dgkhe.7230$795.2...@twister1.libero.it...

Se ti interessa sapere, il formato dei due campi che formano  la chiave 
primaria sono di tipo testo.
Napoleone