Condividi tramite

Compilazione automatica di un campo con il valore di un altro campo dello stesso record

Anonimo
2020-01-25T18:43:00+00:00

Salve a tutti,

ho una tabella dove registro degli interventi effettuati, riportando Data di inizio (DataInizio) e di fine (DataFine).

Solitamente gli interventi si concludono nello stesso giorno. 

Vorrei fare in modo che in automatico quando apro la maschera per popolare i dati nel campo DataFine mi riportasse il valore inserito nel campo DataInizio dello stesso record per ridurre gli inserimenti da fare, lasciando però il campo editabile per poter variare la data quando la conclusione è in date diverse.

Grazie a tutti.

Simone

PS mi sono accorto di avere molte domande aperte, provvedo a chiudere quelle che si sono risolte, scusate sono poco abituato ai forum.

Microsoft 365 e Office | Access | Per la casa | Windows

Domanda bloccata. Questa domanda è stata eseguita dalla community del supporto tecnico Microsoft. È possibile votare se è utile, ma non è possibile aggiungere commenti o risposte o seguire la domanda.

0 commenti Nessun commento

Risposta accettata dall'autore della domanda

Anonimo
2020-01-26T19:26:32+00:00

ciao Simone,

soluzione migliore per ottenere lo stesso risultato del codice vba che ci scatena sull'evento current è certamente quello di impostare nel valore predefinito dei controlli dataInizio e dataFine =date().

Per quanto a :

[…]

 Ma il mio problema è che non registro in tempo reale, quindi la mia necessità è di inserire manualmente la dataInizio e far migrare il dato anche su datafine. 

[…]

prova come segue :

Option Compare Database

Option Explicit

Private Sub dataFi_BeforeUpdate(Cancel As Integer)

With Me

    If .dataFi < .dataIn Then

        .dataFi.BackColor = vbRed

        VBA.MsgBox prompt:="Data fine deve essere maggiore o uguale a data inizio!", _

                   buttons:=vbCritical + vbOKOnly, _

                   title:="Attenzione!"

        .dataFi.BackColor = vbWhite

        Cancel = True

    End If

End With

End Sub

Private Sub dataIn_AfterUpdate()

With Me

    If Len(.dataIn & vbNullString) > 0 Then

        .dataFi = .dataIn

    End If

End With

End Sub

con un minimo di controllo prima della modifica della data fine.

[…]

dimenticavo... ma poi il predicato dove lo devo scrivere?

[…]

finestra della proprietà della form e scegli gli eventi before update della dataFine e after update della data inzio.

HTH, prego.

Ciao, Sandro.

La risposta è stata utile?

1 persona ha trovato utile questa risposta.
0 commenti Nessun commento

3 risposte aggiuntive

Ordina per: Più utili
  1. Anonimo
    2020-01-27T13:06:59+00:00

    Grazie!!!!

    FUNZIONA!!!!

    alla prossima richiesta di supporto ... che a breve so già che farò ... intanto vado avanti con la creazione del DB con passi nelle mie capacità.

    Simone

    La risposta è stata utile?

    0 commenti Nessun commento
  2. Anonimo
    2020-01-26T08:27:46+00:00

    Salve Sandro, e grazie.

    Di fatto la soluzione che mi suggerisci agevola di molto il lavoro. Ma il mio problema è che non registro in tempo reale, quindi la mia necessità è di inserire manualmente la dataInizio e far migrare il dato anche su datafine. La tua soluzione purtroppo non è applicabile al mio caso ... dimenticavo... ma poi il predicato dove lo devo scrivere?

    La risposta è stata utile?

    0 commenti Nessun commento
  3. Anonimo
    2020-01-26T07:55:47+00:00

    Salve a tutti,

    ho una tabella dove registro degli interventi effettuati, riportando Data di inizio (DataInizio) e di fine (DataFine).

    Solitamente gli interventi si concludono nello stesso giorno. 

    Vorrei fare in modo che in automatico quando apro la maschera per popolare i dati nel campo DataFine mi riportasse il valore inserito nel campo DataInizio dello stesso record per ridurre gli inserimenti da fare, lasciando però il campo editabile per poter variare la data quando la conclusione è in date diverse.

    Grazie a tutti.

    Simone

    PS mi sono accorto di avere molte domande aperte, provvedo a chiudere quelle che si sono risolte, scusate sono poco abituato ai forum.

    ciao Simone.,

    se gli interventi si completano lo stesso giorno della registrazione ti consiglierei quanto segue :

    Private Sub Form_Current()

    With Me

        If .NewRecord Then

            .dataIn = VBA.Date()

            .dataFi = VBA.Date()

        End If

    End With

    End Sub

    in sostanza su corrente del record della form in cui effettui le registrazioni verifichi se si tratta di un nuovo inserimento, e nel caso lo sia, popoli i controlli dataIn e dataFi rispettivamente associati alla tabella interventi data inizio e data fine odierna.

    Ovviamente possono anche essere modificati a piacimento.

    ciao, Sandro.

    […]

    PS mi sono accorto di avere molte domande aperte, provvedo a chiudere quelle che si sono risolte, scusate sono poco abituato ai forum.

    […]

    bravo….se trovi interventi miei precedenti chiusi pure anche quelli contrassegnando la risposta predefinita, grazie.

    La risposta è stata utile?

    0 commenti Nessun commento