La logica applicata nell'esempio del link, sopra citato. è quella di impiegare.al posto del classico pulsante di comando (command button) che attiva la maschera di selezione, una immagine che lo simuli.
In tal modo non si perde il focus nella maschera (in uso) e si attiva direttamente il filtro sul controllo attivo (in quel momento) con un criterio di corrispondenza che può essere costruito in modo graduale, selezionando di volta in volta i vari controlli di interesse (legati comunque alla maschera attiva) al fine di effettuare una estrazione dei dati progressiva.
Schematicamente. mettendo nella maschera una immagine (denominata ad esempio "ImmagineFiltro") e impostando il comando di "Filtro in base a selezione" in relazione al tipo di controllo su cui è attivo il focus, con un codice similare:
Private Sub ImmagineFiltro_Click()
' Nel caso di casella di testo, di riepilogo o combinata si imposta il filtro in base a selezione
If Screen.ActiveControl.ControlType = acTextBox _
Or Screen.ActiveControl.ControlType = acListBox _
Or Screen.ActiveControl.ControlType = acComboBox Then
DoCmd.RunCommand acCmdFilterBySelection
End If
End Sub
si otterrà la selezione progressiva dei dati.
Inoltre, qualora si voglia osservare (ed eventualmente modificare) l'insieme dei valori impostati, su cui agisce il filtro della maschera, si può porre un pulsante con codice similare:
Private Sub btnVisualizzaFiltroSelezioneAvanzato_Click()
' Presenta la query del filtro realizzato in base ai criteri della maschera di selezione
DoCmd.RunCommand acCmdAdvancedFilterSort
End Sub
Che, appunto, presenta attraverso un pannello, pop-up, di interfaccia, la query con i vari controlli impostati su cui agisce il filtro di selezione sulla maschera.