Newsgroup: it.comp.appl.access
Titolo: Relzioni N ad M

scusate raga, qualcuno sa come far per gestire le relazioni N ad M?
Io so che bisogna utilizzare una tabella aggiuntiva che collghi le chiavi
primarie di tutti gli elementi in relazione, ma il mio problema è come f
accio, inserendo i dati nelle 2 tabelle in relazione, a inserire
automaticamente le 2 chiavi primarie nella tabella ausiliaria?
Grazie, è davvero importante!

 ha scritto nel messaggio
news:PM8Oa.5873$79.1...@tornado.fastwebnet.it...

Non so cosa tu intenda con una relazione N ad M, ma da ciò che hai scritto
sembrerebbe che ti riferisci ad una relazione molti-a-molti.
In effetti, una relazione molti-a-molti tra due tabelle si realizza tramite
una terza tabella che contiene le chiavi primarie delle altre due e che è in
relazione uno-a-molti con esse.
Se hai una tabella Libri che abbia una struttura simile a questa:
IDLibro    Contatore e chiave primaria
Titolo        Testo
ecc. ecc.
Se hai una tabella Autori che abbia una struttura simile a questa:
IDAutore         Contatore e chiave primaria
NomeAutore   Testo
ecc. ecc.
Per creare una relazione molti-a-molti tra queste due tabelle devi crearti
una tabella chiamata LibriAutori che abbia la seguente struttura:
IDLibAut    Contatore e chiave primaria
IDLibro       Numerico
IDAutore    Numerico
Metti questa tabella in relazione uno-a-molti con la tabella Libri in base
ai campi IDLibro.
Metti questa tabella in relazione uno-a-molti con la tabella Autori in base
ai campi IDAutore.
Creati una maschera principale che abbia come origine record la tabella
Libri, con la quale aggiorni appunto tale tabella; in questa maschera
inserisci anche una sottomaschera con visualizzazione a maschere continue
che abbia come origine record la tabella LibriAutori; in tale sottomaschera
associa al campo IDAutore della tabella LibriAutori una casella combinata
che abbia come origine riga la tabella Autori.
Così facendo, per ogni libro visualizzato nella maschera principale potrai
visualizzare ed aggiornare (selezionandoli dalla casella combinata) i
relativi autori, aggiornando così di conseguenza la tabella LibriAutori.
-- 
Roberto
---------------------------------------------
il Sito Comune di it.comp.appl.access:
http://www.sitocomune.com
---------------------------------------------

non l'ho ancora provata, ma la soluzionemi sembra ottima!
grande e grazie
cmq si N ad M = Molti a Molti
1 ad N = uno a molti ecc..

 ha scritto nel messaggio
news:27aOa.5956$79.1...@tornado.fastwebnet.it...

Visto che sono convenzioni, l'importante è mettersi d'accordo. :-)


Domanda...
Ho provato la tua soluzione e non capisco ancora come ho fatto a non
pensarci prima! È ottima!
Ma se l'autore di quel libro nonè ancora presente nella tabella autori?
Mentre l'utente inserisce il nuovo libro che fa lascia e va ad inserire il
nuovo autore?

 wrote in message
3wdQa.6707$sj6.1...@tornado.fastwebnet.it...

Non precisamente: diciamo che fa una piccola divagazione durante la quale
aggiorna la tabella Autori.
Una soluzione potrebbe essere quella di impostare a Si la proprietà "Solo in
elenco" della casella combinata dalla quale selezioni l'autore.
A fronte dell'evento "Su non in elenco" della casella combinata generati una
routine VBA che aggiorna appunto la tabella autori: quando uscirai da tale
routine farai un requery della casella combinata e sarai ora di selezionare
anche l'autore appena inserito nella tabella Autori. Così facendo basterà
che digiti il nome del nuovo autore nella casella combinata per "scatenare"
una procedura per l'inserimento di un nuovo autore nella tabella Autori.
La stessa routine la puoi generare a fronte dell'evento  "Su doppio clic"
della casella combinata, così, quando vorrai aggiornare la tabella Autori
mentre stai aggiornando la tabella Libri, sarà sufficiente fare un doppio
clic sulla casella combinata.
Se vuoi vedere un esempio di quanto sopra, vai sul Sito Comune (link qui
sotto) e nella Sezione Forms leggi la FAQ intitolata "Si può aggiungere un
record alla tabella che è origine riga di una casella combinata senza usare
una maschera?".
