Recordsets
823
Programmierung
Abbildg. 38.2
Aufbau der Datenzugriffsobjekte
Der Datenbankkern von Access ist die Jet-Database-Engine, die als Objekt
DBEngine
die oberste Ebene
der DAO-Datenzugriffsobjekte bildet. Auf dem
DBEngine
-Objekt können mehrere Arbeitsbereiche,
Workspaces
, aufsetzen. Im Normalfall (und hier im Buch) wird nur ein Arbeitsbereich verwendet. Die-
ser ist standardmäßig definiert. In einem Arbeitsbereich können eine oder mehrere Datenbanken,
Databases
, geöffnet sein. Auch hier wird in den meisten Fällen nur eine Datenbank, nämlich die aktu-
elle, verwendet. Innerhalb einer Datenbank existieren ein oder mehrere
TableDef
-Objekte. Jedes
TableDef
-Objekt repräsentiert eine lokale oder verknüpfte Tabelle. Für jedes
TableDef
-Objekt ist eine
Auflistung der Felder,
Fields
, vorhanden, in der die Felder der Tabelle mit ihren Eigenschaften
beschrieben werden. Zusätzlich enthält das
TableDef
-Objekt eine Auflistung aller Indizes,
Indexes
.
Alle Abfragen lassen sich mithilfe von
QueryDef
-Objekten ansprechen und ausführen. Die Felder
einer Abfrage befinden sich in der dazugehörigen
Fields
-Auflistung, während die Abfrageparameter
in der Auflistung
Parameters
beschrieben werden.
Die meistgenutzten Objekte sind
Recordsets
. Ein Recordset ist eine Datensatzgruppe: die Menge
aller Datensätze einer Tabelle oder das Ergebnis einer Abfrage. Im weiteren Verlauf des Kapitels wer-
den wir uns in erster Linie mit
Recordsets
beschäftigen.
Alle weiteren Datenzugriffsobjekte sind nur für die fortgeschrittene Programmierung interessant
und sollen daher hier nicht weiter beschrieben werden.
Recordsets
Einem Recordset liegt immer eine Tabelle, eine Abfrage oder direkt ein SQL-Befehl zugrunde. Jedes
Recordset erhält aufgrund der Datenbasis entsprechende Felder, die in einer
Fields
-Auflistung ver-
waltet werden.
Ein
Recordset
wird mithilfe des Befehls
OpenRecordset()
geöffnet.
Set recordset = Datenbank.OpenRecordset(Quelle [,Typ [,Optionen]])
Kapitel 38
Datenzugriff mit DAO
824
Der Befehl kann auch statt für die Datenbank für ein
Recordset
-,
QueryDef
- oder
TableDef
-Objekt
eingesetzt werden, wie wir es im Abschnitt »Abfragen nutzen mit QueryDefs« erläutern.
Die Parameter
Typ
und
Optionen
der
OpenRecordset()
-Methode sind optional. Geben Sie keinen Typ
an, weist Access automatisch einen passenden Typ zu. Geben Sie einen falschen Typ an (versuchen
Sie beispielsweise, eine verknüpfte Tabelle mit
dbOpenTable
zu öffnen), wird ein Fehler ausgelöst.
Der Typ eines Recordsets kann mithilfe einer der in der folgenden Tabelle aufgeführten Konstanten
festgelegt werden.
Für den Parameter
Optionen
des
OpenRecordset()
-Befehls lässt sich eine Vielzahl von Parametern
angeben, von denen wir Ihnen zwei vorstellen möchten. Mit
dbReadOnly
können Sie das Recordset
nur für Leseoperationen öffnen, während
dbAppendOnly
nur das Anfügen neuer Datensätze erlaubt.
Einsatzbeispiele
Wir möchten Ihnen im Folgenden einige kleine Beispiele zum Öffnen von Recordsets geben. Zuerst
wird die Tabelle tblFilme mit den Standardeinstellungen geöffnet. Liegt die Tabelle in der aktuellen
Datenbank vor, wird sie mit
dbOpenTable
geöffnet, ist sie verknüpft, wird automatisch
dbOpenDynaset
benutzt.
CurrentDB
gibt einen Verweis auf das aktuell geöffnete Datenbankobjekt zurück, also auf die Daten-
bank, in der die Programmzeilen ausgeführt werden.
Im zweiten Beispiel wird eine Tabelle mit der Option
dbReadOnly
geöffnet, die Daten der Tabelle
können also nur gelesen werden.
Tabelle 38.1
Recordset-Typen
Konstante Beschreibung
dbOpenTable
Mit einem Recordset vom Typ
Table
greifen Sie direkt auf eine lokale Tabelle zu,
also eine in der aktuellen Datenbank abgelegte Tabelle. Die Daten der Tabelle
können bearbeitet werden.
dbOpenDynaset
Ein Recordset vom Typ
Dynaset
besteht aus Zeigern auf die Daten von Tabellen
oder Abfragen, d.h. es wird nur ein eindeutiger Schlüssel für jeden Datensatz in
den lokalen Speicher geladen. Die Daten können in den meisten Fällen editiert
werden.
dbOpenSnapshot
Ein
Snapshot
repräsentiert eine Kopie der Daten zu einem bestimmten Zeit-
punkt. Änderungen, die nach der Erstellung des Snapshot-Recordsets aufge-
treten sind, werden nicht berücksichtigt. Die Daten in einem Snapshot können
nicht bearbeitet werden.
dbOpenForwardOnly
Ein Recordset dieses Typs verhält sich wie ein Snapshot, kann aber nur von
vorne nach hinten durchlaufen werden.
Dim rst As DAO.Recordset
Set rst = CurrentDB.OpenRecordset("tblFilme")
Dim rst As DAO.Recordset
Set rst = CurrentDb.OpenRecordset("tblWochen", , dbReadOnly)

Get Microsoft Office Access 2007 - Das Handbuch now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.