PDA

Visualizza versione completa : Access - caselle di controllo collegate in una maschera


outis
11-01-2008, 19.51.54
Salve a tutti,
sono nuovo di questo forum e di Access.
Ho un problema relativo ad una maschera con il collegamento tra tre caselle di controllo in modo che inserendo un valore nella prima mi dia un campo + ristretto di opzioni nella seconda, selezionato il valore nella seconda casella mi di un certo insieme di valori nella terza.
Non capisco quale tipo di funzione devo considerare (non mi sembra "dlookup").
Mi spiego.
ho tre tabelle:
1)facolta
id_fac contatore
fac testo (come casella di riepilogo)
2)corso
id_cdl contatore
cdl testo
id_fac numerico (chiave esterna collegata a id_fac.facolta)
3)curriculum
id_curr (contatore)
curr (testo)
id_cdl (numerico) (chiave esterna collegata a id_cdl.corso)

nella maschera di visualizzazione dati ho inserito tre caselle combinate collegate alle tabelle (id_fac,id_cdl,id_curr) come caselle di riepilogo.
Ora vorrei che selezionando dal menu a tendina di id_fac mi dia solo una parte di valori di id_cdl e così anche per id_cdl e id_curr rispettando così le relazioni tra le tabelle e l'integrità raferenziale e mantenendo il menu a tendina di casella di riepilogo per tutte e tre le caselle
Come posso fare? Me la date una mano?
C'è una funzione particolare? non sono forte a sintassi.
Purtroppo non conosco nemmeno visual basic. Sipuò fare senza?
Sono un caso disperato mi spiace.
Grazie.

LoryOne
11-01-2008, 21.55.47
Le relazioni devono essere intese come vincoli tra valori contenuti all'interno delle colonne di cui si compongono le tabelle.
Devi prima pensare a creare le colonne che contengano valori che si trovano in una o più tabelle in relazione tra loro.
Devi creare la struttura di memorizzazione dei dati ponendo la tua attenzione sui campi delle colonne delle tabelle che costituiranno la base per la creazione del filtro di ricerca.
Puoi fare tutte le prove che vuoi con la creazione guidata delle query.
Quando sarai soddisfatto dei risultati ottenuti, potrai procedere alla stesura della maschera. Dove avrai inserito i campi a mano, creerai dei riferimenti ai valori immessi nei campi di testo o di riepilogo della maschera.

Fare una ricerca sugli ID selezionati dall'utente non è un buon approccio, a meno che non sia assolutamente necessario.
Dovresti far inserire un campo testuale, ricavare l'ID corrispondente e darlo in pasto alla query. in questo modo otterresti un'interfaccia più amichevole verso l'utente addetto all'inserimento dei dati :)

outis
12-01-2008, 04.01.24
Grazie LoryOne per avermi risposto ma per rendere + facile l'inserimento e visualizzazione dei dati ho previsto per vari campi una serie di caselle combinate sia a livello di tabella sia al livello di maschera per cui viene visualizzato il "nome" dell'oggetto ma memorizzato "l'id" nella tabella a cui è associato il controllo.
Forse mi sono spiegato male.
Nella maschera studenti che ha come origine una tb studenti ho le diverse caselle di controllo per immettere i dati relatii ad ogni studente:
nome,
cognome,
matricola,
facoltà,
corso di laurea,
curriculum.
La mia attenzione si concentra sulle ultime tre ognuna con una tabella diversa di origine e con tali relazioni:
facolta 1-n corso 1-n curriculum
inoltre sono impostate come caselle di riepilogo che mi visualizzani nella tendina a discesa tutti i valori disponibili.
Vorrei capire come collegare tre caselle combinate e farne Delle caselle dinamiche. Il dominio di valori selezionabili nella seconda casella deve dipendere dalla scelta fatta precedentemente nella prima casella. Ivalori della terza dovono dipendere dalla selezione effettuata nella seconda.

miciomao
15-01-2008, 12.45.30
Prova a vedere questi 2 esempi se possono tornarti utili

http://forum.wintricks.it/showpost.php?p=1252600&postcount=4

http://forum.wintricks.it/showpost.php?p=1252636&postcount=4

;)

outis
17-01-2008, 18.19.26
Grazie mille sei stato illuminante, funziona ma c'è un problema.
Ho fatto una query con 4 campi
cod_fac
cod_cdl
cod_perc
cod_ind
ognuno di essi è chiave primaria nelle rispettive 4 tabelle correlate
uni_fac
uni_cdl
uni_perc
uni_ind
(solo con i primi 2 campi per prova) ho applicato i criteri secondo la sintassi che appare nella query del database di esempio che mi hai gentilmente fornito
.
Ho creato la maschera con 2 caselle combinate per il cod_fac e il cod_cdl.
Visualizzo la maschera scelgo il valore nella prima casella e mi appaiono i valori correlati nella seconda casella combinata. E' fatta ma... se vado a cambiare il cod_fac nella prima casella , nella seconda mi escono sempre i valori precedenti.
Allora (da buon copione) ho preso il tuo pulsante "azzera", lho copiato nella mia maschera di prova, ho variato i riferimenti nel codice alle caselle combinate ma niente. :wall:
Qualcuno ci può dare un'occhiata se può? Grazie

miciomao
18-01-2008, 17.08.33
guarda secondo me se vuoi fare una cosa quasi carina scaricati il file Access allegato a questo articolo
http://www.wintricks.it/manuali/file_hosts.html
dato che sai muoverti credo ti sarà semplice adattare la cosa

;)

miciomao
18-01-2008, 17.36.38
Questo mi piace un po di più, considera però che ho modificato la query
ora il filtro non è più "Contiene" ma "Inizia con"
puoi sempre modificare il criterio Like aggiungendo all'inizio "*" & come la query1
ma non conviene quando si filtrano numeri

Ecco l'allegato

outis
24-01-2008, 18.25.35
Ho capito, funziona. Grazie Miciomao per la disponibilità.
Tuttavia ora si delinea una nuova difficoltà sempre legata a queste caselle di riepilogo. Sto cercando di cavarmela da solo sulla base delle istruzioni che mi hai fornito. Alla quindicesima bustina per il mal di testa mi farò risentire.
Grazie a tutti.

outis
16-02-2008, 19.23.24
scusate ragazzi, stavo per gettare la spugna dopo diversi tentativi ma il mio problema sembrava irrisolvibile (per colpa mia sicuramente e dei miei limiti).
Poi ho trovato su internet un'alternativa alla soluzione ke mi avevate gentilmente fornito. Leggo su un sito (non so se posso citarlo): "Sincronizzare in una maschera due o più caselle combinate tra loro in gerarchia".
Bè...funziona alla meraviglia.
Allora vi domanderete: perchè sei tornato su questo post?
Il problema è ke le caselle combinate tra loro si trovano in una maschera ke ho adesso inserito all'interno di una struttura a schede di una maschera principale.
Naturalmente ho collegato le due maschere (non ci sono problemi da questo punto di vista) ma se vado a cambiare i valori all'interno delle caselle collegate mi esce una finestra con "immettere valore parametro" - "Maschere!Nome_maschera!nome_controllo".
Strano, davvero strano. Funziona quando apro la sottomaschera indipendentemente come maschera a se, non funziona quando apro la maschera principale.
Qualcuno sa darmi una dritta?
Grazie a tutti