BEISPIEL
HINWEIS
HINWEIS
Um ein Database-Objekt von einer aktiven Access-Library abzuleiten, müssen Sie die CodeDB-Funktion
verwenden:
Set db = CodeDB()
Zugriffsrechte
Wir müssen noch einmal auf die Zugriffsrechte zurückkommen: So wie wir die Datenbank angelegt haben,
kann jeder Benutzer darauf zugreifen. Wollen Sie das verhindern, müssen Sie nach dem Erstellen bzw.
Öffnen der Datenbank ein Passwort setzen. Verwenden Sie dazu die NewPassword-Methode des Database-
Objekts.
Ein Passwort setzen Sie mit:
Set db = ...
...
db.NewPassword "", "geheim"
db.Close
Der erste Parameter bestimmt das bisherige Passwort, der zweite setzt das neue Passwort. Danach ist die
Datenbank geschützt. Wenn Sie das Passwort vergessen, haben Sie keine Möglichkeit, die Datenbank zu
öffnen. Vergessen Sie nicht, dass ein Passwort maximal 14 Zeichen umfassen darf!
Um die mit NewPassword gesicherte Datenbank zu öffnen, genügt der normale Aufruf von OpenDatabase
nicht, es fehlt das Passwort. Der Aufruf muss wie folgt abgeändert werden:
Set ws = DBEngine.Workspaces(0)
Set db = ws.OpenDatabase("c:\test.accdb", False, False, ";pwd=geheim")
Wichtig ist das Semikolon vor der Angabe »pwd=geheim«, ohne geht es nicht!
Wenn Sie als Programmierer das Passwort automatisch generieren lassen, hat der Nutzer Ihrer Anwendung
überhaupt keine Möglichkeit, die Datenbank zu öffnen (funktioniert natürlich nur bei Trennung von Programm und Daten).
Tabellen/Indizes anlegen
Ist die Datenbank angelegt und geöffnet (siehe vorhergehender Abschnitt), möchten Sie auch schon damit
beginnen, die Datenbank mit Informationen zu füllen. Doch halt, die Daten werden ja in Tabellen gespei-
chert, und die gibt es noch gar nicht.
Zwei Wege führen in Access zur fertigen Tabelle:
Anlegen über die Datenbank-Objekte (DAO)
1
Erstellen mit SQL-Befehlen über die Execute-Methode
1
Natürlich auch mit Hilfe der ADOX, diese werden wir jedoch erst im Kapitel 9 näher betrachten.
299
Grundlegende Arbeitstechniken
BEISPIEL
HINWEIS
Kapitel 6: DAO-Programmierung
Beide Verfahren haben ihre Vor- und Nachteile. Während das Programmieren mit den Objekten etwas auf-
wändiger ist, lassen sich über SQL-Befehle nicht alle Möglichkeiten der Datenbank-Engine ausschöpfen. In
diesem Abschnitt stellen wir Ihnen deshalb die Programmierung mit Objekten vor, zur SQL-Program-
mierung finden Sie in Kapitel 8 einige Hinweise.
Tabellen
Für die Tabellendefinition brauchen Sie neben dem schon erwähnten Database-Objekt ein TableDef- und
ein Field-Objekt.
Tabellendefinition:
Dim ws As Workspace
Dim db As Database
Dim td As TableDef
Dim fld As Field
Set ws = DBEngine.Workspaces(0)
Set db = ws.CreateDatabase("c:\test.accdb", dbLangGeneral)
Natürlich muss das
TableDef
-Objekt auch initialisiert werden, dazu verwenden wir die
CreateTableDef
-
Methode des
Database
-Objektes:
Set td = db.CreateTableDef()
Das so erzeugte Objekt hat weder einen Namen, noch ist in der Datenbank eine Tabelle angelegt worden.
Zuerst kümmern wir uns um die Tabellenbezeichnung:
td.Name = "Eine erste Tabelle"
Für die Namen gelten die Access-Konventionen, die Sie in der Online-Hilfe nachschlagen können. Verwen-
den Sie Access als Exportformat, sollten Sie beachten, dass einige Fremdformate nur acht Zeichen erkennen.
Auch die Verwendung von Leerzeichen ist manchmal problematisch. Wichtigster Bestandteil einer Tabelle
sind die einzelnen Spalten. Mit dem folgenden Aufruf erzeugen wir ein
Field
-Objekt, über das Sie alle wichti-
gen Spaltenoptionen einstellen können:
Set fld = td.CreateField("vorname", dbText, 30)
Die drei wichtigsten Eigenschaften
Spaltenname
,
Datentyp
und
Feldgröße
können Sie schon an dieser Stelle
festlegen. Weitere Eigenschaften lassen sich im Anschluss setzen.
Die folgende Tabelle 6.3 zeigt die zulässigen Datentypen bzw. die vordefinierten Konstanten
1
.
Vielleicht vermissen Sie in der Tabelle eine Konstanter Zählerfelder? Diese werden Sie auch nicht finden, ist
doch das Zählerfeld nur ein Spezialfall des Feldtyps Long. Gleiches trifft auch auf den Datentyp Hyperlink zu, der auf dem Typ
dbMemo basiert.
1
In der Online-Hilfe finden Sie zwar weitere Konstanten, diese sind jedoch lediglich für den Import bzw. das Einbinden von
Fremdformaten vorgesehen.
300
Konstante Datentyp
dbBoolean Ja/Nein
dbByte Byte
dbInteger Integer
dbLong Long
dbCurrency Currency
dbSingle Single
dbDouble Double
dbDate Datum/Zeit
dbText Text
dbLongBinary Long Binary (OLE-Objekt)
dbMemo Memo
dbGUID GUID
Tabelle 6.3 Datentyp-Konstanten
Die so erzeugte Spalte können Sie mit:
td.Fields.Append fld
in die Tabelle einfügen. Zum Schluss muss nur noch die Tabelle gespeichert werden:
db.TableDefs.Append td
...
db.Close ' Datenbank schließen
Das war's auch schon! Allerdings ist die so erzeugte Tabelle recht primitiv, da sie nur aus einem einzigen Feld
besteht. Trotzdem dürfte das Beispiel für das Grundverständnis vollkommen ausreichen, alles weitere ist Bei-
werk.
Für alle, die mehr mit Ihren Tabellen machen wollen, folgen jetzt einige komplexere Beispiele. Vorab je-
doch noch zwei Tabellen, die einige Konstanten und Eigenschaften vorstellen, die in den Beispielen verwen-
det werden.
Konstante Bedeutung
dbFixedField Numerische Felder, d.h. festgelegte Größe.
dbVariableField Die Feldgröße kann geändert werden (nur für Textfelder).
dbAutoIncrField Zählerfelder, Feld inkrementiert sich selbst.
dbUpdatableField Der Wert im Feld ist veränderbar.
dbDescending Das Feld wird in absteigender Reihenfolge (Z...A bzw. 999...0) sortiert.
dbHyperlinkField Das Feld enthält Hyperlink-Informationen (nur Memofelder).
Tabelle 6.4 Konstanten für die Field.Attributes-Eigenschaft
301
Grundlegende Arbeitstechniken

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.