Newsgroup: it.comp.appl.access
Titolo: Tosto73 - 6 grande!!! CAMPI COLLEGATI

6 grande. Ho un'altra domanda da un milione di dollari.
Ho una tabella SCUOLA cosi' costituita:
- Nome prof
- Cognome prof
- Classe
- Nome alunno
- Cognome alunno
Ho creato una maschera: PROFESSORI.
Dalla casella combinata scelgo il cognome del prof.
In un campo al suo fianco vorrei far comparire il nome
Nella sottomaschera vorrei fare vedere solo gli alunni di questo PROF.
Come devo fare?
Grazie e... comunque vada sara' un successo!!!
Dodo
_________________________________________________________________________
Get Your Private, Free E-mail from MSN Hotmail at 
http://www.hotmail.com
.
Share information about yourself, create your own public profile at 
http://profiles.msn.com
.
--
Posted from [193.204.185.24] by way of 
f34.law7.hotmail.com
 [216.33.237.34] 
via Mailgate.ORG Server - 
http://www.Mailgate.ORG


Mi sembra che tu sia ottimista nel dire che hai una sola tabella SCUOLA;
eventualmente hai un database chiamato SCUOLA; di tabelle secondo me te ne
devi creare parecchine.
Le tabelle di base sono tre e debbono avere la seguente struttura:
TabellaProf
----------------
IdProf            Chiave primaria
NomeProf
CognomeProf
------------------------------------------
TabellaClasse
--------------------
IdClasse        Chiave primaria contatore
DescrClasse
-----------------------------------------
TabellaAlunni
-------------------
IdAlunno        Chiave primaria
IdClasse        Numerico
NomeAlunno
CognomeAlunno
----------------------------------------
TabellaClasse è in relazione uno-a-molti con TabellaAlunni tramite il campo
IdClasse.
Poiché TabellaProf è in relazione molti-a-molti con TabellaClasse (un
professore ha più classi e una classe ha più professori) ed è inoltre in
relazione molti-a-molti con TabellaAlunni (un professore ha più alunni ed un
alunno ha più professori) dovrai crearti altre due tabelle tramite le quali
assicurerai questo tipo di relazioni. La loro struttura sarà la seguente:
TabellaProfClasse
--------------------------
IdProf            Numerico
IdClasse       Numerico
-----------------------------------------
TabellaProfAlunni
------------------------
IdProf            Numerico
IdAlunno        Numerico
------------------------------------------
La chiave primaria di queste due tabelle sarà costituita dall'insieme dei
due campi in esse contenuti.
TabellaProf dovrà essere in relazione uno-a-molti con TabellaProfClasse
tramite il campo IdProf e sempre tramite questo campo con TabellaProfAlunni.
TabellaClasse dovrà essere in relazione uno-a-molti con TabellaProfClasse
tramite il campo IdClasse.
TabellaAlunni dovrà essere in relazione uno-a-molti con TabellaProfAlunni
tramite il campo IdAlunno.
Le relazioni tra le tabelle ti consiglio di crearle tramite
l'Autocomposizione Ricerca.. nella struttura delle tabelle; questo ti
faciliterà molto l'immissione dei dati.
Avendo stabilito l'architettura delle tabelle e come sono tra di loro in
relazione, creati una query (Query1) basata sulle tabelle TabellaProf,
TabellaProfAlunni e TabellaAlunni in join fra di loro.
Creati un'altra query (Query2) basata su TabellaProf.
Creati una maschera (SottoMaskAlunni) con visualizzazione a Maschere
continue e che ha come origine record Query1.
Creati una maschera (Professori) che ha come origine record Query2 e una
visualizzazione a Maschera singola. Nell'intestazione di questa maschera
inserisci una casella combinata non associata chiamata Professore e che
abbia come origine riga una query basata su TabellaProf.
A fronte dell'evento "Dopo aggiornamento" della combo Professore genera il
seguente codice VBA:
    Me.Requary
Sempre nella maschera Professori metti un controllo sottomaschera nel quale
inserirai SottoMaskAlunni; le propretà "Collega campi secondari" e "Collega
campi master" del controllo sottomaschera debbono contenere IDProf.
Apri la struttura di Query2 e nella riga "Criteri:" del campo IdProf scrivi:
    [Forms]![Professori]![Professore]
Chiudi e salva la struttura di Query2.
A questo punto, aprendo la maschera Professori e selezionando dalla combo il
cognome di un professore, dovresti vedere ciò che ti aspettavi.
--
Roberto
---------------------------------------------
il sito comune di it.comp.appl.access:
http://members.xoom.it/it_db_access/
---------------------------------------------

 ha scritto nel messaggio
news:hksD5.5984$N93.1...@news.infostrada.it...

Grazie! ma vedo che Roberto da casa ti ha già risposto in modo più che
soddisfacente!
mi rendo disponibile per altri chiarimenti! ciao!

(.....)
Per ovviare agli inconvenienti che ti ho segnalato, sarebbe opportuno
separare la tabella SCUOLE in due tabelle separate: PROFESSORI,
ALUNNI:
PROFESSORI
-----------------------
ID_Record
Cognome
Nome
ALUNNI
-------------
ID_Record
Cognome
Nome
e aggiungere una tabella 
CLASSI
------------
ID_Record
Nome
ed una 
DETTAGLIOCLASSI
--------------------------------
CD_Classe	(valori dalla tabella CLASSI)
CD_Alunno	(valori dalla tabella ALUNNI)
ed una ancora
ASSEGNAZIONIPROF
-----------------------------------
CD_Professore (valori dalla tabella PROFESSORI)
CD_Classe       (valori dalla tabella CLASSI)
Questo normalizza il tuo database secondo le regole di Boyce-Codd, ma
sicuramente ne complica la gestione.
Le origini record delle tue maschere a questo punto dovrebbero essere
delle query che "rimettono insieme" i dati smistati nelle varie
tabelle facendoli apparire come se si trovassero in una sola.
I suggerimenti che ti ho dato ti sembreranno sommari ed
approssimativi: lo sono, ma del resto è difficile trattare
l'impostazione di una base dati anche semplice come la tua a livello
descrittivo; in questi casi è più semplice da fare che da spiegare.
I miei vogliono essere soprattutto spunti per spingerti ad affrontare
da solo il problema, documentarti e quindi chiedere aiuto sulle
difficoltà incontrate via via.
Vincenzo Turturro
---------------------------------------------------------
Se no diventiamo tutti **** dai portatili o peggio ancora 
provetti poeti fiorentini come vturturro.
(Così disse 
ivan....@tiscalinet.it
 Ven 25 Aug 2000 09:34:52 +0200)