Forms |
3.114 Come creare un controllo di ricerca (3) |
Roberto |
Questa soluzione è derivata dalla FAQ di Davide La Mantia (Sib) pubblicata nella Sezione Forms di questo sito ed intitolata 3.29 Come creare un controllo di ricerca. Al contrario della soluzione data nella FAQ di cui sopra, con la soluzione che segue la ricerca, anziché posizionare la maschera sul primo record che soddisfa i parametri di ricerca, fornirà in una casella di riepilogo l'elenco di tutti i record che soddisfano i criteri di ricerca mano a mano che si digita un carattere in una casella di testo. Di fatto, dopo la digitazione di ogni carattere nella casella di testo, la stringa in essa contenuta verrà utilizzata per filtrare il contenuto della casella di riepilogo. Questa soluzione dà la possibilità anche di gestire i sinonimi o permette di effettuare una filtraggio "misto": all'inizio digitando dati in una casella di testo e poi scegliendo tra i record elencati nella casella di riepilogo. Se si ha una tabella chiamata [Archivio nominativi] che ha come chiave primaria un campo chiamato ID ed un campo Nominativi sul quale effettuare la ricerca. Inserire in una maschera una casella di testo non associata chiamata txtRicerca ed una casella di riepilogo non associata chiamata ElencoNominativi: tale casella di riepilogo deve avere due colonne e non deve avere origine riga. A fronte dell'evento "Su modifica" della casella di testo generare il seguente codice VBA: Private Sub txtRicerca_Change() Dim strR As String Dim strSQL As String strR = Me!txtRicerca.Text If Not IsNull(Me!txtRicerca.Text) Then strSQL = "SELECT ID, Nominativi " & _ "FROM [Archivio nominativi] " & _ "WHERE (Nominativi Like " & Chr$(34) & "*" & _ strR & "*" & Chr$(34) & ");" Me!ElencoNominativi.RowSource = strSQL Me!ElencoNominativi.Requery Me!txtRicerca = strR Me!txtRicerca.SetFocus Me!txtRicerca.SelStart = 255 End If End SubMano a mano che si digita una lettera nella casella di testo txtRicerca, nella casella di riepilogo verranno mostrati tutti quei record della tabella [Archivio nominativi] che nel campo Nominativi contengono, in qualsiasi posizione, la stringa sino a quel momento digitata nella casella di testo. N O T A Allegato alla FAQ di Daniele Merlo intitolata 3.122 Database di esempio delle due FAQ relative a Come creare un controllo di ricerca e pubblicata nella Sezione Forms di questo Sito si trova un database di esempio che realizza in pratica quanto qui esposto in teoria. |