Newsgroup: it.comp.lang.visual-basic
Titolo: [?] Accesso ai dati con ADO

Ciao, fino ad ora ho sempre avuto accesso ai dati in questo modo:
    Dim DB As Database
    Dim rec As Recordset
    Set DB = OpenDatabase("C:\Archivi\Anagrafiche.mdb")
    Set rec = DB.OpenRecordset("OrdiniProdRighe")
    rec!codice=XXX
e non saprei dire se questo è RDO o DAO, so però che non è ADO. Qualcuno
saprebbe farmi un esempio su come accedere ad un file .MDB (su locale e non)
con ADO. Sulla guida non ho trovato niente come esempi!!!
Grazie 1000.
Paolo :-)

 con ADO. Sulla guida non ho trovato niente come esempi!!!
Mi accodo e attendo anch'io.
Spiegatelo come avessi sei anni! :-)))

 ha scritto nel messaggio
news:mTG26.194412$hk4.7...@news.infostrada.it...


    rec!codice=XXX

Ok, proviamo a fare un po di chiarezza l' argomento. Questo esempio
che hai postato tu stà utilizzando DAO. Cominciamo da zero.
DAO (Data Access Objects):
E' stata la prima interfaccia verso un database utilizzando il modulo
utilizzato da Access (Microsoft Jet). COnsente una connessione diretta
a tabelle access e ad altri database mediante ODBC. Dovrebbe andar
bene (ti assicuro che è più veloce) per gestire database locali.
RDO (Remote Data Objects)
E' un interfaccia orientata a oggetti via ODBC (considera l' accesso a
un database che non è sul tuo pc) implementata con le funzionalità di
DAO. Pur non essendo un granchè, permette infatti l' unico accesso
tramite ODBC e non ti da molto per accedere a database Jet, so che è
stato scelto da molti programmatori per gestire database anche di
grosse dimensioni, sia Oracle che non, perchè offre le proprietà e i
metodi per accedere a cose complicate come stored procedure (non ti
stò a spiegare molto di più sull' argomento, primo perchè non so molto
e poi perchè questo dovrebbe bastarti a capire la differenza tra i
tre).
ADO (ActiveX Data Objects)
E' il fratello piccolo di DAO/RDO, infatti è la fusione/misto dei due.
Dal punto di vista funzionale è molto simile all' RDO, ma più semplice
sia di questo che del DAO, perchè include un numero minore di oggetti
(si capisce meglio vedendo un esempio) ma un maggior numero di
proprietà e metodi.
Per quello che ho visto io su databse locali perde un po di tempo per
accederci e per eseguire normali istruzioni Sql, ad esempio ho fatto
un programma che crea un db utilizzando la sintassi di DAO, ma poi ci
accedo utilizzando ADO. Dal punta di vista delle prestazioni è
leggermente più lento ADO di DAO, ma è più semplice da gestire a
livello di codice, e inoltre puoi aprire contemporaneamente più
connessioni e controllarle come vuoi.
Questo più o meno :)) è quello che so sui tre modi di accesso a un
database, la sintassi per accedere a un db tramite DAO la conosci già,
è quella che hai utilizzato fin' ora, io ti spiego velocemente quello
che so su ADO.
Come facevi per il DAO, anche per l' ADO quando lo utilizzi in un tuo
progetto, devi ricordarti di aggiungere una libreria (progetto ->
riferimenti) e scegliere "Microsoft ActiveX Data Objects xxxxxx".
L' unico concetto nuovo che trovi qui è quello di CONNESSIONE; come in
DAO specificavi il path del tu db, qui usi un oggetto che si ingloba
tutto quello che ti serve per collegarti ad un database (path e altre
cose che vedremo). Ti scrivo un semplicissimo esempio per farti
capire. Questo è l' equivalente ADO di quello che hai scritto tu:
    Dim miaConnessione As ADODB.Connection
    Dim mioRecordset As ADODB.Recordset
 
    Set miaConnessione = New ADODB.Connection
 
    miaConnessione.ConnectionString =
                               "Provider=Microsoft.Jet.OLEDB.4.0;" & _
                               "Data Source=" & "path_del_tuo_db;"
 
    miaConnessione.Open
    Set mioRecordset = New ADODB.Recordset
    Recset.ActiveConnection = miaConnessione
    Recset.Source = "SELECT * FROM tua_tabella"
    Recset.CursorType = adOpenForwardOnly
    Recset.Open
Questo sempilce esempio apre una connessione a un database locale,
utilizzando un PROVIDER (è come se gli dicessi che tipo di database è
quello a cui vuoi accedere e che driver deve utilizzare) e un DATA
SOURCE (che definisce il path fisico del tuo db). A questo punto apri
la connessione al db e puoi accedere alle tabelle che ci sono dentro.
Le righe che seguono ti consentono di popolare il tuo recordset:
1) Set mioRecordset = New ADODB.Recordset
    crei un oggetto recordset (come hai fatto per la connessione)
2) Recset.ActiveConnection = miaConnessione
    gli dici su quale connessione eseguire la tua richiesta (quindi su
    quale file fisico)
3) Recset.Source = "SELECT * FROM tua_tabella"
    specifichi la tua stringa Sql
4) Recset.CursorType = adOpenForwardOnly
    rappresenta il tipo di accesso al database, sulla guida ti spiega
    bene
5) mioRecordset.Open
Fin qui hai detto all' oggetto recordset che vuoi da lui e gli fai
eseguire la tua richiesta. Ora hai un recordset popolato in funzione
della tua richiesta.
Una cosa importante in ADO è la definizione di COMANDO, quando con l'
Sql crei una tabella, aggiungi o modifichi un record, cancelli un
record, esegui un comando sql, in ADO puoi gestire da codice le
istruzioni che vanno a modificare il db, in questo modo puoi
confermare le tue modifiche o riportare tutto come era prima. Il tutto
funziona in questo modo:
    Dim mioComando As ADODB.Command
 
    Set mioComando = New ADODB.Command
    mioComando.ActiveConnection = Conessione
    mioComando.CommandText = "UPDATE SET nome = 'pippo' WHERE" & _
                                                   "cognome = 'pluto'"
    mioComando.Execute
 
    miaConnessione.BeginTrans
 
    If MsgBox("Confermi?", vbYesNo) = vbYes Then
        miaConnessione.CommitTrans
    Else
        miaConnessione.RollbackTrans
    End If
Questo è il minimo per iniziare a utilizzare ADO, io to consiglio di
fare qualche prova e semmai chiedi qua che qualcuno ti ripsonde, lo
usano in tanti :))
Saluti...

Ok, proviamo a fare un po di chiarezza l' argomento. Questo esempio
]zac[