Questo sito utilizza cookies solo per scopi di autenticazione sul sito e nient'altro. Nessuna informazione personale viene tracciata. Leggi l'informativa sui cookies.
Username: Password: oppure
Visual Basic 6 - Database e operatore like
Forum - Visual Basic 6 - Database e operatore like

Pagine: [ 1 2 ] Precedente | Prossimo
Avatar
fantasy89 (Normal User)
Rookie


Messaggi: 32
Iscritto: 05/12/2006

Segnala al moderatore
Postato alle 18:45
Mercoledì, 09/04/2008
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

  1. Me.lista_catalogo.Clear
  2. If Me.Text1 <> "" Then
  3.     On Error Resume Next
  4.     de.rsArchiviofilm.Open
  5.     de.rsArchiviofilm.MoveFirst
  6.     Dim cerca As String
  7.     cerca = Me.Text1
  8.         Do While Not de.rsArchiviofilm.EOF
  9.             If cerca = de.rsArchiviofilm("Titolo") Then
  10.                 Me.lista_catalogo.Clear
  11.                 Me.lista_catalogo.AddItem de.rsArchiviofilm("Titolo")
  12.             End If
  13.     de.rsArchiviofilm.MoveNext
  14.     Loop
  15.     de.rsArchiviofilm.Close
  16. 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!

PM Quote
Avatar
Shutdown (Founder Member)
Guru


Messaggi: 1212
Iscritto: 10/09/2005

Segnala al moderatore
Postato alle 23:13
Mercoledì, 09/04/2008
Non sono un esperto di VB6, anzi...
Però prova a vedere qui:

http://msdn2.microsoft.com/it-it/library/8460tsh1(VS.80).aspx

PM Quote
Avatar
P4p3r0g4 (Member)
Guru


Messaggi: 1319
Iscritto: 29/12/2006

Segnala al moderatore
Postato alle 23:14
Mercoledì, 09/04/2008
cambia
If cerca = de.rsArchiviofilm("Titolo") Then
con
If instr(de.rsArchiviofilm("Titolo"),cerca) <> 0 Then

PM Quote
Avatar
Shutdown (Founder Member)
Guru


Messaggi: 1212
Iscritto: 10/09/2005

Segnala al moderatore
Postato alle 23:15
Mercoledì, 09/04/2008
Wow paperoga ti ho battuto sul tempo! :rotfl:
Non me ne volere, ti prego! :love: :D

PM Quote
Avatar
fantasy89 (Normal User)
Rookie


Messaggi: 32
Iscritto: 05/12/2006

Segnala al moderatore
Postato alle 14:33
Giovedì, 10/04/2008
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!

PM Quote
Avatar
pasqualeclarix (Ex-Member)
Rookie


Messaggi: 58
Iscritto: 29/01/2008

Segnala al moderatore
Postato alle 0:05
Venerdì, 11/04/2008
Testo quotato

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.

PM Quote
Avatar
P4p3r0g4 (Member)
Guru


Messaggi: 1319
Iscritto: 29/12/2006

Segnala al moderatore
Postato alle 0:44
Venerdì, 11/04/2008
elimina il
                Me.lista_catalogo.Clear
dopo l'if

(non quello a inizio codice)

PM Quote
Avatar
gantonio (Normal User)
Guru^2


Messaggi: 1532
Iscritto: 09/09/2007

Segnala al moderatore
Postato alle 10:12
Venerdì, 11/04/2008
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.

PM Quote
Avatar
fantasy89 (Normal User)
Rookie


Messaggi: 32
Iscritto: 05/12/2006

Segnala al moderatore
Postato alle 10:26
Venerdì, 11/04/2008
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

  1. Me.lista_catalogo.Clear
  2.  Dim lettera As String
  3.  lettera = "A"
  4.     On Error Resume Next
  5.     de.rsArchiviofilm.Open
  6.     de.rsArchiviofilm.MoveFirst
  7.          Do While Not de.rsArchiviofilm.EOF
  8. If lettera = de.rsArchiviofilm("Lettera") Then              
  9. Me.lista_catalogo.AddItem de.rsArchiviofilm("Titolo")
  10. End If
  11.     de.rsArchiviofilm.MoveNext
  12.     Loop
  13.     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! :k:

PM Quote
Pagine: [ 1 2 ] Precedente | Prossimo