Buongiorno, mi chiamo Alberto, e intanto vi ringrazio anticipatamente per l'assistenza!
Uso Access 2007 (SP3) per gestire la libreria di casa. Faccio alcune premesse sperando di chiarire meglio il mio problema. Preciso che, se non diversamente specificato, tutti i campi citati sono di tipo "testo".
Ho una tabella tab_libri con un campo categoria e un campo
genere. Per il "tipo dati" di questi due campi ho scelto "ricerca guidata..." selezionando rispettivamente i campi
cat e gen delle due tabelle tab_categoria e
tab_genere (al termine, nella struttura della tab_libri, i campi
categoria e genere risultano di tipo "numerico"). Inoltre, le relazioni introdotte sono quelle della fig. 1.
Per intenderci, la categoria è il primo livello Dewey di classificazione (ad es. 100 = Filosofia e Psicologia) mentre il genere è il secondo livello di classificazione (ad es. 170 = Etica). Ci sono 10 categorie e per ogni categoria 9 generi disponibili.
In una maschera, poi, ho usato la procedura guidata per creare
due caselle combinate (il cui "nome elemento" è box_cat e
box_gen) che prendono i valori dai campi categoria e genere della tab_libri, al fine di mostrare gli elenchi di categoria e genere per mezzo delle seguenti due query:
- SELECT tab_categoria.id, tab_categoria.cat FROM tab_categoria;
- SELECT tab_genere.id, tab_genere.gen FROM tab_genere;
La cosa funziona (come si vede nelle figg. 2a e 2b) ma ora vorrei che nella maschera - una volta scelta con la 1ª casella combinata una delle 10 categorie - con la 2ª casella combinata venissero mostrati solo i 9 generi di pertinenza. Perché è molto più
comodo scegliere da un elenco di 9 voci anziché 90...
Per fare questo ho aggiunto in tab_gen un campo ctrl_cat (la categoria cui il genere si riferisce). Ho poi modificato la query 2) nella seguente:
- SELECT tab_genere.id, tab_genere.gen, tab_genere.ctrl_cat FROM tab_genere WHERE (((tab_genere.ctrl_cat)=[Forms]![maschera_tab_libri]![box_cat]));
e nella finestra delle proprietà della box_cat, alla voce "dopo aggiornamento" nella scheda "evento", ho impostato la seguente "routine":
- Private Sub box_cat_AfterUpdate()
box_cat.Requery
End Sub
Ovviamente :( la cosa non funziona (come si vede in fig. 3) e soprattutto non sono in grado di capire dove stia l'errore. Immagino che sia un problema relativo alla sintassi (ad es. i doppi apici) o al tipo dei dati (testo vs. numerico), o qualcosa del genere...
Aggiungo che per la realizzazione di questa funzione ho seguito diverse indicazioni online e ho letto molti interventi nei forum per la risoluzione dei problemi, ma non sono riuscito ad applicare i vari consigli al mio caso.
Attendo fiducioso :)
(fig. 1)

(fig. 2a)

(fig. 2b)

(fig. 3)
