Sandro (Normal User)
Newbie
Messaggi: 10
Iscritto: 20/10/2018
|
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:
Codice sorgente - presumibilmente VB.NET |
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
|
|
|
nessuno (Normal User)
Guru^2
Messaggi: 6378
Iscritto: 03/01/2010
|
Nella WHERE devi aggiungere la AND con l'altro campo e valore
Ovviamente devi ottenere una sola SELECT alla fine
Ultima modifica effettuata da nessuno il 20/10/2018 alle 13:34
Ricorda che nessuno è obbligato a risponderti e che nessuno è perfetto ...
---
Il grande studioso italiano Bruno de Finetti (uno dei padri fondatori del moderno Calcolo delle probabilità) chiamava il gioco del Lotto Tassa sulla stupidità. |
|
Sandro (Normal User)
Newbie
Messaggi: 10
Iscritto: 20/10/2018
|
Ho capito che la procedura è questa,
ma non so come impostarlo...
|
|
nessuno (Normal User)
Guru^2
Messaggi: 6378
Iscritto: 03/01/2010
|
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 nessuno il 22/10/2018 alle 9:44
Ricorda che nessuno è obbligato a risponderti e che nessuno è perfetto ...
---
Il grande studioso italiano Bruno de Finetti (uno dei padri fondatori del moderno Calcolo delle probabilità) chiamava il gioco del Lotto Tassa sulla stupidità. |
|
Sandro (Normal User)
Newbie
Messaggi: 10
Iscritto: 20/10/2018
|
ci sto sbattendo la testa.... ma non riesco
|
|
nessuno (Normal User)
Guru^2
Messaggi: 6378
Iscritto: 03/01/2010
|
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 nessuno il 22/10/2018 alle 10:02
Ricorda che nessuno è obbligato a risponderti e che nessuno è perfetto ...
---
Il grande studioso italiano Bruno de Finetti (uno dei padri fondatori del moderno Calcolo delle probabilità) chiamava il gioco del Lotto Tassa sulla stupidità. |
|
Sandro (Normal User)
Newbie
Messaggi: 10
Iscritto: 20/10/2018
|
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]
Codice sorgente - presumibilmente VB.NET |
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
|
|
|
nessuno (Normal User)
Guru^2
Messaggi: 6378
Iscritto: 03/01/2010
|
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 nessuno il 22/10/2018 alle 10:27
Ricorda che nessuno è obbligato a risponderti e che nessuno è perfetto ...
---
Il grande studioso italiano Bruno de Finetti (uno dei padri fondatori del moderno Calcolo delle probabilità) chiamava il gioco del Lotto Tassa sulla stupidità. |
|
Sandro (Normal User)
Newbie
Messaggi: 10
Iscritto: 20/10/2018
|
credo che il mio problema è un po' più complesso, mi spiego meglio:
ho 2 texbox: Autore ed Anno;
Inserendo il nome dell'autore e l'anno nelle rispettive textbox voglio che all'interno di una listbox mi si incolonnano tutti gli indici corrispondente a quel autore e a quell'anno corrispondente.
Ad es. se nel database mdb ho nei campi
Indice Autore Anno
1 Rossi 1998
2 Battisti 1978
3 Rossi 1991
4 Battisti 1978
5 Battisti 1975
etc.. etc..
inserendo nella textbox Autore: Battisti e nella textbox Anno: 1978
nella listbox deve incolonnarmi soltanto gli indici 2 e 4
|
|