Forms

3.70 Maschera universale per cercare, filtrare, ordinare o incollare dati in un'altra qualsiasi maschera
  Roberto
In qualsiasi applicazione Access, dopo la progettazione delle tabelle e la creazione delle maschere per aggiornare tali tabelle, nasce il poblema di creare un numero imprecisato di maschere e/o query per filtrare i dati delle tabelle e visualizzarli oppure ordinarli in un altro modo; il numero è imprecisato perché nascerà sempre e in continuazione la necessità di nuovi criteri di selezione o di ordinamento e cambieranno anche i campi su cui applicarli e, per quanto si vorrà prevedere tutto, all'utente finale mancherà sempre uno strumento per effettuare una certa ricerca o ordinamento in un determinato campo; inoltre occorre preparare per ogni operazione di filtro di ricerca o di ordinamento nuove maschere del tutto simili a quelle di inserimento dei dati nelle quali inserire i parametri di selezione7ordinamento e visualizzare i risultati della ricerca, del filtraggio o dell'ordinamento.
Propongo pertanto una soluzione che prevede di usare per la visualizzazione della ricerca, del filtraggio o dell'ordinamento le stesse maschere usate per l'immissione dei dati, senza modificarle in alcun modo: ciò significa che la tecnica può essere usata anche con vecchi applicativi Access già funzionanti con tempo e costo di sviluppo nulli.

Per ottenere tutto ciò è suficiente importare in un vostro database già funzionante i seguenti due oggetti contenuti nel database di esempio allegato a questa FAQ:
1) La maschera frmCercaFiltraIncolla
2) La macro Autokeys
Se nel vostro database già esiste una macro con tale nome, aggiungete in essa l'unica azione contenuta nella macro Autokeys dell'esempio allegato.
ATTENZIONE !, se usate una versione di Access successiva ad Access 97, aggiungete al vostro database, ammesso che già non esitono, i riferimenti a Microsoft DAO 3.6 Object Library.

A questo punto aprite una maschera del vostro database adatta a visualizzare i dati che vi servono e che volete filtrare, ordinare o sulla quale volete effettuare una ricerca; con il mouse rendete attivo il controllo associato al campo su cui volete effettare la selezione di filtro o di ricerca oppure su cui volete ordinare la maschera e poi pigiate il tasto funzione F5: si aprirà una maschera popup nella quale imposterete i criteri di selezione, quindi scegliere il comando da eseguire: ricerca, ordinamento o impostazione di filtro. A queto punto la maschera popup si chiuderà e la vostra maschera risulterà filtrata7ordinata e/o vi mostrerà il risultato della ricerca predisposta nella maschera popup.
Se la vostra maschera era già filtrata , prima di rifiltrare la maschera potrete decidere se sovrescrivere i criteri di ricerca ai criteri del filtro preesistenti, oppure potrete decidere di aggiungere i criteri di selezione in AND o in OR ai criteri del filtro; naturalmente nel primo caso perdereti i vecchi criteri di filtro che riotterrete solamente chiudendo e riaprendo la vostra maschera.
Se sulla maschera già filtrata dovete invece fare una ricerca potrete decidere se disabilitare oppure no il filtro prima della ricerca; nel primo caso potrete riabilitarlo in un secondo tempo sempre usando uno dei comandi della maschera popup.
Per i due comandi di odinamento e invece del tutto ininfuente che la maschera risulti o meno filtrata: l'esito dell'ordinamento prescinde dall'eventuale presenza di un filtro.

Primo presupposto perché la cosa funzioni è che la vostra maschera sia associata o ad una tabella, o ad una query o che infine abbia come origine record una stringa SQL. La quey può essere anche parametrica, ma solo a condizione che i parametri di selezione della query facciano riferimento a controlli di una maschera e non venga richiesta la digitazione on-line all'apertura della query; se la maschera avrà come origine record una query parametrica di quest'ultimo tipo si avrà il fastidio, ogni volta che si imposterà un nuovo filtro, di dover ridigitare i parametri di selezione, ma questa è una cosa risaputa.
Inoltre occorre che il controllo attivo della vostra maschera sia un controllo associato e sia o una Casella di testo, o una Casella di controllo,o un Pulsante di opzione, o una Casella combinata o infine una Casella di riepilogo. Il controllo attivo deve essere contenuto nella maschera attiva, ovvero non può essere un controllo contenuto in una sottomaschera della maschera attiva.
Il campo associato al controllo attivo di cui al capoverso precedente deve avere uno dei seguenti tipi di dati: Contatore, Testo, Numerico, Data/ora, Si/No o Valuta.
Nella parte superiore della maschera popup si leggeranno alcune notizie relative alla maschera attiva ed al controllo attivo in essa contenuto.
Sempre nella parte superiore della maschera verrà anche visualizzato quale sarà il criterio di selezione che verrà usato per effettuare la ricerca o per impostare il filtro.

Da una casella combinata l'utente finale potrà scegliere l'operatore di selezione tra i seguenti possibili: = , <> , < , <= , > , >= , Contiene, Non contiene, Inizia con, Non inizia con, Termina con, Non termina con, Nullo, Non nullo. Naturalmente al variare dell'operatore di selezione si vedrà modificarsi la visualizzazione del criterio di selezione di cui sopra. Il valore di default dell'operatore di selezione sarà Contiene se il campo associato al controllo attivo è di tipo Testo e sarà invece il segno = (uguale) negli altri casi.

Nella parte destra della maschera popup c'è una casella di riepilogo sormontata da una casella combinata: servono ad aiutare ad impostare il valore del secondo termine di paragone dei criteri di selezione. Negli elenchi di questi due controlli ci saranno tutti i valori contenuti nel campo associato al controllo attivo della vostra maschera. I valori di default di tale casella combinata e di tale casella di riepilogo sono gli stessi del controllo attivo del record corrente della vostra maschera. Naturalmente al variare del valore del secondo termine di paragone vedrà modificarsi la visualizzazione del criterio di selezione di cui sopra. Il valore del secondo termine di paragone potrà essere impostato o selezionando una riga sull'eleco della casella combinata, o cliccando con il mouse su una riga della casella di riepilogo oppure digitando nella casella combinata un valore a nostro piacimento.

Se si ha intenzione di effettuare una ricerca (non serve nel caso si voglia impostare un filtro) si può scegliere da una casella combinata tra quattro modi di ricerca e più precisamente tra: Cerca dall'inizio, Trova il successivo, Trova il precedente o Cerca dalla Fine. Il valore predfinito di tale casella combinata è Cerca dall'inizio.

Avendo così impostati i parametri di selezione, a seconda del pulsante di comando che si pigerà, si imposterà il filtro o si effettuerà la ricerca,e la maschera popup si chiuderà e nella vostra maschera vedrete il risultato dell'operazione.
In effetti esistono anche altri cinque pulsanti di comando (oltre a quello di chiusura della maschera): il pulsante Incolla, Il pulsante Disabilita filtro, il pulsante Abilita filtro, il pulsante Ordina crescente ed il pulsante Ordina decrescente.
Pigiando il pulsante Incolla, nel controllo attivo della vostra maschera verrà incollato il valore selezionato o digitato nella casella combinata relativa al valore del secondo termine di paragone.
Pigiando il pulsante Disabilita filtro, verrà disabilitato il filtro della vostra maschera (FilterOn = False), ma il contenuto della proprietà Filter della vostra maschera non verrà alterato, quindi potrete in seguito riabilitare il filtro.
Pigiando infine il pulsante Abilita filtro, verrà abilitato il filtro della vostra maschera (FilterOn = True), ma il contenuto della proprietà Filter della vostra maschera non verrà alterato.
Pigiando il pulsante Ordina crescente, la maschera attiva verrà ordinata in modo crescente in base al campo che è associato al controllo attivo.
Pigiando il pulsante Ordina decrescente, la maschera attiva verrà ordinata in modo decrescente in base al campo che è associato al controllo attivo.

E' possibile operare con un solo campo alla volta, però ogni volta che richiamerete la maschera popup potrete decidere di non sovrascrivere i nuovi criteri a quelli del filro ma di aggiungere in AND o in OR i nuovi criteri a quelli del filtro preesistenti; così facendo potrete realizzare l'impostazione in AND o OR di criteri di filtro basati su un numero indefinito di campi.

NB
Qualora si ritenga che la maschera popup risulti essere troppo ingombrante, potete importare nel vostro database invece della maschera frmCrecaFiltraIncolla la maschera frmCercaFiltraIncollaLight, nel qual caso dovrete modificare di conseguenza il nome della maschera che viene aperta con l'azione ApriMaschera della Macro Autokeys.
Per ridurre le dimensioni della maschera popup, oltre a ridurre la dimensione di alcuni controlli ed aver cambiato un po' il layout, si sono anche eliminate le annotazioni puramente documentative poste nell'intestazione e nel pié di pagina della maschera, quindi i criteri di selezion, invece di essere mostrati in una label nell'intestazione della maschera, vengono visualizzati nel suo caption.

Download:
 
  CercaFiltraIncolla.zip (83Kb) MSAccess97 database


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