Motore di ricerca in Visual Basic 6.0

venerdì 22 dicembre 2006 - 13.34

Tatasala Profilo | Newbie

Salve, sto realizzando un semplice programma per la gestione di una collezione di DVD. Ho creato il database in Access2000 contenente un'unica tabella (film) che raccoglie i dati dei dvd (Nome campo: Titolo, Anno, Regista, Attori, ecc..). L'interfaccia grafica per l'inserimento e la visualzzazione dei film l'ho realizzata con Visual Basic 6.0, ora vorrei implementare una funzione di ricerca per trovare velocemente i risultati dal database sempre in Visual Basic 6.0. Qualcuno mi può aiutare?
Ho trovato questo codice che visualizza direttamente i risultati in una ListBox inserendo una parola in una textbox:

Private Sub txtRicerca_Change()
Dim strR As String
Dim strSQL As String
strR = Me!txtRicerca.Text
If Not IsNull(Me!txtRicerca.Text) Then
strSQL = "SELECT ID, Nominativi " & _
"FROM [Archivio nominativi] " & _
"WHERE (Nominativi Like " & Chr$(34) & "*" & _
strR & "*" & Chr$(34) & ");"
Me!ElencoNominativi.RowSource = strSQL
Me!ElencoNominativi.Requery
Me!txtRicerca = strR
Me!txtRicerca.SetFocus
Me!txtRicerca.SelStart = 255
End If
End Sub


come faccio ad implementare questa soluzione lavorando direttamente su VB6.0?
Grazie a tutti.

sanbiz Profilo | Senior Member

Scusa, ma non o ben capito cosa vuoi fare.
Tu hai una tabella in access 2000 e hai sviluppato un'interfaccia in vb6.
Tu vuoi in vb6 una textbox che, dato parte del titolo, ti restituisca il record corretto?

L'esempio che hai postato non è ralativo alla tua applicazione vero?
In ogni caso dovresti sostituirlo con i campi della tua tabella...
Alla fine ti serve la listBox o ti serve altro...

Dacci qualche dettaglio in più.

--
Sandro Bizioli
http://blogs.dotnethell.it/sandro/

Tatasala Profilo | Newbie

Io voglio integrare nel mio programma un motore di ricerca che permetta di visualizzare i risultati inserendo una qualsiasi chiave di ricerca, ad esempio ricerca per titolo, per anno, per regista, per attore, ecc.
L'esempio che ho postato fornisce in tempo reale il risultato della ricerca nel momento in cui viene inserita la parola da ricercare. Questo codice viene inserito direttamente nella creazione della scheda del database access, io invece vorrei implementarlo direttamente nel mio programma in VB..

sanbiz Profilo | Senior Member

OK. Adesso è un filino più chiaro.
Terra terra tu vuoi creare una texbox (forse più di una, ad esempio per titolo, autore ecc,) in vb6 che fungano da filtro.
In vb6 potresti fare una routine che crea la select al variare delle textbox, una cosa del genere:

Private function mySelect as string

mySelect = "Select * from MiaTabella where titolo like '" & txtTitolo.text & "*' and autore like ' " & "txtAutore.text & "*' " .....

end function

Eccetera.
Poi creerei una Connessione al database, ad esempio con ADO a cui passare la mia select di prima e che mi restituisca un recordset da usare a mio piacere. Ad esempio con una griglia.

Ora non ho sottomano vb6 e faccio un po' fatica a fare qualche esempio. In ogni caso manda più dettagli, sulla struttura della tabella o sulle funzionalità del programma che così vediamo di proseguire passo a passo.
--
Sandro Bizioli
http://blogs.dotnethell.it/sandro/

Tatasala Profilo | Newbie

Eccomi ritornato dalle vacanze di Natale . Il motore di ricerca come lo hai detto tu va bene, ma io vorrei un motore come questo allegato nel file di esempio. Come vedi all'inserimento di una parola nella form esce contemporaneamente il risultato. Il codice per effettuare questo tipo di ricerca l'ho postato all'inizio, bisogna solo effettuare la connessione al database...mi sapete aiutare? Grazie dell'aiuto..


Riposto il codice da usare:

Private Sub txtRicerca_Change()
Dim strR As String
Dim strSQL As String
strR = Me!txtRicerca.Text
If Not IsNull(Me!txtRicerca.Text) Then
strSQL = "SELECT ID, Nominativi " & _
"FROM [Archivio nominativi] " & _
"WHERE (Nominativi Like " & Chr$(34) & "*" & _
strR & "*" & Chr$(34) & ");"
Me!ElencoNominativi.RowSource = strSQL
Me!ElencoNominativi.Requery
Me!txtRicerca = strR
Me!txtRicerca.SetFocus
Me!txtRicerca.SelStart = 255
End If
End Sub

come faccio ad impostare la connessione con il db (utilisando ADO) per utilizzare questo codice??????

Tatasala Profilo | Newbie

Ho creato una form di prova con una casella di testo chiamata txtRicerca ed una casella di riepilogo chiamata ElencoNominativi, ho modificato il codice in questo modo:

Private Sub txtRicerca_Change()
Dim strR As String
Dim strSQL As String
Set cn = New ADODB.Connection
Set rs = New ADODB.Recordset

' APRO LA CONNESSIONE E LANCIO LA QUERY PER RECUPERARE I DATI
cn.Open "driver={Microsoft Access Driver (*.mdb)};dbq=db.mdb"
rs.Open "SELECT ID, Nominativi FROM Archivio ORDER BY ID ASC", cn, 1

strR = Me!txtRicerca.Text
If Not IsNull(Me!txtRicerca.Text) Then
strSQL = "SELECT ID, Nominativi " & _
"FROM [Archivio] " & _
"WHERE (Nominativi Like " & Chr$(34) & "*" & _
strR & "*" & Chr$(34) & ");"
Me!ElencoNominativi.RowSource = strSQL
Me!ElencoNominativi.Requery
Me!txtRicerca = strR
Me!txtRicerca.SetFocus
Me!txtRicerca.SelStart = 255
End If

End Sub

Quando vado a compilare il progetto mi da questo errore: Compile error, method or datamember not found.
Dov'è ke sbaglio????

paperinik4 Profilo | Newbie

Ciao,

Anche io volevo creare un database per dvd, ma solo che ho trovato na marea di difficoltà. Innanzi tutto la ricerca, anzi direi la cosa principale. Avevo strutturato una ricerca in sql che veniva raggruppata in una listbox, ma poi con il tempo rivedendola, non mi piaceva come soluzione. Ed ho deciso di modificarla. Ossia, i veri database che vengono effettuati oggi (purtroppo non so con quale linguaggio vengono fatti), quando si effettua una ricerca di un record, danno direttamente la visualizzazione della scheda del record ricercato. Nel mio database vorrei effetuare una cosa simile, ossia senza passare da raccogliere in una listbox, ma visualizzarla direttamente in scheda, e in contemporanea, mi dovrebe dire anche quanti numeri di recod hanno le stesse iniziali. Ad esempio, se aggiungo un record con il titolo "xxx", e poi effettuo la ricerca per il record "xxx" il database mi dovrebbe dire quanti recod ha trovato con quelle iniziali, ad esempio 3 record trovati, e visualizzarmi sempre in formato scheda. Ovviamente, con delle frecce dovrei avere la possibilità di andare avanti o dietro per visualizzare le altre schede: Esempio pratico, il database ha trovato 5 titoli con lo stesse iniziali, quindi in fondo ci dovrebbe essere il numero che andando avanti scorre fino a 5. Ossia, 1/5, 2/5, 3/5,4/5, 5/% e al quinto record si deve bloccare. Sarebbe anche carino nel campo ricerca, di dare la possibilità all'utente, in qualsiasi textbox si trovi, di digitare almeno 3 lettere iniziali o 3 lettere che contengo nel campo inserito. Ad esempio: poliziotto suprpiù, mi deve dare la possibilità di trovare tutte le lettere che conego il titolo. come: pol, oppure sup, oppure più ecc,ecc
Questo lo dovrebbe effeteura in tutti i textbox. E complicato a spiegarlo, spero di essere stato abbastanza chiaro. Mi puoi aiutare ???? Ah un'altra cosa, le freccette non dovrebbero essere fatte con il classico metodo che da visual basic, ma costruite con i simboli "<<<>>>" ti prego, aspetto una tua risposta, grazie, se magari mi puoi passare il tuo codice che hai fatto, me lo potrei studiare. Grazie per l'attenzione e spero di ricevere una tua risposta al più presto. Ciao.

P.S.: Mi chiamo fabio da roma....

paperinik4 Profilo | Newbie

Ciao,

Avrei bisogno anche io di un motore di ricerca tipo quello del tuo programma. Vorrei sapere, è possibile utilizzare gli stessi textbox dove inserisci ad esempio: il nome, cognome, ecc per effettuare la ricerca ???? Senza aggiungere una textbox specifica per la ricerca. E poi volevo sapere se era possibile visualizzare il risultato della ricerca, in formato schede anzicchè raggrupparli in una listbox e selezionarli una ad una. Basterebbe anche digitare le prime 3 lettere del nome o cognome, per effettuare una ricerca. Spero di essere stato abbastanza chiaro, di quello ch emi servirebbe. Aspetto una tua risposta, grazie. La mia email è: fdefelice@fastwebnet.it

paperinik4 Profilo | Newbie

Ciao,

Avrei bisogno anche io di un motore di ricerca tipo quello del tuo programma. Vorrei sapere, è possibile utilizzare gli stessi textbox dove inserisci ad esempio: il nome, cognome, ecc per effettuare la ricerca ???? Senza aggiungere una textbox specifica per la ricerca. E poi volevo sapere se era possibile visualizzare il risultato della ricerca, in formato schede anzicchè raggrupparli in una listbox e selezionarli una ad una. Basterebbe anche digitare le prime 3 lettere del nome o cognome, per effettuare una ricerca. Spero di essere stato abbastanza chiaro, di quello ch emi servirebbe. Aspetto una tua risposta, grazie. La mia email è: fdefelice@fastwebnet.it

Tatasala Profilo | Newbie

Ciao, purtroppo sono bloccato anke io su questo benedetto motore di ricerca ... non ho info per andare avanti mi dispiace.

paperinik4 Profilo | Newbie

Ciao,
Speravo che avessi risolto anche te, ma tu hai il programma già fatto ???? E manca solo il motore di ricerca ???? E' possibile avere la sorgente dei file ???? Se per te non è un problema.

paperinik4 Profilo | Newbie

Ciao,

Ho lo stesso bisogno anche io. E mi sto ammattendo da tempo, omeglio da quando è uscito vb. Sono sempre fermo al solito punto. Mi potresti aiutare per favore ???

Tatasala Profilo | Newbie

Ciao, ho completato il motore di ricerca. Ti posto il codice che ho usato, magari ti può servire:

Private Sub Command1_Click()

Set cn = New ADODB.Connection
Set rs = New ADODB.Recordset

cn.Open "driver={Microsoft Access Driver (*.mdb)};dbq=database.mdb"
rs.Open "SELECT Titolo, Genere, Anno, Trama FROM film WHERE Titolo = '" & Text1.Text & "' " , cn, 1

Text2.Text = rs("Titolo").Value
Text3.Text = rs("Genere").Value
Text4.Text = rs("Anno").Value
Text5.Text = rs("Trama").Value

rs.Close
cn.Close

End Sub

paperinik4 Profilo | Newbie

Ciao,

Ho provato il tuo codice ma mi da ulteriotri errori rispetto alla penultima emmail che ti ho inviato. L'ultimo errore è quello che ti ho segnalato nell'ultima email. Spero che mi potrai aiutare ancora.

paperinik4 Profilo | Newbie

Ciao,

Ben dopo due anni sono ritornato. purtroppo ho lasciato un po. il programmino l'ho abbandonato da tempo. Tu hai sviluppato qualcos'altro
?????
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2014
Running on Windows Server 2008 R2 Enterprise, SQL Server 2008 & ASP.NET 3.5