Inserire in automatico ora su record

di il
11 risposte

Inserire in automatico ora su record

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

11 Risposte

  • Re: Inserire in automatico ora su record

    05/12/2023 - nerofumo ha scritto:


    Ho provato con l'inserimento di =Now() sull'origine controllo campo orario maschera

    =Now() (o forse solo Now()) lo devi inserire nella proprietà “Valore predefinito”.

  • Re: Inserire in automatico ora su record

    05/12/2023 - OsvaldoLaviosa ha scritto:


    05/12/2023 - nerofumo ha scritto:


    Ho provato con l'inserimento di =Now() sull'origine controllo campo orario maschera

    =Now() (o forse solo Now()) lo devi inserire nella proprietà “Valore predefinito”.

    Carissimo Osvaldo grazie della risposta, ma era già una prova fatta senza risoluzione.Come gia scritto sopra inserendo  =Now() sull'origine controllo campo orario maschera tutti gli 8 record della maschera continua hanno l'orario ma quando salvo l'orario questi non viene salvato sul campo ora della tabella.

  • Re: Inserire in automatico ora su record

    Il campo in tabella DEVE essere di tipo DATA/ORA ed ovviamente salvi tutto il treno, poi userai solo ORA se ti serve quella.

    Nella proprietà Valore Default, metti =Now() è il metodo corretto che deve funzionare, ovviamente lo salva solo se inserisci altri campi o modifiche… essendo un DefaultValue non  genera il Record in automatico ma viene valorizzato in tabella al momento del Commit del salvataggio.

    Se non funziona non stai operando in modo corretto.

  • Re: Inserire in automatico ora su record

    Grazie Alex, io ho già fatto queste prove, allego il link dell'esempio dB, dimmi dove sbaglio.

    https://drive.google.com/file/d/1XFPzdhryExJH6BjDedEAF5L9nVoQQk66/view?usp=sharing

  • Re: Inserire in automatico ora su record

    Piuttosto che indicare il link, allega immagini della visualizzazione struttura tabella e/o maschera con tutte le proprietà relative al campo/controllo in oggetto.

  • Re: Inserire in automatico ora su record

    Ecco il Osvaldo della tabella e form

    https://drive.google.com/drive/folders/1zIb8wJQ3HJK6DueP-_d9tViwocxKm9-E?usp=drive_link

  • Re: Inserire in automatico ora su record

    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.

  • Re: Inserire in automatico ora su record

    Buonasera a tutti, chiedo scusa ma per motivi di salute non ho potuto rispondere. Un grazie a tutti voi per le risposte, eseguo delle prove e vedo di aggiornarvi su quello che riesco a fare.

  • Re: Inserire in automatico ora su record

    Come giustamente Alex mi ha fatto notare su alcuni post non ho dato ragguagli ora vi aggiorno. Inserendo Now() sulla origine controllo sulla maschera mi aggiornava tutti i record, non ho fatto altro che eseguire una eliminazione dei record che non riguardavano il giorno in cui eseguivo l'aggiornamento. Non è proprio l'ideale ma ho risolto.

    Grazie a tutti

  • Re: Inserire in automatico ora su record

    Non andava messo nella proprietà Origine Controllo infatti è un grosso errore, ti avevo detto Valore di Default vedi post precedente, in quel caso solo al Nuovo Record verrebbe valorizzato, devi leggere bene i suggerimenti.

  • Re: Inserire in automatico ora su record

    Come al solito HAI RAGIONE

Devi accedere o registrarti per scrivere nel forum
11 risposte