Kapitel 38
Datenzugriff mit DAO
846
Wir möchten Ihnen empfehlen, die Zuweisung von
CurrentDb
an eine (evtl. globale) Variable zu Beginn
einer Anwendung durchzuführen und im weiteren Verlauf des Programms nur noch mit der Variablen
zu arbeiten, denn der Nachteil von
CurrentDb
ist die Ausführungsgeschwindigkeit:
CurrentDb
ist sehr
langsam.
Eine Datenbank öffnen
Mithilfe der Methode
OpenDatabase()
können Sie eine beliebige Datenbank öffnen. In einem
Database
-Objekt befinden sich Auflistungen der Tabellen, Abfragen usw.
Die Datenbank CineArchiv
im Ordner CineCity öffnen Sie beispielsweise mit den folgenden Zeilen:
Zugriff auf Tabellendefinitionen
Die Tabellen einer Datenbank werden in der Auflistung
TableDefs
innerhalb eines Datenbank-
objekts verwaltet. In der Auflistung befinden sich alle Tabellen, also sowohl Systemtabellen als auch
ausgeblendete und eingebundene Tabellen.
Das folgende Unterprogramm ermittelt einige Eigenschaften für alle Tabellen der aktuellen Daten-
bank. Mithilfe einer
For Each
-Schleife werden alle Tabellenobjekte durchlaufen und die entsprechen-
den Eigenschaften im Testfenster ausgegeben:
Abbildg. 38.11
Eigenschaften der Tabellen
Dim dbArchiv As DAO.Database
Set dbArchiv = DAO.OpenDatabase("C:\CineCity\CineArchiv.accdb")
Sub AlleTabellen_DAO()
Dim db As DAO.Database
Dim tbl As DAO.TableDef
Set db = CurrentDb()
' Für alle Tabellen in der TableDefs-Auflistung
For Each tbl In db.TableDefs
Debug.Print tbl.Name; " – "; tbl.DateCreated; " – ";
Debug.Print tbl.LastUpdated; " – "; tbl.RecordCount
Next
End Sub
Zugriff auf Tabellendefinitionen
847
Programmierung
Die folgende Tabelle listet einige der Eigenschaften von
TableDef
-Objekten auf.
Für die Tabellenattribute (Eigenschaft
Attributes
) sind die in der folgenden Tabelle aufgeführten
Konstanten in Access definiert.
Die folgende Funktion ermittelt die Existenz einer Tabelle in der
TableDefs
-Auflistung, wobei auch
ausgeblendete Tabellen und Systemobjekte berücksichtigt werden.
Tabelle 38.5
Ausgewählte Tabelleneigenschaften
Eigenschaft Beschreibung
Name
Gibt den Namen der Tabelle an
Updatable
Bestimmt, dass das Tabellenobjekt verändert werden kann, wenn
die Eigenschaft den Wert
Wahr
zurückgibt
DateCreated
Gibt das Erstellungsdatum der Tabelle an
LastUpdated
Gibt das Datum der letzten Bearbeitung an
Connect
Erhält bei verknüpften Tabellen einen String mit dem Pfad und
dem Namen der verknüpften Datenquelle
SourceTableName
Beinhaltet bei verknüpften Tabellen den Namen der Tabelle der
verknüpften Datenquelle
Attributes
Attribute einer Tabelle (Ï Tabelle 38.6)
RecordCount
Gibt die Anzahl der Datensätze in der Tabelle an; bei verknüpften
TableDef
-Objekten hat die
RecordCount
-Eigenschaft immer den
Wert1
ValidationRule
Gibt die Gültigkeitsregel für die Tabelle an
ValidationText
Gibt den Text an, der bei Verletzung der Gültigkeitsregel der Tabelle
angezeigt wird
Tabelle 38.6
Konstanten für Tabellenattribute
Konstante Beschreibung
dbSystemObject
Systemtabelle
dbHiddenObject
Ausgeblendete Tabelle
dbAttachedTable
Eingebundene Tabelle
dbAttachedODBC
Eingebundene ODBC-Tabelle
dbAttachSavePWD
Eingebundene Tabelle, für die Benutzerkennung und Passwort
gespeichert wird
dbAttachExclusive
Exklusiv eingebundene Tabelle
Kapitel 38
Datenzugriff mit DAO
848
Die Auflistung Fields
Jede Tabelle besteht aus Feldern, die mithilfe von
Field
-Objekten in einer
Fields
-Auflistung
beschrieben werden. Die folgende Routine listet für alle Tabellen der aktuellen Datenbank die Felder
auf. Dabei wird die anschließend aufgelistete Funktion
FeldTyp()
verwendet, die den Typ des jewei-
ligen Feldes als String zurückgibt.
Function TableExists_DAO(ByVal strTableName As String) As Boolean
Dim tbl As DAO.TableDef
For Each tbl In CurrentDb().TableDefs
If tbl.Name = strTableName Then
TableExists_DAO = True
Exit Function
End If
Next
TableExists_DAO = False
End Function
Sub TabellenFelder_DAO()
Dim db As DAO.Database
Dim tbl As DAO.TableDef
Dim fld As DAO.Field
Set db = CurrentDb()
' Für alle Tabellen der TableDefs-Auflistung
For Each tbl In db.TableDefs
With tbl
Debug.Print "Tabellenfelder für : "; .Name
' Für alle Felder der jeweiligen Tabelle
For Each fld In .Fields
With fld
Debug.Print "FELD: "; .Name
Debug.Print "Feldtyp="; FeldTyp_DAO(fld)
Debug.Print "Size="; .Size
Debug.Print
End With
Next
End With
Debug.Print
Next
End Sub
Zugriff auf Tabellendefinitionen
849
Programmierung
Die folgende Tabelle enthält die in einem
Field
-Objekt verwalteten Eigenschaften. Beachten Sie
dabei, dass
Field
-Objekte nicht nur in
TableDef
-Objekten, sondern auch in
Recordset
-Objekten
verwendet werden.
Function FeldTyp_DAO(fld As DAO.Field) As String
Select Case fld.Type
Case dbBoolean:
FeldTyp_DAO = "Boolean"
Case dbByte:
FeldTyp_DAO = "Byte"
Case dbInteger:
FeldTyp_DAO = "Integer"
Case dbLong:
FeldTyp_DAO = "Long Integer"
Case dbCurrency:
FeldTyp_DAO = "Währung (Currency)"
Case dbSingle:
FeldTyp_DAO = "Single"
Case dbDouble:
FeldTyp_DAO = "Double"
Case dbDate:
FeldTyp_DAO = "Datum (Date)"
Case dbText:
FeldTyp_DAO = "Text"
Case dbLongBinary:
FeldTyp_DAO = "Binärdaten (Bitmap, OLE-Objekt)"
Case dbMemo:
FeldTyp_DAO = "Memo"
Case dbGUID:
FeldTyp_DAO = "GUID"
Case dbAttachment:
FeldTyp_DAO = "Anlagedaten"
Case Else
FeldTyp_DAO = "Unbekannt"
End Select
End Function
Tabelle 38.7
Feldeigenschaften
Eigenschaft Beschreibung
Name
Gibt den Namen des Feldes zurück
Type
Gibt den Datentyp (siehe Tabelle 38.9) zurück
Size
Liefert die Größe des Feldes
Attributes
Liefert die Attribute (siehe Tabelle 38.11)
AllowZeroLength
Erlaubt Null-Werte im Feld, wenn die Eigenschaft wahr ist
CollatingOrder
Gibt die länderspezifische Sortierreihenfolge für das Feld an
DefaultValue
Liefert den Standardwert
Required
Gibt an, dass eine Eingabe in das Feld erforderlich ist, wenn die Eigenschaft
wahr ist

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.