- Πολλές φορές η απλοϊκή πρόσβαση στη βάση μέσω του data control δεν
είναι αρκετή και απαιτείται ανάγνωση και εγγραφή των δεδομένων μέσα
από το πρόγραμμα.
- Το πρώτο βήμα είναι η σύνδεση με τη βάση δεδομένων:
Dim dbsDb As Database
Set dbsDb = OpenDatabase("Inventory.mdb")
- Επειδή η σύνδεση αυτή απαιτεί συχνά χρόνο για να δημιουργηθεί
συχνά την κρατάμε για όλο το διάστημα λειτουργίας του προγράμματος
σε μια καθολική μεταβλητή (global variable):
Global dbsDb As Database
Sub Main()
Set dbsDb = OpenDatabase("Inventory.mdb")
- Πρόσβαση στα δεδομένα έχουμε μέσω του συνόλου εγγραφών RecordSet.
- Για να μη βασιζόμαστε στη δομή των πινάκων της βασης προτείνουμε
κάθε πρόσβαση να γίνεται μέσω μιας ερώτησης (query)
ή αποθηκευμένης διαδικασίας (stored procedure) της
βάσης με τις αντίστοιχες παραμέτρους.
- Πρόσβαση στις ερωτήσεις έχουμε μέσω του αντικειμένου QueryDef.
Dim qry As QueryDef
Dim rst As Recordset
Set qry = dbsDb.QueryDefs("ComputerById")
qry.Parameters("Id") = "34673"
- Με βάση την ερώτηση μπορούμε να ανακτήσουμε τις εγγραφές:
Set rst = qry.OpenRecordset
- Στη συνέχεια μπορούμε να περάσουμε από κάθε εγγραφή με ένα βρόχο:
do while not rst.EOF
...
loop
- ή να ελέγξουμε να υπάρχουν αποτελέσματα που να ικανοποιούν τη
συνθήκη αυτή:
If not rst.EOF Then
...
- Πρόσβαση στα πεδία των εγγραφών έχουμε με βάση το όνομα του κάθε πεδίου:
MsgBox rst("ItemName")
- Όταν θέλουμε να μεταβάλλουμε τα περιεχόμενα των πεδίων πρέπει πρώτα
να καλέσουμε τη μέθοδο Edit, ενώ για να προσθέσουμε μια νέα εγγραφή καλούμε
τη μέθοδο AddNew:
if rst.EOF
rst.AddNew
Else
rst.Edit
End If
rst("ItemName") = "The Art of Computer Programming"
- Όταν ολοκληρωθούν οι αλλαγές καλούμε τη μέθοδο Update:
rst.Update
- Στο τέλος της πρόσβασης στα δεδομένα καλούμε τη μέθοδο Close
για κάθε Open που χρησιμοποιήσαμε:
rst.Close
qry.Close
dbsDB.Close