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 Sub
Mano 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.


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