Lo scopo dell'esercitazione consiste nel gestire le operazioni principali di un DataBase attraverso la libreria ADO. Innanzitutto, per poter utilizzare questa libreria all'interno del nostro progetto, dobbiamo "spuntarla" nei riferimenti di Visual Basic (Project/References) :
![]() |
Come si può notare, la voce da spuntare e' Microsoft ActiveX Data Obiects 2.0 Library. |
Come operazioni principali all'interno di un DB, intendiamo : Visualizzazione, Inserimento, Modifica e Cancellazione. Nel nostro Form avremo quindi :
Per l'accesso ai dati tramite Visual Basic, fondamentalmente, esistono due metodi :
La differenza principale sta nel fatto che l'OLEDB effettua un accesso piu' diretto alla sorgente Dati e quindi ha prestazioni migliori rispetto all'ODBC.
Un oggetto ADO si puo' connettere a qualsiasi tipo di DataBase, sia esso locale o remoto, relazionale o non-relazionale. Il modello ADO consiste in 8 tipi di oggetto, ma i piu' importanti sono 3 :
Il modello ad oggetti ADO consiste nel dichiarare ed inizializzare variabili di tipo Connection o Recordset, sulle quali eseguire qualsiasi istruzione SQL. Inoltre alla stessa connessione possono far riferimento più Recordset.
Il nostro programma e' suddiviso in 7 sezioni :
Dim dbConn As ADODB.Connection
Dim dbCmd As ADODB.Command
Dim dbRs As ADODB.Recordset
Come possiamo notare nella dichiarazione per la manipolazione dei dati facciamo riferimento agli oggetti Connection, Command e Recordset
Private Sub riempiLista(rs As ADODB.Recordset)
List1.Clear
rs.MoveFirst
While Not rs.EOF
List1.AddItem (rs("ID") & vbTab
& rs("Pattern") & vbTab & rs("Response"))
rs.MoveNext
Wend
End Sub
Questa funzione si occupa di cancellare la lista a video e
rigenerarla con i nuovi valori del record specificato nei parametri (rs). A video
verranno proposti i campi "ID", "Pattern" e
"Response").
Private Sub Form_Load()
Set dbConn = New ADODB.Connection
Set dbCmd = New ADODB.Command
Set dbRs = New ADODB.Recordset
Per quanto riguarda la connessione alla sorgente dati, facciamo una distinzione tra i due metodi spiegati ( OLEDB e ODBC ) :
OLEDB : dbConn.Open "Provider = Microsoft.Jet.OLEDB.3.51;Data Source=path\dati.mdb"
Con questo metodo facciamo riferimento direttamente al DataBase
ODBC : dbConn.Open "DSN=Dati;USR=;PWD=;"
![]() |
Con questo metodo invece, facciamo riferimento alla base di dati di nome "dati" fornita dall'interfaccia ODBC. Quindi prima di avviare il programma, dobbiamo avviare il programma OdbCad32 per aggiungere una nuova connessione specificando il nome della connessione ( in questo caso "Dati"), il DataBase al quale si vuole far riferimento ("path\dati.mdb"), e gli eventuali UserName e Password, qualora il Database fosse protetto. |
In qualsiasi caso, una volta effettuata la connessione alla sorgente dati, inizializziamo i Set di Record che ci interessano tramite stringa SQL ( in questo caso, ci interessa solamente il record che fa riferimento alla tabella SetupData del DataBase ).
dbRs.Open "SELECT * FROM SetupData",
dbConn, adOpenKeyset, adLockOptimistic
Call riempiLista(dbRs)
End Sub
Private Sub Form_Unload(Cancel As Integer)
dbConn.Close
End Sub
COme facilmente intuibile, il metodo Close, chiude la connessione dell'oggetto.
Private Sub cmdDelete_Click()
dbRs.MoveFirst
dbRs.Find ("ID =" & Left(List1.Text, InStr(1, List1.Text,
vbTab) - 1))
dbRs.Delete
Call riempiLista(dbRs)
End Sub
Per cancellare un record specifico, basta puntarlo e chiamare il metodo Delete. Per fare questo ci mettiamo sul primo record, tramite il metodo find lo puntiamo ed infine chiamiamo il metodo Delete.
Private Sub cmdModify_Click()
Dim Valore As String
Dim Messaggio As String
dbRs.MoveFirst
dbRs.Find ("ID =" & Left(List1.Text, InStr(1, List1.Text,
vbTab) - 1))
Valore = dbRs.Fields("Pattern").Value
Messaggio = "Pattern = " & Valore & ".
Modifica?"
Valore = InputBox(Messaggio)
If Valore <> "" Then
dbRs.Fields("Pattern").Value = Valore
End If
Valore = dbRs.Fields("Response").Value
Messaggio = "Response = " & Valore & ".
Modifica?"
Valore = InputBox(Messaggio)
If Valore <> "" Then
dbRs.Fields("Response").Value =
Valore
End If
dbRs.Update
Call riempiLista(dbRs)
End Sub
Per fare questo seguiamo i seguenti passi :
Private Sub cmdAddNew_Click()
Dim Valore As String
dbRs.AddNew
Valore = InputBox("Pattern?")
If Valore <> "" Then
dbRs.Fields("Pattern").Value = Valore
End If
Valore = InputBox("Response?")
If Valore <> "" Then
dbRs.Fields("Response").Value =
Valore
End If
dbRs.Update
Call riempiLista(dbRs)
End Sub
Creiamo il nuovo Record con il metodo "AddNew" e poi, puntandolo, settiamo i due campi con i valori che ci vengono passati. Salviamo le modifiche con "Update" e chiamiamo infine la funzione di aggiornamento della lista a video.
Per scaricare i file per quest'esercitazione, premi qui !!