Da tabelle-legenda a maschera e da maschera a nuova tabella

di il
8 risposte

Da tabelle-legenda a maschera e da maschera a nuova tabella

Dunque. Il mio obbiettivo era quello di creare una maschera interattiva in cui selezionare (da menù a cascata) una serie di record relativi a quattro diverse specifiche (che sono Prodotti, Prezzi, Clienti, Fornitori) e dove ad ogni record selezionato sia associato un codice numerico (esempio Prosciutto = 02 oppure 10euro = 04). E poi, dopo aver selezionato i vari record nella maschera, ho fatto in modo che in una casella di testo successiva (nella stessa maschera) mi comparisse il codice numerico totale (costituito dai quattro singoli codici in sequenza), che io andavo a copiare e incollare in una finale casella di testo (in seguito spiegherò il perchè). Dunque in origine ho creato quattro tabelle legenda: Prodotti, Prezzi, Clienti e Fornitori. Ognuna di esse costituita da 3 campi: ID, Descrizione (esempio Prosciutto o 10euro) e Codice (esempio 02 o 04). E nella maschera ho creato quattro caselle combinate per avere i menù a cascata dove mi comparisse sia la descrizione che il codice (accanto). Ho fatto così: Proprietà/Dati: in Origine Riga ho messo la relativa tabella legenda, in Colonna Associata ho messo 3; Formato: in Numero Colonne ho messo 3, in Larghezza Colonne ho messo 0cm;4cm;2cm (il primo campo ID non mi interessa). Fin qui tutto ok. Una volta selezionate le 4 specifiche, io ho creato un Articolo con il relativo Codice (esempio: Prosciutto 10euro Rossi AG SRL = 02041245). A questo punto mi interessa far si che tutti gli Articoli creati (con relativi codici) vengano presi e riportati in una nuova tabella (da cui poi estrarre query e report). Quindi ho creato una nuova tabella che ho chiamato Articoli, con i campi: ID, Cod.Prodotto, Cod.Prezzo, Cod.Cliente, Cod.Fornitore, Codice Esteso. Ho fatto in modo che i record selezionati nella maschera vadano a finire nel relativo campo della tabella (esempio se seleziono Prosciutto, che ha codice associato pari a 02, allora questo 02 va a finire nel campo Cod.Prodotto della nuova tabella. Mi è bastato agire nella maschera, dove per ogni casella combinata, in Proprietà/Dati/Origine Controllo, ho messo il Nome del relativo campo della tabella Articoli). Seguendo la stessa logica, in Codice Esteso va a finirci l'intero codice numerico. Quest'ultimo passaggio l'ho fatto così: come ho già detto ho creato nella maschera, dopo i 4 menù a cascata, una casella di testo, e in Origine Controllo ho messo la formula "=[Prodotti] & "" & [Prezzi] & "" & [Clienti] & "" & [Fornitori]; in modo che lì dentro mi comparisse il codice esteso. Poi per mandare questo codice nel campo Codice Esteso della tabella Articoli ho fatto così: ho creato nella maschera un'ultima casella di testo vuota, dove in Proprietà/Dati/Origine Controllo ho messo Codice Esteso (il nome del campo della tabella Articoli). E poi ogni volta devo copiare manualmente il codice che mi compare nella casella precedente della maschera e incollarlo su quest'ultima casella (un metodo un pò macchinoso ma non sono riuscito a risolvere diversamente). Fino a qui zero problemi. Ma adesso il punto è che ho deciso di "versare" nella tabella Articoli non solo i valori dei codici (cioè "02", "04", che tutt'ora verso) ma anche i valori effettivi delle descrizioni (cioè ad esempio il valore "Prosciutto", "10euro", ecc..). Per cui ho creato 4 nuovi campi nella tabella Articoli, che sono: Prodotti, Prezzi, Clienti e Fornitori. E lì dentro voglio versare i valori descrittivi. Ma è possibile farlo agendo sulle medesime caselle combinate della maschera (i menù a cascata) che attualmente già "versano" i valori numerici (i codici) nei primi campi della tabella Articoli? Oppure devo creare nella stessa maschera 4 nuove caselle combinate e associarle ai nuovi campi della tabella Articoli, dicendogli di versare i valori descrittivi? E se così fosse, come posso far si che selezionando un valore nel primo menù a cascata di Prodotti (quello che versa i codici) mi si selezioni lo stesso valore nel medesimo secondo menù a cascata di Prodotti (quello che versa le descrizioni)? Perchè il dover inserire manualmente due volte lo stesso valore in due diversi menù può portare ad errori umani.

GRAZIE IN ANTICIPO PER LA PAZIENZA E PER LA DISPONIBILITA'. SPERO POSSIATE AIUTARMI. BUONA GIORNATA, DAVIDE.

8 Risposte

  • Re: Da tabelle-legenda a maschera e da maschera a nuova tabella

    Attento ANZARD. In questa sezione non si discutono i dettagli più tipici di questa o quella applicazione (caselle combinate ad esempio), nel tuo caso specifico Access. È vero, sono stato io a consigliarti/rimandarti qui. Il tuo problema parte da molto più in basso. Le tue tabelle non sono strutturate/normalizzate bene. Dobbiamo focalizzare l'attenzione solo su questo aspetto. Di conseguenza, anche il titolo del thread dovrebbe cambiare (questo puoi farlo solo tu).
    Osservazioni e domande:
    A) Non ho capito cosa vuoi archiviare (questa era la domanda "di cosa parla il tuo database")
    B) Non vedo le indicazioni dei campi chiave primaria
    C) Nella tua descrizione non vedo le relazioni
    D) Forse vuoi realizzare un comune database di gestione Articoli, Clienti, Fornitori...Prezzi, Fatture. Se è così esiste un ottimo esempio del database Northwind. Mi pare che nel Northwind si parla prevalentemente di Ordini piuttosto che di Fatture...ma con un po' di fantasia, si può provare a personalizzare tutto il discorso.
    E) Clienti e Fornitori sono tabelle con tutti i campi che li riguardano. Prova a descriverli tutti e ti accorgerai che avranno tutti o quasi gli stessi campi tipicamente Anagrafici. Se noterai questa schietta similitudine, allora vuol dire che Clienti e Fornitori possono stare nella stessa tabella Soggetti o RagioniSociali...
  • Re: Da tabelle-legenda a maschera e da maschera a nuova tabella

    OsvaldoLaviosa ha scritto:


    Attento ANZARD. In questa sezione non si discutono i dettagli più tipici di questa o quella applicazione (caselle combinate ad esempio), nel tuo caso specifico Access. È vero, sono stato io a consigliarti/rimandarti qui. Il tuo problema parte da molto più in basso. Le tue tabelle non sono strutturate/normalizzate bene. Dobbiamo focalizzare l'attenzione solo su questo aspetto. Di conseguenza, anche il titolo del thread dovrebbe cambiare (questo puoi farlo solo tu).
    Osservazioni e domande:
    A) Non ho capito cosa vuoi archiviare (questa era la domanda "di cosa parla il tuo database")
    B) Non vedo le indicazioni dei campi chiave primaria
    C) Nella tua descrizione non vedo le relazioni
    D) Forse vuoi realizzare un comune database di gestione Articoli, Clienti, Fornitori...Prezzi, Fatture. Se è così esiste un ottimo esempio del database Northwind. Mi pare che nel Northwind si parla prevalentemente di Ordini piuttosto che di Fatture...ma con un po' di fantasia, si può provare a personalizzare tutto il discorso.
    E) Clienti e Fornitori sono tabelle con tutti i campi che li riguardano. Prova a descriverli tutti e ti accorgerai che avranno tutti o quasi gli stessi campi tipicamente Anagrafici. Se noterai questa schietta similitudine, allora vuol dire che Clienti e Fornitori possono stare nella stessa tabella Soggetti o RagioniSociali...
    Chiedo scusa. Proverò a chiarire meglio gli aspetti che hai evidenziato. Comunque i campi chiave primaria sono gli ID, e non dovrebbero esserci relazioni. Voglio archiviare in una tabella (tabella Articoli) tutti i codici estesi che genero dalla maschera. Ma in aggiunta a questi codici voglio inserire nella tabella anche 8 informazioni. Per ogni articolo voglio che, oltre al codice esteso generato, venga archiviato anche: Prodotto, Cod.Prodotto, Prezzo, Cod.Prezzo, Cliente, Cod.Cliente, Fornitore, Cod.Fornitore. Come ho spiegato, i 4 campi relativi ai Cod. vengono già archiviati. Mi chiedevo come fare ad archiviare anche gli altri 4 senza creare nuove caselle combinate nella maschera, oppure se proprio devo crearne delle nuove che almeno siano controllate dalle prime.
    Chiedo ancora scusa se ho fatto confusione.
  • Re: Da tabelle-legenda a maschera e da maschera a nuova tabella

    Ho la sensazione che tu confondi le tabelle con le query (query di selezione). Quando ti ho accennato alla normalizzazione, intendevo dire che devi scomporre le tabelle nella maniera più compatta e omogenea possibile...non saprei spiegarmi meglio se non elenchi TUTTI i campi di TUTTE le tabelle.
    Compito della query di selezione sarà poi quello di ricostruire una visualizzazione tabellare (foglio dati) come vuoi tu.
    Potresti farmi 2-3 esempi di Prodotti?
    Un Prodotto ha sempre e soltanto un solo Fornitore? Oppure il "Prosciutto Parma 48 mesi" te lo può fornire sia Tizio, Caio o Sempronio?
    Le relazioni sono importantissime in tutto il tuo quadro organizzativo.
    Devi assolutamente elencare tutti i campi di tutte le tabelle...anche se ti sembra che li stai ripetendo più volte.
  • Re: Da tabelle-legenda a maschera e da maschera a nuova tabella

    Da quel che ho capito vuoi creare una vista materializzata.

    Secondo me, ti conviene aprire un thread nella sezione dedicata ad access in cui chiedi come si creano viste materializzate (sempre che sia possibile, perché ad esempio con mysql non si può).
  • Re: Da tabelle-legenda a maschera e da maschera a nuova tabella

    Per dvaosta: che cos'è una vista materializzata?

    Questo thread nasce da un precedente thread nella sezione Access. ANZARD ha un evidente problema di normalizzazione da risolvere. Per questo motivo gli ho suggerito di aprire questo thread in questa sezione.
  • Re: Da tabelle-legenda a maschera e da maschera a nuova tabella

    Le viste materializzate sono delle viste memorizzate come tabelle fisiche "autoaggiornanti" (ovvero se aggiorni le tabelle di partenza si aggiorna anche la vista), per cui sono più efficienti se devi effettuare molti accessi alla vista perché non devi rieseguire la select che la definisce, mentre ci rimetti se fai molte modifiche alle tabelle di partenza.
    In mysql puoi emularle costruendoti a mano la tabella e settando opportuni trigger su quelle di partenza, ma non sono supportate nativamente, in access non so.

    Riguardo la normalizzazione, il post iniziale senza accapi è abbastanza difficile da leggere e soprattutto contiene informazioni sulle maschere che per ora non ci interessano. Comunque sia, quella che secondo me è la vista (ovvero la tabella Articoli in versione estesa) è ovviamente non normalizzata, ma ci sta proprio perché è una vista.
    Riguardo le tabelle legenda, non capisco l'utilità della tabella dei prezzi ma comunque mi sembrano normalizzate.

    In conclusione, secondo me una possibile soluzione sarebbe avere la tabella Articoli ridotta (solo con i codici) ed eventualmente una vista che la estenda. Bisogna vedere se conviene.
  • Re: Da tabelle-legenda a maschera e da maschera a nuova tabella

    Vista materializzata: non ne ho mai sentito parlare in Access.
  • Re: Da tabelle-legenda a maschera e da maschera a nuova tabella

    OsvaldoLaviosa ha scritto:


    Vista materializzata: non ne ho mai sentito parlare in Access.
    Puoi partire da qui:

    Tipi di viste
Devi accedere o registrarti per scrivere nel forum
8 risposte