BEISPIEL
BEISPIEL
BEISPIEL
HINWEIS
Kapitel 9: Fortgeschrittene Datenbankprogrammierung
Tabellendefinition
Eines der wichtigsten Einsatzgebiete der ADOX findet sich beim Erstellen und Verwalten von Tabellen mit
den zugehörigen Indizes.
Dreh- und Angelpunkt ist – wie wohl nicht anders zu erwarten – ein initialisiertes Catalog-Objekt.
Zwei Varianten bieten sich an:
Erstellen einer neuen Datenbank mit nachfolgender Verwendung des Catalog-Objekts.
Initialisieren des Catalog-Objekts mit der ActiveConnection-Eigenschaft.
Die erste Variante wurde bereits im vorhergehenden Abschnitt beschrieben, die zweite Variante zeigt das
folgende Beispiel.
Verwenden der
ActiveConnection
-Eigenschaft:
Dim cat As ADOX.catalog
Set cat = New ADOX.catalog
cat.Create "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\Kunden.accdb"
Verwenden der aktuellen Datenbank:
Dim cat As New ADOX.Catalog
cat.ActiveConnection = Application.CurrentProject.Connection
Für die Tabellendefinition brauchen Sie neben dem schon erwähnten Catalog-Objekt, das die Datenbank
repräsentiert, noch ein Table-Objekt.
Tabellendefinition:
Dim cat As New ADOX.Catalog
Dim tbl As New Table
cat.Create "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=c:\kunden.accdb"
Das bereits mit
New
erzeugte
Table
-Objekt hat weder einen Namen noch ist in der Datenbank eine Tabelle
angelegt worden. Kümmern wir uns also zuerst um den Tabellenbezeichner:
tbl.Name = "Kundenstammdaten"
Für die Tabellennamen gelten die Konventionen des jeweiligen Datenbankformats.
Vorsicht mit Sonderzeichen im Tabellennamen!
Als Nächstes können wir uns mit den Tabellenspalten beschäftigen. Verwenden Sie die
Append
-Methode der
Columns
-Auflistung, um neue Tabellenspalten einzufügen.
514
tbl.Columns.Append "Nachname", adVarWChar, 50
tbl.Columns.Append "Vorname" , adVarWChar, 50
Die drei wichtigsten Eigenschaften Spaltenname, Datentyp und Feldgröße können Sie bereits an dieser
Stelle festlegen. Abschließend muss das neue
Table
-Objekt auch dem Catalog, d.h. der Datenbank, hinzuge-
fügt werden:
cat.Tables.Append tbl
Die folgende Tabelle zeigt die zulässigen Datentypen:
Konstante Beschreibung
adTinyInt 1 Byte Ganzzahl
adSmallInt 2 Byte Ganzzahl
adInteger 4 Byte Ganzzahl
adBigInt 8 Byte Ganzzahl
adUnsignedTinyInt 1 Byte Ganzzahl ohne Vorzeichen
adUnsignedSmallInt 2 Byte Ganzzahl ohne Vorzeichen
adUnsignedInt 4 Byte Ganzzahl ohne Vorzeichen
adUnsignedBigInt 8 Byte Ganzzahl ohne Vorzeichen
adDecimal Dezimaler Variant-Typ
adSingle Gleitkommawert mit 4 Bytes (–3,402823E38 bis –1,401298E–45 für negative Werte; 1,401298E–45 bis
3,402823E38 für positive Werte)
adDouble Gleitkommawert mit 8 Bytes (-1,79769313486232E308 bis –4,94065645841247E-324 für negative,
4,94065645841247E–324 bis 1,79769313486232E308 für positive Werte)
adCurrency Währungswert, eine Festkommazahl mit vier Stellen hinter dem Komma. Sie wird als 8 Byte umfassende
Ganzzahl mit Vorzeichen, skaliert mit 10.000, gespeichert.
adNumeric Numerischer Typ
adBoolean Boole'scher Variant-Typ. 0 ist False und <> 0 ist True
adUserDefined Benutzerdefinierter Datentyp mit variabler Länge.
adVariant Automatisierungs-Variant-Typ.
adGUID Globaler eindeutiger Bezeichner (Globally Unique Identifier, GUID)
adDate Automatisierungsdatum, das als Wert vom Typ Double gespeichert wird
adDBDate Datenstruktur von Datenbankdatumsangaben
adDBTime Datenstruktur von Datenbankzeitangaben
adDBTimeStamp Struktur des Datenbankzeitstempels
adBSTR Eine mit Nullzeichen endende Zeichenfolge (Unicode)
adChar Zeichenfolge mit fester Länge
adVarChar Zeichenfolge mit variabler Länge
Tabelle 9.3 Datentypen
515
Datenbankverwaltung mit ADOX
HINWEIS
BEISPIEL
HINWEIS
HINWEIS
Kapitel 9: Fortgeschrittene Datenbankprogrammierung
Konstante Beschreibung
adLongVarChar Zeichenfolge mit Long-variabler Länge
adWChar Zeichenfolge mit Wide-fester Länge
adVarWChar (Standard) Zeichenfolge mit Wide-variabler Länge
adLongVarWChar Zeichenfolge mit Long-/Wide-variabler Länge
adBinary Binärdaten mit fester Länge
adVarBinary Binärdaten mit variabler Länge
adLongVarBinary Binärdaten mit Long-variabler Länge
Tabelle 9.3 Datentypen (Fortsetzung)
Wie Sie sehen, haben die Microsoft-Entwickler bezüglich der Datentypen nicht gegeizt.
Möchten Sie den Datentyp einer Tabellenspalte erfahren, nutzen Sie einfach die Type-Eigenschaft des je-
weiligen Column-Objekts.
Ermitteln des Datentyps:
debug.print tbl.Columns("Nachname").Type
Beachten Sie, dass nicht jeder Daten-Provider alle Datentypen unterstützen muss.
Die Type-Eigenschaft ist nach dem Anhängen an eine Auflistung schreibgeschützt.
Die bisher vorgestellten Möglichkeiten können jedoch bei weitem nicht überzeugen. Weitere Möglich-
keiten, die Eigenschaften von Tabellenspalten zu beeinflussen, scheinen auf den ersten Blick nicht zu
existieren. Doch halt, da war doch noch die Properties-Auflistung, die jedem Column-Objekt zugeordnet ist.
Eigenschaft Bedeutung
Autoincrement Zählerfeld
Default Der Defaultwert für diese Spalte
Description Kurzbeschreibung
Nullable Nullwerte zulässig
Fixed Length Feld mit fester Länge
Seed Startwert für Zähler
Increment Inkrement für Zähler
Jet OLEDB:Column Validation Text Jet: Fehlermeldung bei Verletzung der Regel
Jet OLEDB:Column Validation Rule Jet: Eingaberegel
Tabelle 9.4 Zusätzliche Eigenschaften
516
BEISPIEL
HINWEIS
BEISPIEL
Eigenschaft Bedeutung
Jet OLEDB:AutoGenerate Jet: GUID-Werte
Jet OLEDB:Compressed UNICODE Strings Jet: Unicode-Zeichen werden komprimiert
Jet OLEDB:Allow Zero Length Jet: Leerstring ist zulässig
Jet OLEDB:Hyperlink Jet: Feld enthält Hyperlink-Informationen
Tabelle 9.4 Zusätzliche Eigenschaften (Fortsetzung)
Das folgende Erzeugen eines Zählerfeldes
Dim cat As New ADOX.Catalog
Dim tbl As New Table
cat.ActiveConnection = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=c:\Kunden.accdb;"
tbl.Name = "Kundenstammdaten"
tbl.Columns.Append "Id", adInteger
tbl.Columns("Id").Properties("AutoIncrement") = True
... wird fehlschlagen. Der Grund ist recht einfach: Zu diesem Zeitpunkt besteht keinerlei Verbindung zwi-
schen Tabellendefinition und Datenbank (bzw. dem Datenbanktyp). Mit Hilfe der
ParentCatalog
-Eigenschaft
werden
Catalog
und
Table
miteinander verbunden, damit sind auch die Properties zugänglich:
cat.Create ("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\Kunden.accdb;")
tbl.Name = "Kundenstammdaten"
Set tbl.ParentCatalog = cat
...
tbl.Columns.Append "Id", adInteger
tbl.Columns("Id").Properties("AutoIncrement") = True
...
cat.Tables.Append tbl
Weitere Spalten-Optionen für die Tabelle können Sie über die Attributes-Eigenschaft (Long-Wert) festlegen:
Konstante Beschreibung
adColFixed Die Tabellenspalte hat eine feste Länge.
adColNullable Die Tabellenspalte kann Null-Werte enthalten.
Tabelle 9.5 Werte für die Attributes-Eigenschaft
Sie können beide Konstanten miteinander kombinieren.
Spalte erzeugen, die auch NULL-Werte enthalten darf:
tbl.Columns.Append "Vorname", adVarWChar, 50
tbl.Columns("Vorname").Attributes = adColNullable
517
Datenbankverwaltung mit ADOX

Get Microsoft Office Access 2007-Programmierung - 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.