Relazione molti-a-molti

di
Anonimizzato14168
il
17 risposte

Relazione molti-a-molti

Da utente occasionale continuo a perdermi in bicchieri d'acqua
Non riesco a impostare correttamente una relazione molti a molti

Ho una tabella Codici, con i seguenti campi: ID, Codice, ch1, ch2...
Ho una tabella Fornitori, con i seguenti campi: ID_Fornitore, Fornitori

Ho creato una tabella Collega, che ha i seguenti campi: ID, ID_Cod, ID_Fornitore

Ho una maschera, dove vorrei inserire una casella combinata, e per ogni codice associare un fornitore (di lavorazioni).
Ho inserito la casella, e ho detto che l'origine del controllo è la tabella collega (ho provato rispettivamente a collegare i tre campi): nel menu a tendina non mi appare nessun nome di fornitore.
Ho impostato come origine del controllo la tabella Fornitori (rispettivamente con i due campi): nulla.

Lo so che l'errore e' banale, ma non so dov'e'...
Grazie èer il vs eventuale aiuto
M.

17 Risposte

  • Re: Relazione molti-a-molti

    bobparr ha scritto:


    Ho una tabella Codici, con i seguenti campi: ID, Codice, ch1, ch2...
    Ho una tabella Fornitori, con i seguenti campi: ID_Fornitore, Fornitori
    Ho creato una tabella Collega, che ha i seguenti campi: ID, ID_Cod, ID_Fornitore
    Fin qui OK.

    bobparr ha scritto:


    Ho una maschera, dove vorrei inserire una casella combinata, e per ogni codice associare un fornitore (di lavorazioni).
    Non dici su quale tabella poggia questa maschera.

    Il resto non è chiaro.
  • Re: Relazione molti-a-molti

    bobparr ha scritto:


    Ho una maschera, dove vorrei inserire una casella combinata, e per ogni codice associare un fornitore (di lavorazioni).
    Non dici su quale tabella poggia questa maschera.

    La maschera poggia sulla tabella Codici.

    Il resto non è chiaro.[/quote]

    In questa maschera ho tutti i campi relativi alla tabella Codice (un sacco di campi) organizzati in forma esteticamente leggibile.
    Ad ogni codice volevo associare un fornitore lavorazione, quindi nella maschera ho inserito una casella combinata (anzi, in realta' me ne servono piu' di una, perchè i fornitori possono essere uno o piu').

    Vorrei che ad ogni codice che richiamo vengano associati i fornitori che lo lavorano (i nomi dei fornitori sono stati inseriti nella tabella Fornitori).

    La combobox a che origine controllo deve fare riferimento, per fare cio'?
  • Re: Relazione molti-a-molti

    bobparr ha scritto:


    Ho una tabella Codici, con i seguenti campi: ID, Codice, ch1, ch2...
    Ho una tabella Fornitori, con i seguenti campi: ID_Fornitore, Fornitori
    Ho creato una tabella Collega, che ha i seguenti campi: ID, ID_Cod, ID_Fornitore
    Inizialmente ho accettato passivamente le relazioni, ma non mi è chiaro cosa rappresenta la tabella Codici.

    bobparr ha scritto:


    In questa maschera ho tutti i campi relativi alla tabella Codice (un sacco di campi)
    Che vuol dire "un sacco di campi"? Perchè?

    bobparr ha scritto:


    Ad ogni codice volevo associare un fornitore lavorazione, quindi nella maschera ho inserito una casella combinata (anzi, in realta' me ne servono piu' di una, perchè i fornitori possono essere uno o piu').
    Non è chiaro di pari passo con il primo punto.
  • Re: Relazione molti-a-molti

    Inizialmente ho accettato passivamente le relazioni, ma non mi è chiaro cosa rappresenta la tabella Codici.
    ***
    La tabella Codici rappresenta l'insieme dei Codici venduti, ognuno con le proprie caratteristiche. Qui non ci interessa entrare nel dettaglio, non credo sia funzionale al problema affrontato.
    ****

    Che vuol dire "un sacco di campi"? Perchè?
    ***
    Vuol dire che la maschera mi serve per organizzare tutti i miei dati su una schermata sola. Immagina una tabella excel di una biblioteca, dove nelle colonne trovi: autore/titolo/editore/pag... e nelle riighe trovi tutti i libri che possiedi. E' la mia tabella Codici.
    La maschera mi permette di vedere tutti questi campi (colonne) in una unica schermata. Nulla di trascendentale: anzi, è un classico utilizzo di Access disfunzionale.

    bobparr ha scritto:


    Ad ogni codice volevo associare un fornitore lavorazione, quindi nella maschera ho inserito una casella combinata (anzi, in realta' me ne servono piu' di una, perchè i fornitori possono essere uno o piu').
    Non è chiaro di pari passo con il primo punto.[/quote]
    ***
    Stando sull'esempio della libreria, vorrei inserire nella maschera un campo (che vado a compilare alla bisogna) dove riporto il nome del negozio dove ho comprato questo libro (il mio Fornitore).

    Nel mio caso specifico, i fornitori possono essere piu' di uno: il codice Pippo subisce una lavorazione dal fornitore Gianni e una lavorazione dal fornitore Gustavo. Gianni e Gustavo sono inseriti in una tabella fornitori, e con l'uso di una (in questo caso due) casella combinata, richiamando il codice Pippo, posso inserire che i fornitori sono Gianni e Gustavo.

    Meglio non saprei come spiegarmi.
  • Re: Relazione molti-a-molti

    bobparr ha scritto:


    Che vuol dire "un sacco di campi"? Perchè?
    ***
    Vuol dire che la maschera mi serve per organizzare tutti i miei dati su una schermata sola. Immagina una tabella excel di una biblioteca, dove nelle colonne trovi: autore/titolo/editore/pag... e nelle riighe trovi tutti i libri che possiedi. E' la mia tabella Codici.
    Tutti quei campi non li gestirei mai tutti insieme, ma li suddividerei su più tabelle. Hai toccato un tasto "biblioteca" che mi riguarda molto da vicino...troppi campi andrebbero normalizzati...per biblioteca saprei come...non saprei per il tuo caso specifico.

    bobparr ha scritto:


    La maschera mi permette di vedere tutti questi campi (colonne) in una unica schermata. Nulla di trascendentale: anzi, è un classico utilizzo di Access disfunzionale.
    Non so cosa sia un "classico utilizzo di Access disfunzionale".

    bobparr ha scritto:


    il codice Pippo subisce una lavorazione dal fornitore Gianni e una lavorazione dal fornitore Gustavo
    Questo giustificherebbe la relazione Codici molti-a-molti con Fornitori: OK.

    bobparr ha scritto:


    Gianni e Gustavo sono inseriti in una tabella fornitori
    OK

    bobparr ha scritto:


    e con l'uso di una (in questo caso due) casella combinata, richiamando il codice Pippo, posso inserire che i fornitori sono Gianni e Gustavo.
    Qua c'è qualcosa che non quadra. Perchè 2 caselle combinate? Dove puntano?
    Per chiamare Pippo e portarti appresso Gianni e Gustavo dovresti servirti del IDCollega, ma per utilizzarlo da un'altra parte...che non ho capito...fuori dal quadro tabelle che avresti elencato.
    Qui per me è buio totale.
  • Re: Relazione molti-a-molti

    bobparr ha scritto:


    il codice Pippo subisce una lavorazione dal fornitore Gianni e una lavorazione dal fornitore Gustavo
    Questo giustificherebbe la relazione Codici molti-a-molti con Fornitori: OK.

    bobparr ha scritto:


    Gianni e Gustavo sono inseriti in una tabella fornitori
    OK

    bobparr ha scritto:


    e con l'uso di una (in questo caso due) casella combinata, richiamando il codice Pippo, posso inserire che i fornitori sono Gianni e Gustavo.
    Qua c'è qualcosa che non quadra. Perchè 2 caselle combinate? Dove puntano?
    Per chiamare Pippo e portarti appresso Gianni e Gustavo dovresti servirti del IDCollega, ma per utilizzarlo da un'altra parte...che non ho capito...fuori dal quadro tabelle che avresti elencato.
    Qui per me è buio totale.[/quote]
    **********
    Dove puntano (dove dovrebbero puntare) e' la domanda che ho cercato di fare qui nella prima mail , ma forse non è passata.

    Allora, invertiamo l'ordine.

    Ho una tabella con i dati di tanti, tanti libri (e' la mia tabella Codici, con tanti campi, che lo so che andrebbero gestiti con tabelle diverse, ma uso Access in modo errato).
    Per organizzare graficamente tutti questi dati, uso una maschera (e' la mia maschera).

    Tuttavia, voglio aggiungere una informazione in piu': dove compro i libri.
    Allora creo un'altra tabella (la mia tabella Fornitore) e inserisco i nomi delle librerie: Feltrinelli, Rizzoli, ...

    Ma c'e' una cosa in piu': i libri non solo li compro, ma li presto anche.
    Io i libri li compro (dalle librerie) e li presto (alle librerie), perche' mi va di fare cosi: li compro da Feltrinelli e li voglio riprestare a Feltrinelli.

    Come faccio (con caselle combinate da utilizzare nella maschera di cui sopra) a collegare ai libri (cioe' ai miei Codici) il posto dove li ho comprati e le librerie a cui li ho prestati?

    Secondo me torniamo alla prima mail che ho mandato.
  • Re: Relazione molti-a-molti

    L'ultima descrizione è leggermente più chiara. Quella iniziale era totalmente ermetica rispetto a quest'ultima. A me però non quadrano alcune cose...domande:
    1) Tu hai soltanto una copia di "Gabriel Garcia Marquez: Cent'anni di solitudine"? Oppure puoi avere molte copie?
    2) Se al punto 1) hai molte copie, può succedere che hai comprato da molti Fornitori e prestato a molti Fornitori indiscriminatamente da dove hai comprato?
  • Re: Relazione molti-a-molti

    Ciao,
    grazie per il tempo che mi stai dedicando, intanto.

    Ho soltanto una copia di Cent'anni di solitudine.
  • Re: Relazione molti-a-molti

    Per me hai bisogno di un campo IDFornitore in tabella Libri (o Codici) che sta ad indicare da dove lo hai comprato.
    Riguardo i Prestiti mi devi dire se vuoi solo avere un memorandum tanto per, oppure desideri avere traccia storica di cosa e a chi hai prestato.
    Nel primo caso potresti avere un secondo campo IDLibreria dove indichi dove si trova il Libro prestato. Nel caso non sta prestato a nessuno, prevedi un valore fittizio Libreria=0 o Null. Non ti serve la tabella di congiunzione Collega.
    Nel secondo caso devi avere la tabella di congiunzione Collega con i seguenti campi:
    IDCollega
    DataPrestito
    IDCodice
    IDLuogoPrestito (equivale a IDFornitore...ma comprendi bene che qui ha un significato diverso)
    DataRestituzione

    ...sui due campi Data non mi sento sicurissimo...mi sembra comunque marginale...
  • Re: Relazione molti-a-molti

    [quote="OsvaldoLaviosa"]Per me hai bisogno di un campo IDFornitore in tabella Libri (o Codici) che sta ad indicare da dove lo hai comprato.
    ****
    Effettivamente bastava questo, grazie.
    M.
  • Re: Relazione molti-a-molti

    Ora i nodi vengono al pettine...

    Riassumo:
    ho una tabella con tanti campi (ID, cliente, codice, descrizione... + altri 20). Questa tabella la gestisco tramite una maschera (motivi estetici), dove vedo tutti i campi in essa presenti, e la aggiorno direttamente.

    Ogni cliente ha tanti codici; un codice ha un solo cliente.

    Per evitare inserimenti errati, il campo "CLIENTE" poggia su una seconda tabella, non collegata alla prima, dove con una casella combinata posso selezionare il "possessore" di quel codice (i campi di questa tabella sono 2: id_cliente (contatore), cliente (testo).

    Problema: vorrei fare una query che mi permetta, indicando il [cliente], di estrarre tutti i codici di questo tizio. Tuttavia, non riesco a farlo perche' nella creazione guidata query mi si dice che le due tabelle devono essere in relazione.

    Poiche' uso access di rado, e ci metto 1 settimana per ricordarmi le basi, e 1 minuto per dimenticarle - dopo che ho fatto quello che dovevo - cosa dovrei fare per risolvere tale situazione?
  • Re: Relazione molti-a-molti

    Come si chiama la tabella? Oppure di cosa parla?
    Io ho perso il filo della discussione. Non è chiaro se vuoi contabilizzare storicamente tutti i Codici per ogni Cliente oppure no. Nel primo caso hai una relazione Clienti molti-a-molti con Codici. Nel secondo Clienti uno-a-molti con Codici.
  • Re: Relazione molti-a-molti

    Non è chiaro se vuoi contabilizzare storicamente tutti i Codici per ogni Cliente oppure no. Nel primo caso hai una relazione Clienti molti-a-molti con Codici. Nel secondo Clienti uno-a-molti con Codici.[/quote]

    Voglio estrarre tutti i codici per ogni cliente.
    Ma non è in qs caso una relazione UNO (il cliente) a MOLTI (i codici)?
  • Re: Relazione molti-a-molti

    Dipende.
    Il Cliente Osvaldo Laviosa ha associati i seguenti molti libri:
    - Cent'anni di solitudine
    - La divina commedia
    - Il Decameron
    - I promessi sposi

    Il cliente Mario Rossi ha associati i seguenti libri:
    - I miserabili
    - La Gerusalemme liberata
    - Così parlò Bellavista

    Domani Osvaldo Laviosa restituisce "La divina commedia" e "Il Decameron".
    DopoDomani Mario Rossi restituisce "La Gerusalemme liberata" e prende "Il Decameron".
    A questo punto in cui Mario Rossi possiede "Il Decameron", tu vuoi che venga ricordato da qualche parte che "Il Decameron" è passato per le mani di Osvaldo Laviosa oppure no?
Devi accedere o registrarti per scrivere nel forum
17 risposte