Newsgroup: it.comp.appl.access
Titolo: [Newbie]Problema banale...(credo)

Ciao a tutti.
Solo per curiosità mi sono messo a smanettare con Access.
All'università ho studiato solo SQL ma mai ho avuto a che fare con 
l'interfaccia grafica di un DBMS.
Il problemino è il seguente:
tanto per esercizio sto creando un piccolo db per organizzare i miei film.
ho quindi creato due tabelle: attori(cod,nome,cognome) e 
film(cod,nome,attore1,attore2,attore3)
NElla tabella film ho messo 3 campi per gli attori per memorizzare un 
massimo di 3 attori per film.
vorrei quindi fare i seguenti collegamenti
film.attore1->attori(cod)
film.attore2->attori(cod)
film.attore3->attori(cod)
Sono andato in Relazioni e, dopo aver selezionato i 3 campi attori1,2 e 3, 
ho trascinato la selezione sul campo cod della tabella attori.
Nonostante ciò, se provo ad effettuare una query non ho nessun risultato. 
Idem se provo a cliccare sul + che compare aprendo la tabella attori.
Come posso fare?
Grazie anticipatamente e scusate la banalità del problema
Roberto 

"Roberto" <gioe...@NOOOOOSPAMlibero.it> ha scritto nel messaggio 
news:6h1Zi.168299$U01.1...@twister1.libero.it...

Il problema lo puoi affrontare meglio se non 'prevedi' 3 o più posti per 
memorizzare gli attori.
Ti serve una tabella di appoggio che chiamerei 'partecipazioni' che lega il 
codice del film con un codice personaggio. (magari gli metti anche un campo 
che descrive quale ruolo ha avuto: attore,regista,sceneggiatore ....[fai una 
tabella anche per questi]).
A questo punto hai la possibilità di elencare tutte le partecipazioni che 
vuoi, e in certi films l'elenco dei nomi è davvero lungo.
Le relazioni saranno
[film]!idFilm  1==>oo  [partecipazioni]!idFilm
[attore]!cod  1==>oo  [partecipazioni]!idAttore
in una maschera che ha come origine [film] e sottomaschera che ha come 
origine [partecipazioni] puoi elencare tutti i nomi che ti servono.
La sottomaschera ha come origine una query che elenca idAttore e le varie 
info del soggetto, qualcosa el tipo
SELECT partecipazioni.IDpart, partecipazioni.film, partecipazioni.persona, 
persone.alias, partecipazioni.ruolo, partecipazioni.nota
FROM persone LEFT JOIN partecipazioni ON persone.IDart = 
partecipazioni.persona
WHERE ((Not (partecipazioni.IDpart) Is Null));
Tieni conto che io ho previsto anche un campo per l'alias (es. Al Pacino = 
Alfredo James Pacino) e un campo Nota dove ci metto il nome del personaggio 
interpretato!
Il campo alias e' in tabella attori e viene mostrato qui dalla query.
Nella sottomaschera, per velocizzare la scelta dei nomi, ho inserito il 
codiceAttore in una casella a discesa he mi aiuta con poche battute a 
trovare il soggetto giusto. Come RowSource della combo ho impostato:
SELECT persone.IDart, persone.[Nome] & " " & [cogn] AS chi
FROM persone
ORDER BY persone.[Nome] & " " & [cogn];
che mi inserisce il codice ma mi mostra la lista alfabetica dei nomi + 
cognomi.
Imposti colonna associata = 1, numero colonne = 2, larghezza colonne = 
0;10cm.
------------
L'operazione che fai tu, andrebbe rovesciata : Afferra il campo idAttore e 
lo trascino su Attore1, poi esegui per Attore2 e 3.
IvanDaBologna

"Roberto" <gioe...@NOOOOOSPAMlibero.it> ha scritto nel messaggio
news:6h1Zi.168299$U01.1...@twister1.libero.it...

Ciao Roberto.
La struttura che usi è sbagliata relazionalmente parlando.
Se ogni film può avere più attori ed ogni attore può appartenere a più Film
capisci bene che
relazioni 1-Molti non vanno bene...!
In questo caso serve una Relazione MOLTI-MOLTI ottenibile solo usando una 3°
Tabella.
Film(1)---->(00)tblDettaglio(00)<-----(1)Attori
Tabella Film
IdFilm(Counter chiave primaria)
Titolo
Tipologia
Periodo
AnnoPubblicazione
Regista
Trama
Tabella Attori
IdAttore(Counter chiave primaria)
Nome
Cognome
Tabella tblDettaglio
idFilm(numerico intero Lungo)   ]   ENTRAMBI
idAttore(Numerico intero lungo) ]   LEGATI IN CHIAVE PRIMARIA
Ora hai realizzato il legame e non sarai legato a solo 3 attori ma avrai la
possibilità di mettere N attori per
ogni Film...!
Chiaramente ci sono molte altre finezze da inserire, ad esempio la tabella
attori potrebbe divenire una tabella
Anagrafica e contenere sia gli attori che i Registi che i giornalisti
Critici...
Meglio ancora servirebbe una relazione tra le anagrafiche e le
Mansioni(sempre MOLTI - MOLTI) in quanto un attore
potrebbe anche essere il regista ed un Critico potrebbe essere un'attore e
Regista.... ecc....
Buon lavoro.
-- 
@Alex (Alessandro Baraldi)
---------------------------------------------------------------------------
http://www.sitocomune.com/
http://www.alessandrobaraldi.it
---------------------------------------------------------------------------

"Roberto" <gioe...@NOOOOOSPAMlibero.it> ha scritto nel messaggio 
news:6h1Zi.168299$U01.1...@twister1.libero.it...

Per prima cosa, ti invito a leggere le regole di comportamento per 
partecipare a questo NewsGroup, scritte nella sezione ICAA di 
www.sitocomune.com
Per il problema in particolare, a mio giudizio c'è un errore concettuale. 
Hai la tabella Attori e la tabella Film: se in quest'ultima tabella prevedi 
un solo campo Attore, puoi legare le 2 tabelle con una relazione 1 (Film) a 
Molti (Attori), così quando visualizzi un film, potrai vedere tutti i suoi 
Attori, fossero 2 o anche 20.
Ciao
Antonio

 Critici...
chiarissimo!
Grazie! 

 Il problemino è il seguente:
[CUT ]
ringrazio tutti per i consigli e per la cortesia! 

 idAttore(Numerico intero lungo) ]   LEGATI IN CHIAVE PRIMARIA
in questo modo avrei però delle ripetizioni nella tabella tbDettaglio, 
giusto?
Ricordo(spero bene) che si dovrebbero evitare le ripetizioni in una tabella.
Quindi...possibile che la struttura del db sia proprio sbagliata? O quello
di utilizzare la tabella tbDettaglio è un vincolo che non posso rilassare?
Grazie ancora

"Roberto" <gioe...@NOOOOOSPAMlibero.it> ha scritto nel messaggio 
news:mghZi.165771$%k.30...@twister2.libero.it...

Sì, avrai ripetizioni da un lato e dall'altro : di un codice numerico! ;))
Quindi la normalizzazione è salva e la tabella resta davvero 'piccolina'!
IvanDaBologna