Mantieni Valore textbox quando si passa al record successivo

di il
21 risposte

Mantieni Valore textbox quando si passa al record successivo

Buongiorno.

Sto cercando di creare una maschera che faciliti l'immissione delle ore di lavoro di alcuni dipendenti.

Vorrei fare in modo che quando inserisco una data in una textbox (oppure un altro valore in un'altra textbox) nel record numero 1, quando passo al record successivo, la data possa rimanere di default come quella inserita precedentemente.

Nonostante ciò, vorrei che se si cambia data nel record 2, nel record 1 venga mantenuta la data inserita precedentemente.

Vorrei procedere in questo modo perché ho molti dipendenti che lavorano più o meno nelle stesse date, e vorrei evitare di dover riscrivere la data, oppure un altro valore (come per esempio le ore lavorate), tutte le volte che cambio record.

Grazie mille a tutti.

Perdonate le mie scarse conoscenze.

21 Risposte

  • Re: Mantieni Valore textbox quando si passa al record successivo

    Ciao, se devi mettere la data odierna è sufficiente che scrivi sull'evento doppio clik  della casella di teso 

    =Date()
  • Re: Mantieni Valore textbox quando si passa al record successivo

    Puoi usare la funzione DLAST(….) per popolare il DefaultValue del controllo…

    Quindi in modalità struttura vai alla proprietà Valore di Default e componi la funzione che verrà usata SOLO al NUOVO RECORD:

    =DLAST("NomeCampo";"NomeTabella")
  • Re: Mantieni Valore textbox quando si passa al record successivo

    13/12/2022 - @Alex ha scritto:


    Puoi usare la funzione DLAST(….) per popolare il DefaultValue del controllo…

    Quindi in modalità struttura vai alla proprietà Valore di Default e componi la funzione che verrà usata SOLO al NUOVO RECORD:

    =DLAST("NomeCampo";"NomeTabella")

    Ciao Alex, intanto grazie della risposta.

    Purtroppo, però ho provato e non funziona, o meglio, mostra di sempre questo errore: #Nome?

    Allego il mio file, così magari risulta più semplice capire il tutto. Il form di inserimento dati è intitolato: mask_interventi.

  • Re: Mantieni Valore textbox quando si passa al record successivo

    Allegato:

    https://drive.google.com/file/d/1QVfmKT1pOU1aijbTzvPtYbng10yCKpy1/view?usp=share_link

  • Re: Mantieni Valore textbox quando si passa al record successivo

    Non funziona perchè non hai scritto quello che ti ho detto come ti ho suggerito, ma hai modificato la sintassi a tua discrezione…!

    Parti dal fare quello che ti viene suggerito… poi se non funziona ci si guarda.

  • Re: Mantieni Valore textbox quando si passa al record successivo

    13/12/2022 - @Alex ha scritto:


    Non funziona perchè non hai scritto quello che ti ho detto come ti ho suggerito, ma hai modificato la sintassi a tua discrezione…!

    Parti dal fare quello che ti viene suggerito… poi se non funziona ci si guarda.

    No scusa, mi son dimenticato io, ho inserito prima ciò che mi hai detto tu, poi vedendo che non andava, così per provare ho inserito DFirst e dopo quando l'ho condiviso mi son dimenticato di rimettere DLast. Però facendo come hai detto tu, purtroppo non funziona. Quali altre soluzioni potrebbero esserci?

    Grazie, e scusa ancora.

  • Re: Mantieni Valore textbox quando si passa al record successivo

    Ti dico che funziona, non hai scritto la sintassi correttamente, ho guardato il tuo demo.

  • Re: Mantieni Valore textbox quando si passa al record successivo

    13/12/2022 - @Alex ha scritto:


    Non funziona perchè non hai scritto quello che ti ho detto come ti ho suggerito, ma hai modificato la sintassi a tua discrezione…!

    Parti dal fare quello che ti viene suggerito… poi se non funziona ci si guarda.

    In realtà lo ha scritto come gli suggerisce il compositore automatico ed è sbagliato.

    La sintassi giusta è la tua.

    Però c'è un errore di fondo.
    Mettendo l'espressione su valore predefinito, access memorizza il valore immesso la prima volta e mantiene sempre quello, fino a quando non lo si forza a riaggiornalo.

    A mio avviso la via da seguire è quella di usare il VBA, legato ad un evento della text box.

    Comunque la soluzione che vorrebbe seguire, secondo me non è ottimale, perchè i possibili bug che si potrebbero generare sono veramente molti ed imprevedibili.

    Tanto per iniziare, ho notato che per creare un nuovo record, si deve cliccare 2 volte sul selettore aggiungi record.

    Comportamento strano che non capisco da dove possa provenire.

  • Re: Mantieni Valore textbox quando si passa al record successivo

    Oltre ai suggerimenti già forniti, non sottovalutare la comoda combinazione tasti CTRL+' (apostrofo) che consente di scrivere il valore campo del record precedente.

  • Re: Mantieni Valore textbox quando si passa al record successivo

    13/12/2022 - fratac ha scritto:


    13/12/2022 - @Alex ha scritto:


    Non funziona perchè non hai scritto quello che ti ho detto come ti ho suggerito, ma hai modificato la sintassi a tua discrezione…!

    Parti dal fare quello che ti viene suggerito… poi se non funziona ci si guarda.

    In realtà lo ha scritto come gli suggerisce il compositore automatico ed è sbagliato.

    La sintassi giusta è la tua.

    Però c'è un errore di fondo.
    Mettendo l'espressione su valore predefinito, access memorizza il valore immesso la prima volta e mantiene sempre quello, fino a quando non lo si forza a riaggiornalo.

    A mio avviso la via da seguire è quella di usare il VBA, legato ad un evento della text box.

    Comunque la soluzione che vorrebbe seguire, secondo me non è ottimale, perchè i possibili bug che si potrebbero generare sono veramente molti ed imprevedibili.

    Tanto per iniziare, ho notato che per creare un nuovo record, si deve cliccare 2 volte sul selettore aggiungi record.

    Comportamento strano che non capisco da dove possa provenire.

    A me non genera questo problema, funziona regolarmente come ho detto, con inserimenti ripetuti presenta SEMPRE in proposta il valore della Data dell'ultimo record immesso.

  • Re: Mantieni Valore textbox quando si passa al record successivo

    Nella proprietà Valore predefinito devi scrivere l'espressione =DLast("[Data]";"[tbL_interventi]").

    Comunque prima di gestire le maschere ti dovresti preoccupare di gestire correttamente la struttura delle tabelle, ad esempio la tabella tbL_interventi:

    • permette di inserire un record privo dei dati fondamentali richiesti in quanto la proprietà Richiesto è impostata a No su tutti i campi, mentre credo che sia necessario impostarla a
    • manca un indice univoco (che dovrebbe essere impostato sui campi ID_casa, data, ID_automezzo, ID_autista)  che impedirebbe la duplicazione dei dati come invece avviene adesso.
    • mancoto controllo che all'atto del salvataggio nel controllo ore ci sia un volore maggiore di 0.

    inoltre manca una corretta normalizzazione delle stesse, vedi i campi tipo, marca, citta, provincia, CAP, regione, stato

  • Re: Mantieni Valore textbox quando si passa al record successivo

    13/12/2022 - @Alex ha scritto:


    Ti dico che funziona, non hai scritto la sintassi correttamente, ho guardato il tuo demo.

    Buongiorno Alex.

    Scusami ma non riesco veramente a capire dove sbaglio, perciò ora mando quel che faccio io passo per passo, così forse si capisce dove sto sbagliando.

    Dunque:

    1- Entro in “Visualizzazione Struttura” della mask_interventi;

    2- Seleziono la texbox “Data”;

    3- nella finestra delle proprietà, cerco la dicitura “Valore predefinito” ed inserisco quello che ho compreso di ciò che mi hai detto:

       

    Facendo in questo modo, non mi funziona. Ho provato anche la sintassi con le parentesi quadre e tutto, ma penso che sto ancora sbagliando qualcosa. Dove sbaglio, secondo voi?

    Grazie ancora.

  • Re: Mantieni Valore textbox quando si passa al record successivo

    14/12/2022 - Stifone ha scritto:


    Nella proprietà Valore predefinito devi scrivere l'espressione =DLast("[Data]";"[tbL_interventi]").

    Comunque prima di gestire le maschere ti dovresti preoccupare di gestire correttamente la struttura delle tabelle, ad esempio la tabella tbL_interventi:

    • permette di inserire un record privo dei dati fondamentali richiesti in quanto la proprietà Richiesto è impostata a No su tutti i campi, mentre credo che sia necessario impostarla a
    • manca un indice univoco (che dovrebbe essere impostato sui campi ID_casa, data, ID_automezzo, ID_autista)  che impedirebbe la duplicazione dei dati come invece avviene adesso.
    • mancoto controllo che all'atto del salvataggio nel controllo ore ci sia un volore maggiore di 0.

    inoltre manca una corretta normalizzazione delle stesse, vedi i campi tipo, marca, citta, provincia, CAP, regione, stato

    Buongiorno Stifone.

    Grazie dei tuoi preziosi consigli, hai ragione per tutti i punti, perchè io non ci avevo neanche pensato. Cosa intendi per la normalizzazione degli ultimi campi che  hai citato? (tipo, marca, citta, provincia, CAP, regione, stato).

    Grazie.

  • Re: Mantieni Valore textbox quando si passa al record successivo

    13/12/2022 - fratac ha scritto:


    13/12/2022 - @Alex ha scritto:


    Non funziona perchè non hai scritto quello che ti ho detto come ti ho suggerito, ma hai modificato la sintassi a tua discrezione…!

    Parti dal fare quello che ti viene suggerito… poi se non funziona ci si guarda.

    In realtà lo ha scritto come gli suggerisce il compositore automatico ed è sbagliato.

    La sintassi giusta è la tua.

    Però c'è un errore di fondo.
    Mettendo l'espressione su valore predefinito, access memorizza il valore immesso la prima volta e mantiene sempre quello, fino a quando non lo si forza a riaggiornalo.

    A mio avviso la via da seguire è quella di usare il VBA, legato ad un evento della text box.

    Comunque la soluzione che vorrebbe seguire, secondo me non è ottimale, perchè i possibili bug che si potrebbero generare sono veramente molti ed imprevedibili.

    Tanto per iniziare, ho notato che per creare un nuovo record, si deve cliccare 2 volte sul selettore aggiungi record.

    Comportamento strano che non capisco da dove possa provenire.

    Buongiorno Fratac.

    Grazie per la tua risposta.

    Un codice legato all'evento “Dopo aggiornamento” della Textbox potrebbe andare bene?

    Private Sub txtbox_data_AfterUpdate()
    Me.txtbox_data.Default = Me.txtbox_data.Value
    End Sub

    Ho provato a mantenere il codice soprastante che si genera quando imposti un valore predefinito. Ho scarsissime capacità con VBA, e di conseguenza non capisco ancora perchè non va. Penso che l'errore sia dovuto alla seconda parte “= Me.txtbox_data.Value”, può essere?

Devi accedere o registrarti per scrivere nel forum
21 risposte