Newsgroup: it.comp.appl.access
Titolo: Conferma salvataggio dati

Sul sito comune ho c'è il codice di Federico Luciani sull'evento
Form_BeforeUpdate per intercettare l'evento e chiedere, prima di salvare il
record, conferma all'utente.
La domanda è questa: come si fa a attivare la procedura di richiesta
SOLTANTO se il record (i dati nel Form) sono stati effettivamente cambiati e
al contrario, se l'utente si è limitato a scorrere il form record dopo
record senza intervenire sui dati evitare la richiesta?
Io logicamente suppongo:
Form_Current  ==> si salvano i dati in una stringa o un altro tipo di buffer
(recordset?)
Form_BeforeUpdate ==> si prelevano i dati, si confrontano con quelli salvati
e se diversi si chiede di salvarli, se uguali si procede senza chiedere.
Il punto è che non so come salvare i dati e poi confrontarli.
Immagino si debba ricorrere come al solito a qualcosa del tipo
Public rs as Recordset
poi in FormCurrent
set rs (qui non so come si fa a dire che deve prendere i dati del form)
poi in BeforeUpdate
Dim rs1 as Recordset
set rs1 (stessa cosa con i nuovi dati del form)
If rs=rs1 then
    esci e vai oltre
else
    attiva la procedura di richiesta di conferma prima di salvare il record
che è stato cambiato
end if
Il punto è che io non lo so fare.
Magari il procedimento è del tutto diverso da quello che credo io
Chi mi aiuta?
Ciao
Filippo

 wrote in message
news:a2pkem$ljc$1...@news.panservice.it...

Credo tu abbia confuso la tecnica indicata da LUCIANO con quella
delle Form non associate...!
Luciano si è limitato a indicare un metodo da applicare alle Form
Normalmente collegate ad una Fonte dati, nelle quali l'EVENTO
in questione BEFORE_UPDATE viene generato solo a fronte di
un'alterazione
del Record Corrente.
In questo caso, basta intercettare ed eventualmente Settare Cancel=True
che vengono perse le Modifiche fatte e/o il NEWRECORD.
Quindi non serve esaminare CURRENT_RECORD, se non per ottimizzare
il controllo della Proprietà DIRTY che in A97 non genera EVENTO
ma in A2000 si, e che viene attivata se il record corrente è
stato modificato.
Quello che dici tu, è una tecnica di utilizzo delle Form non associate
per le quali si deve utilizzare DAO o ADO per la gestione dei Recordset.
In questo caso la procedura è un tantino più complessa di quella che hai
descritto, ma si avvicina come concetto.
C'è però in questo caso la possibilità di utilizzare le TRANSAZIONI
che risultano molto più potenti e FLESSIBILI, ma ovviamente è
tutt'alta cosa...!!!
Utilizzare questa tecnica con ACCESS complica l'utilizzo delle FORM
e poi la comodità di avere Form Associate è INFINITA.
Ciò non esclude che per alcune situazioni sia Essenziale lavorare
con Form non associate, soprattutto nel caso di DATABASE Multiutenti
condivisi in RETI.
Mi sono dilungato.
Alessandro./[@Alex]/
-- 
Posted via Mailgate.ORG Server - 
http://www.Mailgate.ORG

CUT
Grazie delle spiegazioni
Il punto è che a me pare che l'eventi BeforeUpdate sia generato sempre
Per lo meno, a me succede che dopo aver inserito il codice nell'evento, se
scorro i record con i tasti PagUp e PagDw dalla Form si attivi ad ogni
cambio di record il condice con la contestuale richiesta di conferma
salvataggio dati, anche se i dati non sono stati modificati (intendo in dati
del form, ovviamente associati a una tabella)
Come si fa ad evitare tutto ciò?
Grazie
Filippo

 Filippo
Prova come ti dicevo ad inserire:
If Me.Dirty then 
   chiedi il salvataggio
end if
