Forms

3.61 Come si può filtrare una maschera in base alla selezione multipla di un valore contenuto in un controllo di una sua sottomaschera?
  Roberto
Presupposti.
La maschera principale si chiama Nominativi ed ha come origine record una tabella (Nominativi) che ha come chiave primaria un campo contatore chiamato IdNominativi.
La sottomaschera ha come origine record una tabella (NomiCat) in relazione uno-a-molti con la tabella Nominativi tramite il campo IdNominativo.
Esiste anche una tabella Categorie composta da un campo IdCategoria (chiave primaria) ed un campo di tipo testo chiamato Categoria; questa tabella è in relazione uno-a-molti con la tabella NomiCat in base ai campi IdCategoria.
Di fatto la tabella NomiCat serve a mettere in relazione molti-a-molti la tabella Nominativi con la tabella Categorie.

Soluzione.
La maschera Nominativi contiene anche una casella di riepilogo che contiene la lista di tutte le categorie della tabella Categorie. Con tale casella di riepilogo è possibile fare una selezione multipla di categorie: tale selezione multipla può essere usata in And o in Or a seconda di quanto selezionato nella casella combinata che si trova subito sopra della casella di riepilogo di cui sopra.
Premendo il pulsante di comando FILTRA, verranno filtrati i nominativi che hanno o tutte le categorie di interesse selezionate (And) o almeno una delle categorie selezionate(Or) nella casella di riepilogo.
Con la maschera è possibile anche inserire nuovi dati.
Nel database di esempio sono risolti anche i seguenti problemi:
1) Poiché è stata impostata a No la proprietà Pulsanti spostamento della maschera Nominativi, la navigazione tra i vari record è realizzata con 4 pulsanti di comando e tramite una casella di riepilogo, che porta la lista dei nominativi del recordset origine record della maschera principale. E’ visualizzato altresì il numero progressivo del record corrente e il numero totale dei record del recordset origine record della maschera.
2) In fase di inserimento di un nuovo nominativo è gestita l’obbligatorietà del campo Nominativo.
3) Sempre in fase di inserimento di un nuovo nominativo viene verificato che nella tabella Nominativi non esista un altro record per lo stesso nominativo.

Il database allegato è stato realizzato e testato con Access 97 e fa riferimento alla libreria Microsoft DAO quindi, se si usa una versione di Access successiva ad Access 97 e si volesse usare la Sub relativa al pulsante FILTRA, sarà necessario aggiungere al proprio database i riferimenti a tale libreria.

Download:
 
  FiltraSottomaschera.zip (34Kb) MSAccess97 database


Se pensate di avere del materiale freeware interessante e volete pubblicarlo, allora leggete qui.