Newsgroup: it.comp.appl.access
Titolo: Tabelle e maschere

Salve a tutti,
comincio subito con lo scusarmi perchè il quesito che vi posto è più o meno
il solito ma, nonostante le mie ricerche nell'archivio del vostro newsgroup
e in vari manuali, non sono risucito ancora a risolvere il seguente
problema:
Vorrei creare un db per la catalogazione di libri. Ho pensato di fare 3
tabelle, una per AUTORI una per IL LIBRO e una per ARGOMENTI.
tblAUTORI
-------------
idautore                chiave primaria
nome
cognome
tblLIBRO
-----------
idlibro        chiave primaria
idtema        chiave secondaria
idautore     chiave secondaria
titolo
anno
ecc.
tblARGOMENTI
------------
idtema        chiave primaria
idlibro        chiave secondari
tema
Il senso sarebbe di voler ottenere la seguente situazione:
1) per un autore ci possono essere piu libri (un autore può scrivere più
libri)
2) per un libro ci possono essere piu argomenti (un libro può parlare di più
cose)
le relazioni sono
tblAUTORE 1----°° tblLIBRO (idautorePK---idautore)
tblLIBRO 1----°° tblARGOMENTI (idlibroPK---idlibro)
Il problema sorge quando immetto i valori in una maschera(TBLAUTORE) con
sottomaschere (tblLIBRO e tblARGOMENTI) dandomi messaggi di errore (i valori
di certi campi non possono essere aggiornati, oppure quando tento di
immetere "argomenti" mi dice che non relazione con gli "autori").
Questo in sunto. So che è un problema "basilare", qualcosa di elementare mi
sfugge. C'è un'anima pia che potrebbe indicarmi una soluzione? Forse dovrei
creare una quarta tabella in modo da "spezzare" la catena di relazioni
1----°° che lega tutte e tre le mie tabelle?
vi ringrazio
Pippo

 cose)
Ma anche: 3) per un libro ci possono essere più autori... o no?
In ogni caso dovresti costruire:
tblTEMI
------------
idtema        chiave primaria
tema
e
tblARGOMENTI
------------
idtema        chiave primaria
idlibro        chiave primaria
HTH, Alessandro.

 ha scritto nel messaggio
news:9v650b$prp$1...@serv1.albacom.net...

Come tu dici, e come ha ribadito nel suo messaggio Alessandro Nazzani, un
autore può scrivere più libri, ma un libro può essere scritto da più autori,
così come un libro può contenere più argomenti, ma un argomento può essere
contenuto su più libri.
Da quanto sopra scritto, le tabelle tblLIBRO e tblAUTORI e le tabelle
tblLIBRO e tblARGOMENTI non saranno legate da relazioni uno-a-molti (come
stai tentando di fare te) ma da relazioni molti-a-molti.
In Access non esiste un modo per definire direttamente una relazione
molti-a-molti tra due tabelle, ma devi farlo tramite una terza tabella che
risulterà in relazione uno-a-molti con le altre due tabelle.
Insomma, avrai bisogno di crearti 5 e non 3 tabelle, le quali avranno una
struttura simile a questa:
tblAUTORI
-------------
idautore                chiave primaria
nome
cognome
tblARGOMENTI
------------------
idtema        chiave primaria
tema
tblLIBRO
-----------
idlibro        chiave primaria
titolo
anno
ecc.
tblLibroAutori
---------------
idlibro        chiave primaria
idautore     chiave primaria
ovvero la chiave primaria di questa tabella risulta essere composta
dall'insieme dei due campi
tblLibroArgomenti
-------------------
idlibro        chiave primaria
idtema       chiave primaria
ovvero la chiave primaria di questa tabella risulta essere composta
dall'insieme dei due campi.
Ti consiglio di eseguire l'Autocomposizione Ricerca... per i campi idlibro,
idautore e idtema delle tabelle tblLibroAutori e tblLibroArgomenti: ti
aiuterà molto nella creazione, gestione e leggibilità delle maschere.
A questo punto tra le tabelle tblLIBRO e tblLibroAutori devi creare una
relazione uno-a-molti in base ai campi idlibro.
Tra le tabelle tblLIBRO e tblLibroArgomenti devi creare una relazione
uno-a-molti in base ai campi idlibro.
Tra le tabelle tblAUTORI e tblLibroAutori devi creare una relazione
uno-a-molti in base ai campi idautore.
Tra le tabelle tblARGOMENTI e tblLibroArgomenti devi creare una relazione
uno-a-molti in base ai campi idtema.
Per tuttu e 4 le relazioni uno-a-molti aggiungi l'integrità referenziale con
l'opzione Elimina record correlati a catena.
Avendo così definita la struttura delle tabelle ed il modo in cui esse sono
in relazione, puoi pensare a come organizzare le maschere che aggiornano le
5 tabelle.
Ritengo che non ci sia molto da dire circa le due maschere con cui
aggiornare le tabelle tblAUTORI e tblARGOMENTI.
Per l'aggiornamento delle altre tre tabelle ti consiglio di usare la tecnica
delle maschere/sottomaschere: ovvero, creati una maschera principale che
abbia come origine record la tabella tblLIBRO e che contenga anche due
sottomaschere con visualizzazione a Maschere continue, la prima che avrà
come origine record tblLibroAutori e la seconda sottomaschera che avrà come
origine record la tabella tblLibroArgomenti.
Spero di essere stato chiaro e di non aver dimenticato qualcosa. :)
--
Roberto
---------------------------------------------
il Sito Comune di it.comp.appl.access:
http://www.sitocomune.com
---------------------------------------------

 ha scritto nel messaggio
news:9v7des$39ng$1...@stargate1.inet.it...

Grazie Roberto e a tutti voi! Proverò sicuramente come mi hai suggerito tu.
Sapevo che il problema era "basilare". Forse riuscirò finalmente a capire
veramente come funziona il modello relazionale.
A presto (spero con buone notizie)
Pippo

Pippo
Ciao mi intrometto in questa discussione
perchè vorrei chiedervi se utilizzando una maschera non associata posso
salvare i valori dei controlli direttamente nelle tabelle di appartenenza
vedi controllo nome nella maschera non associata tab autori campo nome...
sbaglio?! dico una sciocchezza?!
Ciao Tiziano
--------------------------------
Inviato via 
http://usenet.iol.it
 

Pippo
Ciao mi intrometto in questa discussione



Mi sembra abbastanza difficile realizzare una tecnica maschere/sottomaschere
con maschere non associate.
Potresti però ipotizzare un sistema di maschere sincronizzate non associate
che si aprono in cascata a seconda degli aggiornamenti da effettuare; se
però sei alle prime armi non sarà proprio una passeggiata.


 Ciao Tiziano


 wrote in message
9vamjr$2q7k$1...@stargate1.inet.it...

Ciao,
 penso di aver risolto il problema... ho inserito una casella combinata non
associata nella form tblLibroAutori e tblLibroArgomenti, visualizzate come
maschere continue.
in più ho creato un pulsante per l'immissione dei dati relativi all'autore e
al tema aprendo le forms tblARGOMENTI e tblAUTORI, sui controlli ho posto un
me.refresh così una volta chiusa la maschera posso vedere il valore nel
controllo non associato...
Funziona...
Suggerimenti?!
Ciao Tiziano


Visto che hai risolto il problema in maniera che ti soddisfa, qualsiasi
suggerimento sarebbe pleonastico. ;-)



Ciao è la prima volta che provo a svolgere un problema che non ho sottoposto
io al NG, mi infonde coraggio e forse potrò progredire nella conoscenza...
Ciao Tiziano

 Ciao Tiziano
L'importante è cominciare a caminare da soli; poi vedrai che imparerai anche
a correre. ;-)


risolto....
  DoCmd.Save acform, "tblAutori"
in questo modo salvo il valore appena immesso e lo visualizzo nel controllo
non associato...
 ciao Tiziano

Roberto
Caro Roberto,
ancora grazie mille per il preziosissimo aiuto.
Con autocomposizione ricerca ho impostato i seguenti valori:
tblLibroautori
-------------------
IDLibro (PK, FK) SELECT Libro.IDLibro, Libro.Titolo FROM Libro;
IDAutore (PK, FK) SELECT Autori.IDAutore, Autori.Nome, Autori.Cognome FROM
Autori;
tblLibroargomenti
-------------------
IDlibro (PK, FK) SELECT Libro.IDLibro, Libro.Titolo FROM Libro;
IDTema (PK, FK) SELECT Agomenti.IDtema, Agomenti.tema FROM Agomenti;
Infine ho stabilito le relazioni fra le tabelle come tu mi avevi indicato.
Sciolto il problema della relazioni "molti-a-molti" rimane quello delle
maschere. Ho provato a fare come dicevi tu: ho creato una maschera con
origine record tblLIBRO e due sottomaschere con origine record una
tblLibroautori e l'altra tblLibroargomenti.
Per le tabelle tblAUTORI e tblARGOMENTI, ho pensato di aggiungere due
pulsanti vicino alle sottomaschere (tblLibroautori  tblLibroargomenti)  in
modo che aprissero le maschere AUTORI e ARGOMENTI rispettivamente, per
aggiungere nuovi autori e argomenti non in elenco. Sembra funzionare (ma
vorrei una tua opinione a riguardo), anche se vorrei visualizzare, ad
esempio, il nome e cognome dell'autore non l'id (ma questo forse c'è la
faccio risolverlo da solo, certo se ti avanza qualche suggerimento... ;).
Il problema ora, un classico per voi immagino, è l'aggiornamento dei record
non in elenco: anche se aggiungo un autore od un argomento tramite
l'apertura della maschere con il pulsante, l'elenco nella maschera iniziale
non viene aggiornato. So che si tratta di un piccolo codice (non so se VB o
sia risolvibile con una macro che prefeirei evitare) ma non riesco a
"trovarlo". Questo "codicello" dovrebbe aggiornarmi  l'elenco alla chiusura
delle maschere relative a tblAUTORI e tblARGOMENTI. (o forse sbaglio?)
Ho provato a guardare tra le faq, dove ho trovato una tua (credo)
spiegazione su come aggiungere automaticamente una voce non presente nella
list box di un campo associato. A parte il fatto che a me non servirebbe
niente di così raffinato (sto semplicemente tentando di organizzare la
bibliografia per la mia tesi in maniera decente), mi sembra che ci siano
delle differenze tra il mio campo e quello dell'esempio (a cominciare dal
fatto che nel mio caso non posso digitare nulla nel campo associato ma solo
scegliere dall'elenco, questo in soldoni).
Per brevità ho omesso tutta la parte iniziale del mio msg e della tua
risposta.
Detto per inciso la mia laurea è in lettere, quindi spero perdonerete
eventuali cavolate "informatiche" che la mia mente sconvolta partorisce dopo
tanto pc :>
Ancora grazie a te e ad Alessandro Nazzani,
Pippo

 ha scritto nel messaggio
news:9vl8u7$ena$1...@newsfeed.cineca.it...

Ciao Tiziano,
se sei di Trieste ci conosciamo forse.
Scusate ma prima di inviare il mio ultimo posto non avevo letto i nuovi.
UPS!
Pippo

 Pippo
In bocca al lupo per la tua laurea in lettere; sono dell'avviso che di
persone che si dedichino agli studi umanistici ce ne sia veramente bisogno:
penso che ce ne siano rimasti troppo pochi.



Grazie ma forse siamo anche troppi :)

 Grazie ma forse siamo anche troppi :)
Non so se siete tanti o pochi, ma cercate di fare un po' più di rumore: che
il livello culturale si sta abbassando è un dato di fatto ineluttabile, ed a
mio avviso siamo arrivati ad un livello pericoloso e non più accettabile.
Fate in modo che la cultura umanistica non sia più un fatto di elite, così
come si sta cercando di fare per l'acculturamento tecnologico.
