PDA

View Full Version : Database con VB 6


komet
16-01-2005, 18:18
Salve a tutti, mi sono avvicinato da poco al mondo del visual basic e avrei bisogno di qualche aiutino.
Qualcuno mi potrebbe dire come inserire una funzione di ricerca all'interno di un database da me creato.
Il database va bene, ma non riesco ad inserire qualche funzione per effettuare la ricerca a seconda dei campi, cioè dovrei poter trovare una parola scegliendo il campo in cui cercarlo.
Ringrazio tutti quelli che mi potranno essere d'aiuto.

RaouL_BennetH
16-01-2005, 18:21
Che metodo utilizzi per aprire il database, DAO o ADO?

E inoltre, il database che db è? access? mysql?

komet
16-01-2005, 18:32
io uso un file di access per il database
per quanto riguarda il tipo di database, non so cosa significa ado o dao. se mi puoi spiegare cosa significa per favore?

RaouL_BennetH
16-01-2005, 18:47
Originariamente inviato da komet
io uso un file di access per il database
per quanto riguarda il tipo di database, non so cosa significa ado o dao. se mi puoi spiegare cosa significa per favore?

ok, ma prima potresti dirmi come effettui la connessione al tuo database access?

komet
16-01-2005, 19:15
allora io ho il database in access, e uso un controllo data per collegarmi al database e visualizzo i dati in textbox.

In ogni caso mi potresti indicare dove posso trovare qualche guida alla programmazione di database con visual basic?
Grazie infinite

komet
16-01-2005, 21:07
Ho fatto come mi avete detto, ma da dove mi avete indicato non c'era niente riferito alla funzione cerca all'interno di un database.
Qualcuno mi potrebbe indicare dove trovare una guida a visual basic dove spiega come inserire la funzione cerca all'interno di un database facendo si da poter scegliere in quale campo effettuare la ricerca.
Grazie mille

komet
17-01-2005, 22:14
Nessuno può aiutarmi a risolvere il mio quesito?

RaouL_BennetH
21-01-2005, 11:08
Ciao, allora, io posso dirti il metodo che uso io per connettermi ad un database, leggere, modificare, cancellare dati e ricercarli.

supponiamo che il mio progetto sia in c:\prove\

mi creo stesso li dentro il database access che chiamerò ad esempio:

prova.mdb.

Ora, da Visual Basic, scelgo:

Progetto - Componenti - Microsoft ActiveX Data Object 2.7 (che è quella che ho io, la tua potrebbe essere la stessa o differire nella versione, 2.6 per esempio).

Questo mi consentirà di usare ADO per la connessione al mio database, in questa maniera:



Option Explicit

Dim cn As ADODB.Connection ' cn è un nome arbitrario
Dim rs As ADODB.Recordset 'rs è un nome arbitrario
Dim cerca As String 'variabile di nome cerca di tipo String

Private Sub Form_Load()

'comincio a settare i parametri per la connessione

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

'connessione al database:

cn.ConnectionString = "Provider = Microsoft.Jet.OLEDB.4.0; Datasource=" & App.Path & "\prova.mdb"

cn.Open

'ora sono connesso al mio database prova.mdb

'supponiamo che abbia un pulsante di comando di nome cerca
'e che sul form abbia una casella di testo dove inserire il nome da cercare
'e una flexgrid dove visualizzare i dati, farò:

Private Sub cerca_click()

cerca = ""
cerca = cerca & "SELECT Cognome" & VbCrlf ' dico di selezionare tutti i record Cognome"

cerca = cerca & "FROM tabella_database" & VbCrlf 'dalla specifica tabella

cerca = cerca & "WHERE Cognome LIKE ' " text1.Text " '
'dove il cognome è uguale a quello scritto nella casella di testo

set rs = cn.Execute(cerca) 'gli dico di eseguire quanto sopra

while not (rs.EOF) 'fin quando non arrivo alla fine del file

flexgrid.additem rs("Cognome")

'dico alla flex grid di aggiungere a video il cognome che ho cercato

rs.movenext
'dico di spostarsi sul prossimo record

Wend 'fine while



E' chiaro che questo è un esempio da ampliare e ottimizzare, magari aggiungendo controlli in caso il termine ricercato non ci sia, di farti restituire un messaggio che dica "Nessun record trovato".

Ma spero che renda l'idea :)

komet
06-02-2005, 10:41
Ti ringrazio pe tutto ciò che mi hai detto e mi scuso per il ritardo con cui mi sono fatto sentire, ma non mi potevo collegare ad internet perchè ho cambiato il mio abbonamento e mi sono trovato un periodo senza collegamento.
Ti ringrazio ancora e ti volevo chiedere se mi puoi indicare un sito o una guida su tutto quello che mi hai detto e sulla realizzazione di database con visual basic.
Grazie ancora

komet
07-02-2005, 21:10
Ciao scusami se ti assillo, ma mi da un errore su questa stringa.

set rs = cn.Execute(cerca)

Potresti dare un'occhiata per favore.

Grazie e scusami ancora per il disturbo

matpez
07-02-2005, 23:14
Controlla bene la tua query contenuta dentro la variabiel "cerca" ... perchè molto probabilmente è sbagliata :)

RaouL_BennetH
08-02-2005, 13:15
Originariamente inviato da komet
Ciao scusami se ti assillo, ma mi da un errore su questa stringa.

set rs = cn.Execute(cerca)

Potresti dare un'occhiata per favore.

Grazie e scusami ancora per il disturbo

potresti provare a postare il codice, così magari ci si può rendere conto meglio ;)

komet
08-02-2005, 17:35
vi posto il codice della mia applicazione.

Option Explicit
Dim cn As ADODB.Connection 'cn è un nome arbitrario
Dim rs As ADODB.Recordset 'rs è un nome arbitrario
Dim cerca As String 'variabile di nome cerca di tipo String

Private Sub frm_database()
Set cn = New ADODB.Connection
Set rs = New ADODB.Recordset
cn.ConnectionString = "Provider = Microsoft.Jet.OLEDB.4.0; Datasource=" & App.Path & "\bambini.mdb"
cn.Open
End Sub

Private Sub cmd_ricerca_Click()
cerca = ""
cerca = cerca & "SELECT Cognome" & vbCrLf
cerca = cerca & "FROM bambini" & vbCrLf
cerca = cerca & "WHERE Cognome LIKE ' " & txt_ricerca.Text '
Set rs = cn.Execute(cerca)
While Not (rs.EOF)
flexgrid.AddItem rs("Cognome")
rs.MoveNext
Wend 'fine while
End Sub

Mi potete aiutare per favore.
Grazie a tutti

matpez
08-02-2005, 23:27
L'errore è qui, questa è la correzione:

cerca = cerca & "WHERE Cognome LIKE '" & txt_ricerca.Text & "'"

komet
09-02-2005, 19:18
Il problema me lo da ancora e nello stesso punto, cioè qui

set rs = cn.Execute(cerca)

mi aiutate per favore?

Grazie a tutti

matpez
09-02-2005, 19:45
Prova a dire almeno l'errore... :)

matpez
09-02-2005, 19:48
La query con l'aggiunta che ti ho detto io funziona, l'unica cosa è che metti degli apostrofi, è possibile?

Cmq è meglio che dici che errore ti da ;)

komet
09-02-2005, 20:01
mi da il seguente errore

Errore di run-time '91':
Variabile oggetto o variabile del blocco With non impostato

Cliccando su debug, mi si posiziona automaticamente sulla stringa che ho detto in precedenza.

Ciao e grazie ancora

matpez
09-02-2005, 21:46
Ma tu dove richiami questa sub? frm_database()

Nella load della form?

E cmq ti conviene chiamarla senza il frm_ davanti al nome, perchè così fai solo confusione!

komet
09-02-2005, 23:23
non ho capito bene cosa vuoi dire, ma se ti riferisci alla barra che c'è sopra, allora li ho selezionato la voce "generale", e comunque non gira.
In caso non è quello, allora non so a cosa ti riferisci.
Grazie ancora.

matpez
10-02-2005, 10:13
Zippa e metti qui il tuo progetto con il database, così ci posso dare un occhiata ;)