Newsgroup: it.comp.appl.access
Titolo: OT Traduzione FAQ 2.23

************************
2.23 Keep track of data changes
Problem
You want to keep track of when and by whom records are created
or changed. However, despite other DBMS, Access has no build
in functionality, timestamps, triggers or such to accomplish this.
Solution
If you only want to protocol the creation time of a record you
can do it directly in the table. Create a field of type Date/Time
and use the following in the property "Default Value" of the field:
Now()
In the same way you can also use the default value of form
controls to get date and time of the record's creation.
Concerning the current user you can't use the same method
in a table (s. *FAQ 3.3*). Whereas you can use the following
as default value of a control in a form:
CurrentUser()
To protocol changes of existing records you also have to use
a form because this needs programming. There are two
"religions": The common one uses the event code "Before Update"
of the form to add the time and the user like this:
Me!MyDateField = Now
Me!MyUserField = CurrentUser
The other group of developers wants to be sure that the
protocol fields are only filled in after the update actually has
happened and not denied because of any constraints.
So it uses code like this in the event "After Update" of the form:
Dim rs As DAO.Recordset
Set rs = Me.RecordsetClone
   rs.Bookmark = Me.Bookmark
   rs.Edit
   rs!MyDateField = Now
   rs!MyUserField = CurrentUser
   rs.Update
Set rs = Nothing
************************
-- 
cu
Karl
*********
Access FAQ: 
www.donkarl.com/it
 + CISA1, Arezzo, 4+5/6/2005
la prima Conferenza Italiana per Sviluppatori di Access 

 ha scritto nel messaggio
news:3b03gpF...@individual.net...

2.23 Tenere traccia dei cambiamenti sui dati.
Problema
Vuoi tenere traccia di quando e da chi i record sono creati o modificati.
A dispetto di altri DBMS ,Access non ha questa funzionalità tipo
,timestamps,triggers od altro.
Soluzione
Se vuoi solamente protocollare la data di creazione di un record lo puoi
fari direttamente nella tabella.Crea un campo di tipo Data/Ora ed usa la
seguente funzione nelle proprietà del campo:
Now()
Allo stesso modo puoi impostare il valore di default di controlli nelle
maschere per ottenere la data e l'ora della creazione di un record.
Riguardo all'utente corrente puoi utilizzare lo stesso metodo in una tabella
(vedi *FAQ 3.3*).Ad ogni modo puoi usare il seguente valore di default di un
controllo in una maschera
CurrentUser()
Per archiviare i cambiamenti di record esistenti devi usare una maschera
perchè hai bisogno di scrivere codice.
Esistono a tal riguardo due correnti di pensiero.
Una usa l'evento "Before Update" della maschera per aggiungere la data
,l'ora e l'utente utilizzando
Me!MyDateField = Now
Me!MyUserField = CurrentUser
Altri sviluppatori ,vogliono essere sicuri che i campi per il protocollo
(data/ora ed utente) siano aggiornati solo dopo che l'azione di
aggiornamento è effettivamente avvenuta e non è stata magari annullata da
altre circostanze.Perciò utilizzano l'evento "After Update" dlla maschera
inserendo codice tipo
Dim rs As DAO.Recordset
Set rs = Me.RecordsetClone
   rs.Bookmark = Me.Bookmark
   rs.Edit
   rs!MyDateField = Now
   rs!MyUserField = CurrentUser
   rs.Update
Set rs = Nothing
SunRex

 Solution







2.23 Tener traccia delle modifiche ai dati.
Problema
Vuoi tener traccia, su quando e da chi i record sono creati, o modificati.
Però, a dispetto di altri DBMS, Access non ha alcuna funzionalità
incorporata, tabulati-orari, triggers, o altro per compiere ciò.
Soluzione
Se vuoi soltanto protocollare la data/ora di creazione di un record, puoi
farlo direttamente nella tabella. Crea un campo di tipo Data/Ora ed
utilizza quanto segue (la seguente funzione), nella proprietà “Valore
predefinito” del campo: 
Now()
Allo stesso modo, puoi utilizzare il valore predefinito dei controlli della
maschera per ottenere la data e l'orario della creazione del record.
Per quanto concerne l'utente corrente, non puoi utilizzare, in una
tabella, lo stesso metodo (v.*FAQ 3.3*). Puoi usare, invece, come valore
predefinito di un controllo in una maschera, quanto segue:
CurrentUser()
Per protocollare le modifiche di record esistenti, devi anche usare una
maschera, poiché in questo caso è necessario programmare.
Vi sono due “correnti di pensiero (fedi religiose)”: Quella comune
utilizza il codice d’evento "Before Update" della maschera, per aggiungere
la data/ora e l'utente, in questo modo:
Me!MioCampoData = Now
Me!MioCampoUtente = CurrentUser
L’altro gruppo degli sviluppatori vogliono assicurarsi che i campi
protocollo (“MioCampoData” e “MioCampoUtente”) siano popolati dopo che
l’aggiornamento è realmente avvenuto, e non rifiutato a causa di qualche
restrizione. Pertanto, si utilizza del codice come questo, nell’evento
“After Update" della maschera: 
Dim rs As DAO.Recordset
Set rs = Me.RecordsetClone
rs.Bookmark = Me.Bookmark
rs.Edit
rs! MioCampoData = Now
rs! MioCampoUtente = CurrentUser
rs.Update
Set rs = Nothing
**********
--
rgrds
SC
-- 
questo articolo e` stato inviato via web dal servizio gratuito 
http://www.newsland.it/news
 segnala gli abusi ad 
ab...@newsland.it

 L’altro gruppo degli sviluppatori vogliono assicurarsi che i campi...
L’altro gruppo degli sviluppatori vuole assicurarsi che i campi...
[cut]
