Newsgroup: it.comp.appl.access
Titolo: Relazioni.Riempire tabella (1 a molti )

Ho 3 tabelle
Tabella:  Tb_Argomenti
campo:   Argomento
------------------------------------------------------
Tabella: Tb_Libri
campi:   ID_libro (contatore chiave primaria)
              Titolo
              Autore
------------------------------------------------------
Tabella: Tb_argom_libri
              id_libro
              argomento
------------------------------------------------------
Ad ogni libro corrisponde più di un argomento.
Problema:
In sintesi devo:
Per ogni libro (ID_libro), devo avere una MascherA
con tutti gli argomenti (della Tb_Argomenti),  con
a fianco una casella di controllo.
Solo gli argomenti di tutte le caselle spuntate, devono
essere messe dentro una nuova tabella (non so se
Tb_argom_libri va bene).
Devo poter vedere gli argomenti spuntati per ogni libro.
Per ogni libro, alla riapertura della MascherA devo
riavere sempre tutti gli argomenti e con memorizzati
i precedenti valori spuntati.
Al momento:
io inserisco i dati in una tabella (molti)
di una relazione, tramite casella combinata.
Utilizzo una relazione 1 a molti tra:
Tb_Libri  e  Tb_argom_libri
e una
Maschera Base con origine Tb_libri
dove vi è una sottomaschera con origine maschera2
a sua volta con origine Tb_argom_libri .
Inserisco, tramite una casella combinata. (origine
Tb_Argomenti) per ogni libro, i vari argomenti
trattati.
Ora, invece di usare una casella combinata, che devo di volta
in volta riselezionare per poi riscegliere l'argomento
da inserire, ripetendo ciò, per ogni argomento nuovo;
devo creare un'unica maschera, specifica per ogni
ID_libro (cioè per ogni libro) in cui visualizzo tutti
gli argomenti e con a fianco una casella di controllo, in modo
che, posso selezionare più argomenti in una sola volta.
Tali argomenti selezionati, saranno poi inseriti
in automatico, dentro la Tb_argom_libri e
ogni volta che cambio libro, la maschera (con le caselle di
controllo) deve farmi rivedere spuntate i libri che
avevo selezionato in precedenza e quindi già inseriti dentro
la Tb_argom_libri.
Ringrazio anticipatamente
By By

 ha scritto nel messaggio
news:39BB3AA1...@usa.net...

Sei in un caso di relazione molti_a_molti.
La tb_Argomenti strutturala:
Campi:        Id_Argomento    Contatore, chiave primaria
                    Argomento
La tabella: Tb_argom_libri strutturala:
Campi:            Id_libro
                         Id_Argomento
e l'insieme dei due campi rappresentano la chiave primaria.
La tabella tb_Libri è in relazione uno-a-molti con Tb_argom_libri  tramite
Id_libro; la tabella tb_Argomenti è in relazione uno_a_molti Tb_argom_libri
tramite Id_Argomento.
Creati una maschera (Maschera1) che abbia come origine record tb_Libri;
inserisci in Maschera1 una sottomaschera che abbia come origine record
Tb_argom_libri.
Nella sottomaschera il controllo che contiene Id_Argomento deve essere una
casella combinata che ha come origine riga una query basata su tb_Argomenti.
Il controllo sottomaschera di Maschera1 deve avere sia come "Collega campi
secondari" che come "Collega campi master" Id_libro.
Roberto

ok funziona tutto
thank you
Solo che, nella sottomaschera (collegata alla tb_argom_libri),
l'inserimento degli argomenti (selezionabili da casella combinata),
è possibile, solo record per record.
Dovrei, invece, inserire in tale tb_argom_libri, più argomenti
contemporaneamente.
come da post:
Invece di usare una casella combinata, devo creare un'unica
maschera, specifica per ogni ID_libro (cioè per ogni libro)
in cui visualizzo tutti gli argomenti e con a fianco una casella di
controllo, in modo che, posso selezionare più argomenti in
una sola volta.
Tali argomenti selezionati (con segno di spunta), saranno poi
inseriti in automatico, dentro la Tb_argom_libri e ogni volta
che cambio libro, la
maschera (con le caselle di controllo) deve farmi rivedere
spuntate i libri che avevo selezionato in precedenza e quindi
già inseriti dentro la Tb_argom_libri.
By By


--
Roberto
---------------------------------------------
il sito comune di it.comp.appl.access:
http://members.xoom.it/it_db_access/
---------------------------------------------

 la sottomaschera con visualizzazione a Maschere continue.
n.b La maschera è già in modalità continua.
Ipotizzo, che serva un'altra maschera, in cui
ho tutti i miei argomenti, e poi (quelli spuntati) li ficco
dentro tale sottomaschera. (forse con un insert into?);
ma non so proprio come fare, anche perchè, tale
maschera di inserimento (colegata non so a cosa), deve inserire i dati
nel record del libro (id_libro) corrente.
Poi per il nuovo record, idem.
Quando la riapro, per ogni record, deve rivisualizzarmi tutti gli argomenti
con la spunta a fianco di quelli già inseriti.
By by

Ho ripostato, visto anche la velocità con cui crescono le intestazioni.
Nella prima parte, ho inserito, solo ai fini semplificativi
della spiegazione, le tabelle con una sola relazione,
anche se, giustamente, come hai postato tu, le relazioni
sono molti a molti (ammetto che non le ho mai usate e mi sfugge
se possono creare qualche problema; se non ricordo bene
da qualche libro ho letto che è meglio usarle quando è
proprio necessario; forse possono creare problemi se si setta male le
integrità referenziali o altro boo!!!).
Penso, che non incidano sul fatto di  poter inserire nella sottomaschera,
per ogni libro, in modo automatico, tutte gli argomenti con le caselle spuntate
(non ne sono certo).
ripost:
Inserire molti Record in una tabella molti
By By

 ha scritto nel messaggio
news:39BE76D5...@usa.net...

Forse ora ho capito cosa ti serve.
Presupposti:
1) Le tre tabelle sono strutturate come hai indicato tu nel tuo messaggio
del 10/9/2000 ore 09:38.
2) Tb_argom_libri è in relazione uno_a_molti con Tb_Argomenti tramite il
campo Argomento.
3) Tb_argom_libri è in relazione uno_a_molti con Tb_Libri tramite il campo
ID_libro.
4) Creati una maschera (Maschera1) che ha come origine record Tb_Libri e NON
inserirci alcuna sottomaschera.
5) Creati una query (Query1) che ha il seguente codice SQL:
SELECT Tb_argom_libri.ID_libro, Tb_argom_libri.Argomento,
IIf(IsNull([ID_libro])," ","*") AS Spunta
FROM Tb_argom_libri
WHERE (((Tb_argom_libri.ID_libro)=[Forms]![Maschera1]![ID_libro]));
6) Creati un'altra query (Query2) che ha il seguente codice SQL:
SELECT Query1.ID_libro, Tb_Argomenti.Argomento, Query1.Spunta
FROM Query1 RIGHT JOIN Tb_Argomenti ON Query1.Argomento =
Tb_Argomenti.Argomento;
7) Nell'intestazione di Maschera1 inserisci una casella di riepilogo non
associata che chiami elenco; deve avere tre colonne, di cui la prima non
deve essere visibile (metti a zero la lunghezza della prima colonna)
8) Come origine riga della casella di riepilogo metti Query2
9) A fronte dell'evento "Su corrente" di Maschera1 genera il seguente codice
VBA:
    Me![elenco].Requery
10) A fronte dell'evento "Dopo aggiornamento" del controllo Titolo di
Maschera1 genera il seguente codice VBA:
    DoCmd.DoMenuItem acFormBar, acRecordsMenu, acSaveRecord, , acMenuVer70
11) A fronte dell'evento "Su clic" della casella di riepilogo genera il
seguente codice VBA:
If Me![elenco].Column(2) = " " Then
Dim dbMio As Database
Dim rcdMio As Recordset
Set dbMio = CurrentDb()
Set rcdMio = dbMio.OpenRecordset("Tb_argom_libri")
rcdMio.AddNew
rcdMio![ID_libro] = Me![ID_libro]
rcdMio![Argomento] = Me![elenco].Column(1)
rcdMio.Update
rcdMio.Close
Me![elenco].Requery
End If
A questo punto apri Maschera1: nella casella di riepilogo ti compare
l'elenco di tutti gli aromenti, quelli spuntati del libro corrente hanno a
destra un asterisco; per spuntare altri argomenti "non spuntati" cliccaci
sopra con il mouse.
Spero che era quello che volevi.
Questa soluzione l'ho testata con un DB di prova e a me funziona.
Fammi sapere
Roberto

Solo per completezza, aggiungi ai presupposti:
3bis) la chiave primaria di Tb_argom_libri è l'insieme dei campi ID_libro e
Argomento


Argomento
Ok
By  By

 > prevedo ad opera finita, di togliere la stessa.
Scusa ho errato nello scrivere.
La frase finale č::
e se era possibile usare del codice, visto che
prevedo ad opera finita di togliere la barra dei menů
e lavorare solo con i pulsanti.
Quindi l docmd non lo posso piů riferire ai menů.
Riguardo i punti 1 e 2 precedentemente postati, farň
delle prove.
By By

 ha scritto nel messaggio
news:39C07264...@usa.net...

Mi dispiace, ma non sono in grado di darti una risposta; ho perň la certezza
che avrai una risposta se poni il quesito esplicitamente al NG.


 che avrai una risposta se poni il quesito esplicitamente al NG.
Per il momento provo ad approfondire la ricerca sull'help
e faq, eventualmente posterņ.