Buona domenica,
ho 2 listbox: "lst_categoriaprogrammi" e "lst_programmi"
nel fare la ricerca di un programma (non della categoria) attraverso una txtbox "txt_cerca" man mano che inserisco le lettere mi visualizza nelle due listbox la categoria e il nome. Il problema sta nel fatto che vorrei che nella listbox "lst_categoriaprogrammi" mi comparisse la categoria senza duplicati, cioè se ad es. se inserisco inizio ad inserire la lettera "P", nella listbox "lst_programmi" mi dovrebbero uscire i nomi "Phptoshop" e "Paint", mentre nella listbox "lst_categoriaprogrammi" dovrebbe comparire solo una volta la voce "GRAFICA", essendo che a tutte e due i programmi è associata la categoria "GRAFICA". Purtroppo mi succede che mi esce due volte la parola "GRAFICA". Sicuramente, come al solito, ho scritto qualche cavolata!
Public Function Apici2(ByVal pStringa As String) As String
If pStringa = vbNullString Then Exit Function
Apici2 = Replace(pStringa, "'", "''") & "*'"
End Function
Public Function cerca_parola()
Dim sql1, sql2 As String
If txt_cerca.Text = vbNullString Then
Set rs = DB.OpenRecordset("SELECT * FROM Programmi ORDER BY nomeprogramma")
Set rs1 = DB.OpenRecordset("SELECT DISTINCT categoriaprogramma FROM Programmi")
Else
sql2 = "SELECT * FROM Programmi WHERE nomeprogramma LIKE '*" & Apici2(txt_cerca.Text)
sql1 = "SELECT DISTINCT * FROM Programmi WHERE categoriaprogramma LIKE '*" & Apici2(txt_cerca.Text)
sql2 = sql2 & " ORDER BY nomeprogramma "
sql1 = sql1 & " ORDER BY categoriaprogramma "
Set rs = DB.OpenRecordset(sql2)
Set rs1 = DB.OpenRecordset(sql1)
End If
End Function
Public Function carica_dati_ricerca()
If rs.RecordCount = 0 Then
lst_programmi.Clear
lst_categoriaprogrammi.Clear
Else
rs.MoveLast
rs.MoveFirst
max = rs.RecordCount
rs.MoveFirst
lst_programmi.Clear
lst_categoriaprogrammi.Clear
For I = 1 To max
lst_programmi.AddItem rs("nomeprogramma")
lst_categoriaprogrammi.AddItem rs("categoriaprogramma")
rs.MoveNext
Next I
End If
End Function