In tabella, come "Valore predefinito" inserire quello di un altro campo.

di il
11 risposte

In tabella, come "Valore predefinito" inserire quello di un altro campo.

Ciao a tutti, mi sono scontrato con un problema che a voi sembrerà ridicolo, ma che per un dilettante come me è serio:
Nella tabella "Fatture ricevute" io ho, fra l'altro, un campo "Data" e un altro "Scadenza". Ora io vorrei che nel campo "Scadenza" il valore predefinito fosse quello inserito in "Data".
Mi date un suggerimento il più semplice possibile?
Grazie in anticipo.
Francesco.

11 Risposte

  • Re: In tabella, come "Valore predefinito" inserire quello di un altro campo.

    Ciccio_54 ha scritto:


    Ciao a tutti, mi sono scontrato con un problema che a voi sembrerà ridicolo, ma che per un dilettante come me è serio:
    Nella tabella "Fatture ricevute" io ho, fra l'altro, un campo "Data" e un altro "Scadenza". Ora io vorrei che nel campo "Scadenza" il valore predefinito fosse quello inserito in "Data".
    Mi date un suggerimento il più semplice possibile?
    Grazie in anticipo.
    Francesco.
    Se conosci un po' di VBA basta scrivere che dopo l'aggiornamento del campo "Data" il campo "Scadenza" dovrà essere uguale al campo "Data", altrimenti crea una macro, richiamata dal "Dopo aggiornamento" del campo "Data", dove nel campo "Azione" selezionerai "ImpostaValore" e nei campi "Elemento" ed "Espressione" assegnerai rispettivamente il campo "Data" ed il campo "Scadenza".
    Comunque sono nozioni basilari che potresti trovare anche solo leggendo una delle tante guide di Access, compreso quella in linea.
  • Re: In tabella, come "Valore predefinito" inserire quello di un altro campo.

    Scusatemi, evidentemente sono stato poco chiaro: io vorrei che già in tabella il "Valore predefinito" del campo "Scadenza" fosse quello inserito nel campo "Data", così se gli va bene, l'utente passa avanti, altrimenti lo cambia.
    Non so se è possibile, comunque grazie ugualmente.
  • Re: In tabella, come "Valore predefinito" inserire quello di un altro campo.

    Tu sei stato chiaro, ma evidentemente ti sfugge la sequenza delle cose, serve avere le idee chiare... e sapere come gli eventi generano i dati e le dipendenze.
    Il DEFAULTVALUE viene generato su Evento Current con NewRecord attivo, e solo in quel momento.
    Come viene generato il valore...?
    Leggendo dalla proprietà della Tabella oppure dalla proprietà del controllo nella maschera associato a quel campo.

    Ne consegue che quando generi un NUOVO RECORD, se il campo non ha un Valore di DEFAULT, questo non può dipendere da un'altro valore che in quel momento non è ancora stato immesso e quel dato NON VIENE VALORIZZATO...!

    Quello che puoi fare è quello che ti è stato suggerito, ovvero assegnare il valore dopo la compilazione del Controllo associato al campo Data.
    Fai attenzione che esprimo sempre concetti relativi all'uso dell'interfaccia Utente, la Maschera, e non la Tabella... perchè la tabella è da lasciar stare.
  • Re: In tabella, come "Valore predefinito" inserire quello di un altro campo.

    Come già segnalato non puoi impostare direttamente in tabella il valore di default di un campo al valore di un altro campo della tabella.
    Puoi, come già suggerito, effettuare il tutto tramite vba (quindi non direttamente sulla tabella) oppure puoi sfruttare le cosiddette DataMarco (in italiano Macro di Dati) presenti nel menù Progettazione (con la tabella in modalità visualizzazione struttura).

    Prerequisiti : il db DEVE essere in formato accdb (no mdb).
    - Crea Macro di Dati -> Prima della modifica -> si apre l'editor di macro
    - Inserisci la funzione se
    - scrivi la condizione :
    
    if not isnull([Data]) then
       if isnull([DataScadenza]) then
           DataScadenza=[Data]
    
    Nota : if e then sono scritti dal gestore di macro, devi inserire 2 distinte azioni if (se) seguite da una azione ImpostaCampo
    In questo modo, direttamente sulla tabella,
    se il campo Data è significativo (<> Null) e contemporaneamente il campo DataScadenza non è impostato (= Null),
    il campo DataScadenza viene impostato a Data.
    Suggerisco comunque un nome un pò più significativo di Data (i.e. DataDoc, DataEmissione, etc...)

    Esempio verificato con Access2013.
  • Re: In tabella, come "Valore predefinito" inserire quello di un altro campo.

    Ho capito! In tabella posso solo impostare le proprietà dei campi, e al massimo dare come valore predefinito un valore reale o qualcosa tipo "Date()" o "Time()", ma non il valore di un altro campo che, ovviamente, all'apertura della tabella sarebbe nullo,
    Quindi devo operare in maschera o in query.
    Grazie mille a tutti, alla prossima!
    Francesco.
  • Re: In tabella, come "Valore predefinito" inserire quello di un altro campo.

    Ciccio_54 ha scritto:


    Ho capito! In tabella posso solo impostare le proprietà dei campi, e al massimo dare come valore predefinito un valore reale o qualcosa tipo "Date()" o "Time()", ma non il valore di un altro campo che, ovviamente, all'apertura della tabella sarebbe nullo,
    Quindi devo operare in maschera o in query.
    Grazie mille a tutti, alla prossima!
    Francesco.
    Scusa Francesco, ma credo che tu ti stia scontrando con un problema che non esiste.
    Premesso che, come ti è già stato suggerito non è opportuno inserire dati direttamente nelle tabelle, ma solo attraverso le maschere, potresti comunque aprire la tua tabella in visualizzazione struttura ed assegnare, sia al campo "Data", sia al campo "Scadenza", come valore predefinito "Date()", così al momento dell'inserimento di un record nuovo, i valori saranno precompilati con la data "odierna".
  • Re: In tabella, come "Valore predefinito" inserire quello di un altro campo.

    Sì, grazie, ma in definitiva non è un grande problema, perché in sede di registrazione io comunque devo inserire la data di emissione, e allora metto anche quella di scadenza e buona notte.
    Mi era solo venuto il dubbio se si poteva fare o meno, ma comunque non conviene, perché si rischia di confondere l'operatore e mettere date strane in scadenza.
    Grazie ancora, ritengo risolto questo post e vi saluto tutti.
    Francesco.
  • Re: In tabella, come "Valore predefinito" inserire quello di un altro campo.

    Ciccio_54 ha scritto:


    Sì, grazie, ma in definitiva non è un grande problema, perché in sede di registrazione io comunque devo inserire la data di emissione, e allora metto anche quella di scadenza e buona notte.
    Mi era solo venuto il dubbio se si poteva fare o meno, ma comunque non conviene, perché si rischia di confondere l'operatore e mettere date strane in scadenza.
    Grazie ancora, ritengo risolto questo post e vi saluto tutti.
    Francesco.
    Quindi facendo un sunto funzionale del 3D cosa potremmo dire....?
  • Re: In tabella, come "Valore predefinito" inserire quello di un altro campo.

    @Alex ha scritto:


    Quindi facendo un sunto funzionale del 3D cosa potremmo dire....?
    Sono state fornite 2 possibili soluzioni ma alla fine il risultato sembra essere un nulla di fatto (per non dire che ho avuto l'ardire di suggerire l'utilizzo di macro per la prima volta, in oltre 20 anni di utilizzo di Access).
  • Re: In tabella, come "Valore predefinito" inserire quello di un altro campo.

    max.riservo ha scritto:


    @Alex ha scritto:


    Quindi facendo un sunto funzionale del 3D cosa potremmo dire....?
    Sono state fornite 2 possibili soluzioni ma alla fine il risultato sembra essere un nulla di fatto (per non dire che ho avuto l'ardire di suggerire l'utilizzo di macro per la prima volta, in oltre 20 anni di utilizzo di Access).
    Ecco il motivo di questa infausta inutilità... , alla prossima pensiamoci...
  • Re: In tabella, come "Valore predefinito" inserire quello di un altro campo.

    Ciccio_54 ha scritto:


    Sì, grazie, ma in definitiva non è un grande problema, perché in sede di registrazione io comunque devo inserire la data di emissione, e allora metto anche quella di scadenza e buona notte.
    Mi era solo venuto il dubbio se si poteva fare o meno, ma comunque non conviene, perché si rischia di confondere l'operatore e mettere date strane in scadenza.
    Grazie ancora, ritengo risolto questo post e vi saluto tutti.
    Francesco.
    No comment…!!!
Devi accedere o registrarti per scrivere nel forum
11 risposte