Routine per lo sviluppo di database per la qualità

Lettura dei dati con DAO (Access 97) e ADO (Access 2000)

In alcuni casi, anche per sviluppatori non esperti, è utile disporre della possibilità di leggere ed intervenire sui dati delle tabelle utilizzando visual basic for application VBA, il linguaggio di programmazione che Access mette a disposizione.
Chi scrive ritiene che, dopo aver imparato ad utilizzare queste tecniche, sia più semplice l'esecuzione di calcoli complessi o molto condizionati.
In molti casi, per esempio, ho dovuto calcolare il costo di prodotti le cui lavorazioni erano registrate in un database. La formula da utilizzare era diversa in funzione dei dati scritti in una tabella.
Leggendo i dati con VBA ho avuto la possibilità di controllare ogni singolo record, eseguire il calcolo tenendo presenti i vari parametri e registrare il risultato in un campo della tabella.
In questi casi è facile inoltre verificare se i dati nella tabella sono errati: cosa succede per esempio in una normale query di calcolo se un operatore inserisce un valore nullo invece che uno 0?
Lo vedremo nei tanti esempi che pubblicheremo.
Ma oggi risolviamo un problema. Come si fa a leggere una tabella di Access con visual basic? E' una operazione complessa?
Vediamo di seguito come questo sia possibile utilizzando DAO (Data Access Object), ovvero un modello ad oggetti nativo di accesso ai dati utilizzato con Access 97 e ADO, un nuovo modello avanzato, utilizzato come standard da Access 2000 (che può ovviamente utilizzare anche DAO).
Gli esempi che troverete in questa pagina sono commentati e facilmente utilizzabili: vi permetteranno di aprire e scorrere i record di una tabella presente nel vostro database. Vi faremo vedere in altri esempi come aprire tabelle o leggere dati esterni al database. Ad ADO viene qui dato maggior spazio perchè è ad oggi lo standard.
Si consulti anche il sito www.microsoft.com/data per avere ulteriori informazioni su ADO 2.1.

Attenzione: gli esempi sotto riportati aprono e leggono i dati senza fare altro, o dare segni di vita. Non vi spaventate o scoraggiate perchè più avanti spiegheremo come fare operazioni o modificare i dati letti.


DAO
In un database si crei una semplice tabella dal nome Tabella1, la quale contiene un campo di testo che si chiama Nome. Inserite tutti i dati che volete.
La routine seguente provvederà ad aprire la tabella e scorrerà tutti i record presenti.

Private Sub Apertura_DAO()

'---------------------------------------------------------------
'Apre il database e le tabelle necessarie
'---------------------------------------------------------------

Dim db As Database
Dim rst1 As Recordset

Set db = CurrentDb
Set rst1 = db.OpenRecordset("Tabella1", dbOpenDynaset)

' ---------------------------------------
' lettura dati
' ---------------------------------------

Do Until rst1.eof
' Qui si inserisce una riga che esegue una operazione qualsiasi sul record (da vedere in altri esempi)
' Si passa al record successivo
rst1.MoveNext

Loop
Close
End Sub


ADO
In un database di nome Esempio_ADO_01 abbiamo inserito una semplice tabella dal nome Tabella1, la quale contiene due campi.
Per leggerli utilizziamo questa routine:

Sub ConnectToDatabase()
'Questa procedura stabilisce una connessione
'con il database corrente con le 2 righe sotto riportate


Dim conn As ADODB.Connection
Dim rst As ADODB.Recordset

' Riga per individuazione errori ed invio a routine di gestione
On Error GoTo Procedura_Errore

'Crea l'oggetto di connessione
Set conn = CurrentProject.Connection

'Crea un nuovo Recordset
Set rst = New ADODB.Recordset

' Apre la tabella o la query
rst.Open "Tabella1", conn

' Messaggio per confermare connessione (non è obbligatorio)
MsgBox "Connesso via " & conn.Provider & _
" OLE DB Provider!", vbInformation

' Legge i recordset
Do Until rst.EOF

' Qui si inserisce una riga che esegue una operazione qualsiasi sul record (da vedere in altri esempi)

' Si passa al record successivo
rst.MoveNext
Loop

' Chiusure
rst.Close
Set rst = Nothing

Proc_Exit:
Exit Sub

Procedura_Errore:
MsgBox Err.Description, vbCritical
Resume Proc_Exit

End Sub

Scarica il database Access 2000 d'esempio

 


Ritorna

Torna Su

Chiedi aiuto