Oppure

Loading
20/10/18 8:19
Sandro
Buongiorno a tutti
non riesco a risolvere il problema di ricerca contemporaneamente all'interno di un database, cioè mi spiego
inserendo in una textbox: Giuseppe Verdi, ed in un'altra textbox: 1870,
all'interno della mia list box mi devono comparire tutti e solo gli indici dei campi che soddisfano entrambi le 2 textbox.
sono riuscito a scrivere il codice riferito alla ricerca in un solo campo:

Public Function cerca_parola()
Dim sql As String

If schermata_Musicisti.txt_musicista.Text = "autore" Then
     sql = "SELECT * FROM Info WHERE autore LIKE '*" & Replace(schermata_ musicista.txt_cerca.Text, "'", "''") & "*'" & "ORDER BY id")
End If

If schermata_Musicisti.txt_musicista.Text = "anno" Then
     sql = "SELECT * FROM Info WHERE anno LIKE '*" & Replace(schermata_ musicista.txt_cerca.Text, "'", "''") & "*'" & "ORDER BY id")
End If

Set rs = DB.OpenRecordset(sql)     
      
End If

aaa
20/10/18 9:10
Nella WHERE devi aggiungere la AND con l'altro campo e valore

Ovviamente devi ottenere una sola SELECT alla fine
Ultima modifica effettuata da 20/10/18 11:34
22/10/18 7:02
Sandro
Ho capito che la procedura è questa,
ma non so come impostarlo...
aaa
22/10/18 7:42
Sai concatenare le stringhe?

Si tratta di preparare la stringa che sta dopo la WHERE con una serie di if e di concatenazioni.

Avrai una stringa iniziale con "SELECT .... WHERE "

Poi, se il primo dato è indicato aggiungi alla stringa " <nomecampo1> LIKE <valore1> AND "
Se il secondo dato è indicato aggiungi alla stringa " <nomecampo2> LIKE <valore2> AND "

Alla fine elimina l'ultima AND dalla stringa e aggiungi la stringa " ORDER BY ..."

Si tratta di lavorare con le semplici funzioni stringa Right, Len ...


Una alternativa più corretta è usare i Parameters.
Ultima modifica effettuata da 22/10/18 7:44
22/10/18 7:54
Sandro
ci sto sbattendo la testa.... ma non riesco
aaa
22/10/18 8:01
Facci vedere i tuoi tentativi.

Stiamo parlando di concetti di base (trattamento delle stringhe), se programmi con i DB conoscerai le basi ...

Se avessi due stringhe, Cognome e Nome, come potresti ottenere il Nominativo completo in un'altra stringa?
Ultima modifica effettuata da 22/10/18 8:02
22/10/18 8:15
Sandro
Cioè, faccio la ricerca inserendo il nome dell’autore [cerca.txt] e vado a cercare nel campo nel campo autore il nome [cerca.txt] e nel campo anno[Anno_text]

If schermata_Musicisti.txt_Anno.Text = "Anno" Then
   sql = "SELECT * FROM Info WHERE autore LIKE AND anno '*" & Replace(schermata_ musicista.txt_cerca.Text, "'", "''") & "*'" & "ORDER BY id")
End If
 
Set rs = DB.OpenRecordset(sql)    
End If
aaa
22/10/18 8:26
Prova a rileggere quello che ti ho scritto. Ti ho elencato i passi da seguire ma se non li leggi ...

Ti ho parlato di stringhe da concatenare e non vedo nessun tentativo nel tuo codice ... quindi non ci stai sbattendo la testa ma semplicemente attendi il codice pronto.
Ultima modifica effettuata da 22/10/18 8:27