Nome campo testo definito da variabile

di il
21 risposte

Nome campo testo definito da variabile

Buona sera

Ho un data base con alcune tabelle che contengono i valori annuali di alcuni aggregati economici di società oggetto di monitoraggio: Fatturato, Ricavi, Costi del personale etc.

Ogni tabella contiene un campo per ciascun anno solare a partire dal 2015: per esempio “Fatturato 2015”, “Fatturato 2016”, “Fatturato 2017” etc.

Ho creato una routine che ogni nuovo anno aggiunge un campo a ciascuna tabella, sulla base del valore assunto da una variabile globale denominata “intAnnoSolare” = Year (Date).

Poiché l’utente ha la necessità, annualmente, di visualizzare il valore degli aggregati economici dei due anni precedenti e di inserire quello dell’anno corrente, ho creato una maschera principale che contiene i dati delle società oggetto di rilevazione e delle sottomaschere per inserire nelle tabella i dati dell’anno corrente.

Il mio problema è evitare di dover modificare le etichette e i campi testo ogni nuovo anno.

Per le etichette ho risolto utilizzando dei campi testo unitamente alla variabile intAnnoSolare: per esempio “Fatturato” & intAnnoSolare;  “Fatturato” & intAnnoSolare -1;   “Fatturato” intAnnoSolare-2, che mi restituiscono, per il corrente anno, i valori “Fatturato 2023”, “Fatturato 2022”, “Fatturato 2021”.

Non ho trovato però il sistema di rendere variabili nella maschera i nomi dei campi testo. Ciò mi costringe ogni anno a dover intervenire nella struttura delle sottomaschere modificando manualmente nelle proprietà dei campi testo (collegati ai campi delle tabelle) la proprietà “Origine Controllo”. 

Nonostante le ricerche effettuate non ho trovato un metodo per evitare l’intervento manuale utilizzando le query e/o il codice VBA.

Spero di essere riuscito a spiegare il problema e che qualcuno possa darmi indicazioni per risolverlo. 

21 Risposte

  • Re: Nome campo testo definito da variabile

    Ho l'impressione che tu stia utilizzando le tabelle del db come un foglio excel.

    In realtà dovrestI avere una tabella Fatturato con i campi

    ID, ANNO, VALORE

    e aggiungere le informazioni in ogni riga 

  • Re: Nome campo testo definito da variabile

    Io invece sono curioso di sapere come fa a funzionare un database struttutato in questo modo.

  • Re: Nome campo testo definito da variabile

    Buongiorno

    premetto che è il primo tentativo che faccio di costruire un data base con delle procedure di utilizzo.

    Per quanto riguarda il suggerimento di Oregon non mi è chiaro cosa cambierebbe ai fini del mio problema se costruissi le tabelle inserendo i campi ID, ANNO, VALORE anzichè come ho fatto IDSOCIETA', FATTURATO ANNO 2023, FATTTURATO 2022, FATTURATO 2021, FATTURATO 2020, fermo restando che proverò a seguire il suo consiglio che mi sembra opportuno.

    Per quanto riguarda il commento di fratac mi  farebbe piacere se mi spiegasse cosa non va nella struttura del database e come invece dovrei impostarlo.

    Grazie a entrambi

  • Re: Nome campo testo definito da variabile

    11/05/2023 - BarLudwig ha scritto:


    Buongiorno

    premetto che è il primo tentativo che faccio di costruire un data base con delle procedure di utilizzo.

    Per quanto riguarda il suggerimento di Oregon non mi è chiaro cosa cambierebbe ai fini del mio problema se costruissi le tabelle inserendo i campi ID, ANNO, VALORE anzichè come ho fatto IDSOCIETA', FATTURATO ANNO 2023, FATTTURATO 2022, FATTURATO 2021, FATTURATO 2020, fermo restando che proverò a seguire il suo consiglio che mi sembra opportuno.

    Per quanto riguarda il commento di fratac mi  farebbe piacere se mi spiegasse cosa non va nella struttura del database e come invece dovrei impostarlo.

    Grazie a entrambi

    Il fatto non ti sia chiaro il suggerimento di Oregon, è il problema di sostanza…!!!

    Non devi realizzare Tabelle divise per anno ma avere una sola tabella con le date di attribuzione delle Spese/Fatture, nessun database viene strutturato creando Nuove Tabelle, la struttura del DB viene generata dopo averci pensato bene e non si tocca più, o meglio non si prendono in considerazione azioni di creazione Tabelle a scopo di differenziazione, quello che fai è sintomo di errore di struttura.

    Ora spiagarti il perchè, ha poco senso se prima non hai letto/studiato le regole di normalizzazione dei Database… 

    Quindi, contrariamente ad Excel un database ha regole di gestione differenti che devi maneggiare in modo funzionale, altrimenti…

  • Re: Nome campo testo definito da variabile

    Buongiorno Alex

    certamente approfondirò le regole di normalizzazione dei database, però io non creo nuove tabelle, bensì aggiungo alle tabelle esistenti un campo ogni nuovo anno per accogliere i valori delle Spese/Fatture dell'anno nuovo. Certamente proverò la soluzione suggerita da Oregon però continuo a non capire come possa evitarmi di modificare manualmente il nome dei campi testo delle maschere di inserimento.

    In ogni caso ti ringrazio per l'attenzione.

  • Re: Nome campo testo definito da variabile

    11/05/2023 - BarLudwig ha scritto:


    aggiungo alle tabelle esistenti un campo ogni nuovo anno

    E ti sembra una cosa normale?  Non si modifica la struttura delle tabelle solo per poter lavorare un altro anno, non si aggiungono colonne per accogliere nuovi dati che invece devono essere gestiti con delle nuove righe.

    Se il DB è multisocietà allora prevedi anche un IDSOC, quindi la tua tabella diventerà

    ID, IDSOC, ANNO, VALORE

    e non avrai nessuna necessità di aggiungere alcun campo ogni anno.

    La struttura della tabella di un DB viene definita in base a precise regole (che ti consiglio, come Alex, di studiare prima di metterci le mani) e tale struttura NON ha nulla a che vedere con quello che “mostrerai” a video o in stampa. Sbagliatissimo invece creare la tabella utilizzando quello che dovrà essere un “report”, essenzialemente come con Excel, cosa che per i DB non ha alcun senso.

    Nelle maschere di inserimento dovrai inserire

    SOCIETA' (scelta da un elenco in una apposita tabella, con cui riempirai il campo IDSOC)

    ANNO DI RIFERIMENTO  (campo ANNO, quello a cui si riferisce il dato)

    VALORE FATTURATO (campo VALORE, il fatturato)

    La questione è che NON puoi improvvisare, devi studiare PRIMA tutto quello che c'è da sapere effettivamente sui DB (in generale) e sullo strumento Access (in particolare). NON puoi inventarti soluzioni (fra l'altro mutuate da Excel) che nulla hanno a che vedere con u DB.

    Ovvero, ci vuole un po' di tempo, come in tutte le cose.

  • Re: Nome campo testo definito da variabile

    Buongiorno Oregon

    Ho capito la logica della tua indicazione sulla struttura della tabella le l'ho creata. Non vorrei abusare della tua disponibilità, ma potresti suggerirmi anche un metodo per popolare i dati della tabella nuova tabella (IDSOCIETA', ANNO, VALORE) con quella che avevo creato precedentemente: cioè IDSOCIETA', FATTURATO 2018, FATTURATO 2019, FATTURATO 2020, FATTURATO 2021, FATTURATO 2022 ?

    Ti ringrazio

  • Re: Nome campo testo definito da variabile

    No, scusa, non ha senso.

    Se ti dico, più volte, che devi montare quattro ruote rotonde nell'auto, non mi puoi dire “ok ma dimmi come faccio a fare andare la macchina montando quattro ruote quadrate”

  • Re: Nome campo testo definito da variabile

    11/05/2023 - BarLudwig ha scritto:


    Buongiorno Alex

    certamente approfondirò le regole di normalizzazione dei database, però io non creo nuove tabelle, bensì aggiungo alle tabelle esistenti un campo ogni nuovo anno per accogliere i valori delle Spese/Fatture dell'anno nuovo. Certamente proverò la soluzione suggerita da Oregon però continuo a non capire come possa evitarmi di modificare manualmente il nome dei campi testo delle maschere di inserimento.

    In ogni caso ti ringrazio per l'attenzione.

    Stai facendo una cavolata, non va bene e come è ovvio non capisci il suggerimento… e l'errore.

    Devi mettere l'Anno di Validazione dell'operazione e gestire quindi l'inserimento in quel modo, non devi ne aggiungere ne modificare nulla una volta predisposta la tabella.

  • Re: Nome campo testo definito da variabile

    Forse non mi sono spiegato bene. Io voglio montare le ruote tonde, mi chiedevo solo se c'era un metodo per evitare di dover inserire manualmente nella nuova tabella i valori del fatturato che avevo caricato nella precedente.

    In ogni caso il tuo suggerimento sulla nuova tabella da creare mi ha aperto gli occhi e ti ringrazio,

  • Re: Nome campo testo definito da variabile

    Si con una Query Action di tipo INSERT, prova a vedere bene come funziona… ed inserisci i dati nella nuova tabella

  • Re: Nome campo testo definito da variabile

    OK, grazie ancora

  • Re: Nome campo testo definito da variabile

    Ok, avevo equivocato. Ma quanto saranno i record che hai registrato allo stato attuale? 

    A parte la INSERT che ti può risolvere il problema, sono davvero in numero così elevato?

  • Re: Nome campo testo definito da variabile

    Ciao, Salve a tutti
    Purtroppo non è un database quello che stai realizzando, la strada intrapresa come avrai capito, non è corretta, infatti già riscontri alcuni problemi come hanno ben segnalato appena sopra.

    Le informazioni da archiviare nelle tabelle del database si devono sviluppare in Verticale e non in Orizzontale come stai cercando di fare.
    Le tabelle di un database devono contenere una sequenza di dati, records, uno dietro l’altro e non accanto all’altro.

    Invece i dati estratti dalle tabelle possono essere rappresentati anche in Orizzontali, affiancando nel tuo caso i dati relativi agli aggregati per anno.

    Le tabelle di un database devono essere necessariamente indicizzate e là dove opportuno, con chiavi univoche oppure no.
    Le tabelle per essere Relazionate, da qui si usa dire “Database Relazionale”, devono sempre avere una chiave univoca Primaria. Questo consente di avere l’Integrità e l’univocità dell’informazioni in esse archiviate.

    Come prima cosa devi Immaginare, ancor prima di procede, come dovranno essere relazionate le tabelle e quanti e quali saranno necessarie per la realizzazione del progetto.

    In pratica; poniamo il caso del Tipo Aggregati

    • Fatturato
    • Costi
    • Ricavi
    • Etc…

    Queste informazioni “Descrittive” non devono essere presenti in ogni tabella per Anno Società etc… ma devono essere collocate in una tabella da relazionare a quella Società per quell’Anno e così via dicendo.

    Un esempio ancor più pratico per quanto appena detto: 
    supponi di avere una Tabella denominata Tbl_Aggregati la quale conterrà i records relativi a:

    • Anno
    • Società
    • Tipo Aggregati
    • Valore Aggregati

    In questo caso, fatto eccezione per il campo Valore Aggregati, tutte le altre informazioni devono essere reperite da enne tabelle… Tabella Anni, Tabella Società e Tabella Tipo Aggregati.
    Queste tabelle verranno relazionate alla tabella Tbl_Aggregati.

    Un piccolo esempio:

    Se per queste tabelle andiamo ad inserire i dati e li visualizziamo in una Query (Ho messo due Società una Nonna Papera e l’altra Paperon de Paperoni per alcuni anni di esercizi) 

    Come puoi vedere i dati sono tutti in verticale, un record sotto l’altro… questo consentirà di Filtrare gli Anni che ci interessano, le Società etc… e in una Form li possiamo organizzare come meglio dovranno essere analizzati.

    Aprendo la Tabella Società si può notare come le Relazioni, in questo caso 1 a molti, vengono utilizzate automaticamente dal Database per dare accesso a tutti i records relazionati per codice ID chiavi Primarie.
    Pertanto non si devono portare dietro tutti i campi descrittivi in tutte le tabelle in modo ridondante e pesante, ma solo i campi chiave ad essi associate:

    Anche quando si va a creare una Query, quando si includono le tabella, ritroviamo le relazioni già presenti tra tutte le Tabelle e si hanno a disposizione tutte le informazioni disponibili:

    Adesso poniamo di voler visualizzare per La società Paperon de Paperoni, per l’anno in corso e i due anni precedenti, i Valori relativi agli Aggregati Fatturato/Costi/Ricavi/Etc… 

    Un piccolo esempio (anche bruttino ;) ) e niente di più… solo per darti un idea di come pensare e strutturare il tuo Database

    P.S. tieni conto che c’è voluto più a scrivere il post che per realizzare il Db, 30 minuti circa per costruire le Tabelle/Relazioni/Form etc.. ;))     spero ti possa tornare utile per approfondire come organizzare il tuo Database, soprattutto sulla base dei suggerimenti che ti hanno già fornito e ben spiegato gli altri.
    Ciao

Devi accedere o registrarti per scrivere nel forum
21 risposte