fantasy89 (Normal User)
Rookie
Messaggi: 32
Iscritto: 05/12/2006
|
Cari amici programmatori! Ancora una volta ho bisogno del vostro aiuto... Bene iniziamo allora sto creando un form che si collega ad un database creato con access che contiene i dati di vari film... praticamente una videoteca... Fino ad ora tutto ok... Riesco a far visualizzare nella listbox tutti i titoli dei film e riesco a fare visualizzare in varie text box i relativi dettagli (come esempio autore, durata, anno ecc).
Il problema si presenta quando creo una textbox per effettuare delle ricerche del database... il codice del button per avviare una ricerca è il seguente:
Codice sorgente - presumibilmente VB.NET |
Me.lista_catalogo.Clear If Me.Text1 <> "" Then On Error Resume Next de.rsArchiviofilm.Open de.rsArchiviofilm.MoveFirst Dim cerca As String cerca = Me.Text1 Do While Not de.rsArchiviofilm.EOF If cerca = de.rsArchiviofilm("Titolo") Then Me.lista_catalogo.Clear Me.lista_catalogo.AddItem de.rsArchiviofilm("Titolo") End If de.rsArchiviofilm.MoveNext Loop de.rsArchiviofilm.Close End If
|
Il problema è che se io non scrivo nella text di ricerca esattamente la parola presente nel database questo non da risultati... quandi se un titolo di un film fosse per esempio "Mortal Kombat" io dovrei scriverlo esattamente così... vorrei magari scrivere solo "Mortal" e grazie all'operatore like lui mi visualizzasse ugualmente il titolo "Mortal Kombat"...
Non so se la cosa è fattibile... Aspetto consigli da voi più esperti! Grazie e scusate per la lunghezza!
|
|
Shutdown (Founder Member)
Guru
Messaggi: 1212
Iscritto: 10/09/2005
|
|
|
P4p3r0g4 (Member)
Guru
Messaggi: 1319
Iscritto: 29/12/2006
|
cambia
If cerca = de.rsArchiviofilm("Titolo") Then
con
If instr(de.rsArchiviofilm("Titolo"),cerca) <> 0 Then
|
|
Shutdown (Founder Member)
Guru
Messaggi: 1212
Iscritto: 10/09/2005
|
Wow paperoga ti ho battuto sul tempo!
Non me ne volere, ti prego!
|
|
fantasy89 (Normal User)
Rookie
Messaggi: 32
Iscritto: 05/12/2006
|
Bene! Grazie mille! Però ci sarebbe un piccolo problema, se effettuo una ricerca con questo nuovo codice il programma mi darà come risultato un solo titolo...
Esempio: Se ho due titoli "Accadde a Natale" e "Accadde in Autunno" e io uso nel campo di ricerca la parola "Accadde" come risultato mi visualizza un solo titolo e non entrambi... Non saprei come risolvere, Poi vorrei ben capire cosa fa questa funzione InStr nel mio progetto perchè non mi è molto chiaro... Grazie mille!
|
|
pasqualeclarix (Ex-Member)
Rookie
Messaggi: 58
Iscritto: 29/01/2008
|
Postato originariamente da fantasy89:
Bene! Grazie mille! Però ci sarebbe un piccolo problema, se effettuo una ricerca con questo nuovo codice il programma mi darà come risultato un solo titolo...
Esempio: Se ho due titoli "Accadde a Natale" e "Accadde in Autunno" e io uso nel campo di ricerca la parola "Accadde" come risultato mi visualizza un solo titolo e non entrambi... Non saprei come risolvere, Poi vorrei ben capire cosa fa questa funzione InStr nel mio progetto perchè non mi è molto chiaro... Grazie mille! |
La funzione InStr non so se hai dato un'occhiata in giro non é altro che...
Cercare (il tuo nome, all'interno di un qualcosa)
se esiste 'Giova' all'interno di 'Giovanni' lui te lo trova...
E' una specie di Filtro! Se vogliamo chiamarlo in tal modo.
Spero che queste due riga ti possano essere d'aiuto. |
|
P4p3r0g4 (Member)
Guru
Messaggi: 1319
Iscritto: 29/12/2006
|
elimina il
Me.lista_catalogo.Clear
dopo l'if
(non quello a inizio codice)
|
|
gantonio (Normal User)
Guru^2
Messaggi: 1532
Iscritto: 09/09/2007
|
Il codice (ovviamente senza la Clear nel ciclo) funzionera'.
Ma in questi casi la selezione va fatta fare al motore del database (altrimenti che ci sta a fare?) eseguendo una query del tipo
SELECT * FROM Tabella WHERE Campo LIKE 'dato%'
e visualizzando il risultato tramite il recordset restituito.
|
|
fantasy89 (Normal User)
Rookie
Messaggi: 32
Iscritto: 05/12/2006
|
Cari amici finalmente grazie a voi il mio progetto è quasi completo, grazie a voi ho imparato ad usare questa nuova funzione "Instr" che a mio avviso è molto utile!
Una ultima cosa e poi non vi disturberò più... Allora adesso il mio form di ricerca effettua ricerche per titolo, per parti di titolo (usando appunto la funzione "Instr", ma non effettua ancora ricerche per lettera... Allora ho fatto una bella cosa, sul database ho aggiunto un nuovo campo "Lettera" nel quale per ogni record è inserita la lettera con la quale inizia il campo "Titolo", quindi così facendo con il seguente codice mi visualizza i soli Titoli che iniziano con una determinata lettera:
Codice sorgente - presumibilmente VB.NET |
Me.lista_catalogo.Clear Dim lettera As String lettera = "A" On Error Resume Next de.rsArchiviofilm.Open de.rsArchiviofilm.MoveFirst Do While Not de.rsArchiviofilm.EOF If lettera = de.rsArchiviofilm("Lettera") Then Me.lista_catalogo.AddItem de.rsArchiviofilm("Titolo") End If de.rsArchiviofilm.MoveNext Loop de.rsArchiviofilm.Close
|
Secondo voi è un buon metodo??? A me funziona molto bene. Se magari non è molto buono c'è un modo per far capire al prgramma con che lettera inizia una parola o un record?? Grazie a tutti e scusate per le troppe domande ma la curiosità di imparare sempre di più è tanta!
|
|