Italian Filtro LIKE ed evento TextChanged per una ricerca

toro1950

Active Member
Licensed User
Buongiorno, mi è rimasto l'ultimo step per finire, nel'app c'è un database con solo due campi, Cognome-nome e data di nascita,
se tutto va bene come penso ma soprattutto come spero, questo database potrà arrivare fino 2000-2500 record,
quindi vorrei implementare una ricerca tramite una EditText di ricerca sfruttando il filtro di ricerca LIKE e l'evento TextChanged, per il momento non sono riusciad utilizzare quest'ultimo evento, per proseguire e vedere se tutto funziona ho aggiunto un button tramite il quale avvio il seguente codice, purtroppo non funziona ed esce senza nessun avvisio
B4X:
Sub button4_click
    listapaz.Clear
    Dim Query As String
    Dim ResultSet1 As ResultSet
    Query = "SELECT * FROM patienti WHERE nome LIKE '%?%'"
    ResultSet1 =SQL1.ExecQuery2(Query, Array As String (EditRicerca.Text))
    Do While ResultSet1.NextRow
'Proseguo con il codice di visualizzazione che è identico a quallo che mostra tutti i record
Effettuando dei controlli ho notato che la query non da errori ma la riga ResultSet1 non viene superata,
fa uscire l'app e non da errori
 

Xfood

Expert
Licensed User
buon pomeriggio, non posso provare il codice adesso , ma prova in questo modo


B4X:
Query = "SELECT * FROM patienti WHERE nome LIKE ?"

    ResultSet1 =SQL1.ExecQuery2(Query, Array As String ("%"&EditRicerca.Text&"%"))
 

LucaMs

Expert
Licensed User
Longtime User
Il codice mi sembra corretto.


Effettuando dei controlli ho notato che la query non da errori ma la riga ResultSet1 non viene superata,
fa uscire l'app e non da errori
Non entra nel ciclo "Do While"?
Subito dopo questa riga, metti un Log("trovati") e su questa un breakpoint, giusto per vedere se trova dei record senza problemi.


Puoi comunque migliorare il codice, evitando di passare EditRicerca.Text ma una variabile stringa che ne contenga il valore.
quindi vorrei implementare una ricerca tramite una EditText di ricerca sfruttando il filtro di ricerca LIKE e l'evento TextChanged, per il momento non sono riusciad utilizzare quest'ultimo evento
B4X:
Private Sub EditRicerca_TextChanged (Old As String, New As String)
    If New.Length > 2 Then ' considera un minimo di caratteri, non ci saranno nomi così corti, no?!
        Filtra(New)
    End If
End Sub

Private Sub Filtra(NomeParziale As String)
    listapaz.Clear
    Dim Query As String
    Dim ResultSet1 As ResultSet
    Query = "SELECT * FROM patienti WHERE nome LIKE '%?%'"
    ResultSet1 = SQL1.ExecQuery2(Query, Array As String (NomeParziale))
    Do While ResultSet1.NextRow
        Log("trovati")
        'Proseguo con il codice di visualizzazione che è identico a quallo che mostra tutti i re
    Loop
End Sub
 
Last edited:

toro1950

Active Member
Licensed User
Grazie ragazzi, unendo i due codici ho raggiunto quello che cercavo, qiundi un grazie di cuore ad ambedue
B4X:
Private Sub Filtra(NomeParziale As String)
    listapaz.Clear
    Dim Query As String
    Dim ResultSet1 As ResultSet
    Query = "SELECT * FROM patienti WHERE nome LIKE ?"
    ResultSet1 = SQL1.ExecQuery2(Query, Array As String ("%" & NomeParziale & "%"))

    Do While ResultSet1.NextRow
Con Query = "SELECT * FROM patienti WHERE nome LIKE '%?%'" esce

Fra qualche giorno inizio la versione per iphone, se non sbaglio è uscita una nuova versione di B4
per ios,
 
Top