APPUNTI ESERCITAZIONE 26/03/2001 :

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) :

Rifer.jpg (54422 bytes)

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 :

Dichiarazioni delle variabili :

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

Aggiornamento dei dati a video

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").

Connessione alla sorgente dati ( all'avvio del programma )

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=;"

odbc.gif (90986 bytes) 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

Chiusura della connessione ( all'uscita dal programma )

Private Sub Form_Unload(Cancel As Integer)
    dbConn.Close
End Sub

COme facilmente intuibile, il metodo Close, chiude la connessione dell'oggetto.

Cancellazione di un dato

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.

Modifica di un dato

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 :

Aggiunta di un dato

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 !!