05/12/2023 - nerofumo ha scritto:
Una Buonasera a tutti, ho una maschera continua e dovrei inserire in automatico l'ora sui record che vado a salvare.Ho provato con l'inserimento di =Now() sull'origine controllo campo orario maschera ma quando vado a salvare non mi copia l'orario in tabella, ho provato ad ad inserire una macro “imposta valore” Time() su corrente della maschera, ma su 8 record della maschera continua, chiaramente il dato orario viene memorizzato solo nel primo record.Come posso risolvere?
grazie
Ciao,
non è molto chiara la logica che stai usando …
comunque se le maschere continue hanno un recordset (origine record) aggiornabile, ogni qualvolta che aggiorni una riga nella maschere continue, il record viene automaticamente aggiornato nella tabella nel momento in cui sposti il focus dalla riga corrente.
Per intercettare questo evento di aggiornamento e aggiungere l'orario di modifica del record, sarà sufficiente usare l'evento BeforeUpdate … Per esempio:
' UPDATE TIME CURRENT RECORDS
Private Sub Form_BeforeUpdate(Cancel As Integer)
' update time now
Me.orario.Value = Time()
End Sub
Se non vuoi utilizzare l'evento BeforeUpdate , allora puoi associare l'aggiornamento dell'orario ad un pulsante e gestire il metodo Dirty… Per esempio:
' UPDATE TIME CURRENT RECORDS
Private Sub ButtonSave_Click()
If Me.Dirty Then
' set time now
Me.orario.Value = Time()
' update
Me.Dirty = False
End If
End Sub
Ma se vuoi aggiornare l'orario per tutti i records inseriti, che siano stati modificati oppure no, allora puoi inserire un pulsante per aggiornare tutti i records all'orario desiderato… Per esempio:
' UPDATE TIME ALL RECORDS
Private Sub ButtonSaveAll_Click()
' load recordset and update
If Me.Recordset.RecordCount > 0 Then
' set time now
Dim timeNow As Date
timeNow = Time()
' load recordset
Me.Recordset.MoveFirst
Do Until Me.Recordset.EOF
' set recordset edit
Me.Recordset.Edit
' set time now
Me.orario.Value = timeNow
' update
Me.Recordset.Update
' next record
Me.Recordset.MoveNext
Loop
End If
End Sub
Ad ogni modo prima di eseguire eventuali aggiornamenti al recordset, assicurarsi che esistano dei records, basta usare un semplice controllo
Ma ripeto, non è chiaro cosa intendi veramente fare e con quale logica…
- ogni record deve avere il suo orario di aggiornamento ?
- si devono aggiornare solo i records nuovi inseriti ?
- si devono aggiornare tutti i records, sia quelli già esistenti e i nuovi inseriti all'ultimo orario utile ?
Forse non ti sei spiegato bene o non ho capito io… bah…
Comunque ti lascio i link della documentazione inerenti qgli esempi sopra riportati:
- Proprietà Dirty - Supporto tecnico Microsoft
- Usare BeforeUpdate per richiedere la verifica dell'operazione di salvataggio - Microsoft 365 Apps | Microsoft Learn- Introduzione alle maschere - Supporto tecnico Microsoft
- Form.Recordset property (Access) | Microsoft Learn
- Proprietà RecordSource - Supporto tecnico Microsoft
Sono solo esempi e la stessa cosa si può fare utilizzando altri metodi… ma prima di approfondire deve essere più chiaro quale logica vuoi utilizzare per aggiornare l'orario nei records.