08/06/2023 - lucavalentino ha scritto:
la ricerca funziona solo che mentre digito mi fa vedere tutti i record ignorando il filtro
La ricerca funziona in qualche modo … in quanto per come hai impostato le condizioni Where non c'è molta logica.
Se il ragionamento è :
- Filtra tutti i records per
- E
- filtra tutti i records dove i caratteri di ricerca sono contenuti in parte :
- su utente
- oppure su nome
- oppure su cognome
- oppure su iscritto
se la ricerca che vuoi eseguire è quanto riportato sopra, allora la Where Condition devi almeno scriverla in questo modo:
Per esempio utilizzando l'evento AfterUpdate
Private Sub ricerca_AfterUpdate()
Me.Form.Filter = "ANNO='" & CStr(2023) & "' AND (utente LIKE '*" & Me.ricerca.Text & "*' OR nome LIKE '*" & Me.ricerca.Text & "*' OR cognome LIKE '*" & Me.ricerca.Text & "*' OR iscritto LIKE '*" & Me.ricerca.Text & "*')"
Me.Form.FilterOn = True
End Sub
E se per esempio la ricerca non ha esito, puoi usare l'evento Exit per rimanere nel TextBox di ricerca fino a quando non vengono trovati records corrispondenti:
Private Sub ricerca_Exit(Cancel As Integer)
If Me.Form.Recordset.RecordCount = 0 Then Cancel = True
End Sub
Insomma… con 3 righe di codice e utilizzando gli eventi appropriati fai tutto.
La function di ricerca che hai utilizzato ha un altro scopo e mi sembra che non corrisponda affatto alle tue necessità. Ma non conoscendo bene il contesto in cui ti trovi, potrei anche sbagliare.
Invece da chiarire se il campo ANNO della tabella/query da filtrare, è un campo tipo stringa oppure numerico. Anche qui ci sarebbe da disquisire, ma comunque:
Se è di tipo stringa sarà sufficiente :
Me.Form.Filter = "ANNO='" & CStr(2023) & "' AND . . . . .
Se invece è numerico :
Me.Form.Filter = "ANNO=" & 2023 & " AND . . . . .
Però non hai specificato bene il contesto … se ti trovi in una form a maschere continue, oppure se hai una form principale e una subform dove vengono visualizzati tutti i records da filtrare… Insomma le cose possono più o meno cambiare e, se cambia il contesto può essere necesario inserire controlli di varia natura sia prima che dopo aver effettuato la ricerca.
Per quanto sopra riportato, è evidente che tu debba approfondire meglio alcuni argomenti quali:
Eventi Form : Ordine degli eventi per gli oggetti di database - Supporto tecnico Microsoft
Tipo Dati : Riepilogo dei tipi di dati - Visual Basic | Microsoft Learn
Where Condition : WHERE clause (Microsoft Access SQL) | Microsoft Learn
Etc…