Zur Hauptseite ... Zum Onlinearchiv ... Zum Abonnement ... Zum Newsletter ... Zu den Tools ... Zum Impressum ... Zum Login ...

Achtung: Dies ist nicht der vollständige Artikel, sondern nur ein paar Seiten davon. Wenn Sie hier nicht erfahren, was Sie wissen möchten, finden Sie am Ende Informationen darüber, wie Sie den ganzen Artikel lesen können.

Kompletten Artikel lesen?

Einfach für den Newsletter anmelden, dann lesen Sie schon in einer Minute den kompletten Artikel und erhalten die Beispieldatenbanken.

E-Mail:

Gedrucktes Heft

Diesen Beitrag finden Sie in Ausgabe 4/2001.

Unser Angebot für Sie!

Lesen Sie diesen Beitrag und 500 andere sofort im Onlinearchiv, und erhalten Sie alle zwei Monate brandheißes Access-Know-how auf 72 gedruckten Seiten! Plus attraktive Präsente, zum Beispiel das bald erscheinende Buch 'Access 2010 - Das Grundlagenbuch für Entwickler'!

Diesen Beitrag twittern

Datenbanken erstellen mit ADOx

Autor: André Minhorst, Duisburg

ADOx kann man vom Namen her leicht mit ADO verwechseln. Sieht man sich allerdings den vollen Namen statt der Abkürzung an, erfährt man, dass es sich um eine Erweiterung der Active Data Objects handelt: Das x steht nämlich für Extended, zu deutsch: erweitert. Während die Active Data Objects die Objekte zum Zugriff auf die Daten einer Datenbank liefern, beschäftigt sich ADOx mit dem Erstellen der Datenbank sowie der Objekte der Datenbank.

ADO und ADOx

Active Data Objects Extensions for Data Definition Language and Security lautet die genaue ausgeschriebene Variante von ADOx. Und damit ist auch schon ziemlich genau umrissen, worum es sich dabei handelt: eine Erweiterung der Active Data Objects um die Objekte, die zum Definieren der Datenbank und ihres Zugriffsschutzes dienen.

Während Sie im Beitrag Datenbankzugriff mit ADO (UPDATE-Heft Nr.1/Januar 2001) einiges über ADO erfahren haben, lernen Sie im vorliegenden Beitrag, wie Sie mit Hilfe der Erweiterung ADOx eine Datenbank erstellen und das Aussehen des Datenmodells definieren.

Vorbereitung der Datenbank

Bevor Sie auf die ADOx-Objekte und deren Methoden, Eigenschaften und Ereignisse zugreifen können, müssen Sie zunächst für deren Verfügbarkeit sorgen.

Am besten legen Sie zunächst eine neue Datenbank an, mit der Sie die folgenden Beispiele nachvollziehen können.

Legen Sie anschließend ein neues Modul an. Wechseln Sie dazu im Datenbankfenster in das Register Module und klicken Sie auf die Schaltfläche Neu. Access öffnet nun automatisch den Visual Basic-Editor und zeigt den Inhalt des neuen Moduls an.

Im Visual Basic-Editor sorgen Sie auch dafür, dass Access die ADOx-Bibliothek für die aktuelle Datenbank verfügbar macht. Gehen Sie folgendermaßen vor:

  • Wählen Sie den Menübefehl Extras ( Verweise aus.
  • Im nun erscheinenden Dialog wählen Sie den Eintrag Microsoft ADO Ext. 2.5 for DDL and Security aus (s. Abb. 1).
  • Abb. 1: Auswahl der benötigten Verweise

    Nun können Sie auf die Objekte zur Definition der Datenstruktur und der Zugriffsrechte zugreifen.

    Erstellen einer neuen
    Datenbank

    Das Erstellen einer Datenbank ist wahrscheinlich eine der weniger häufig verwendeten Aktionen von ADOx. Dennoch soll sie hier kurz anhand eines Beispiels erläutert werden.

    Abb. 2: Das Catalog-Objekt enthält einige weitere Objekte.

    Das Catalog-Objekt

    Das übergeordnete Objekt des ADOx-Modells ist das Catalog-Objekt. Das Catalog-Objekt repräsentiert bei allen Aktionen, die Sie mit ADOx durchführen, die Datenbank. Das gilt sowohl für das Erstellen der Datenbank als auch für die spätere Bearbeitung der Datenbankstruktur und der Zugriffsrechte.

    Das Objektmodell von ADOx hat fünf Objekte, die unmittelbar unter dem Catalog-Objekt liegen (s. Abb. 2). Neben den beiden Objekten Groups und Users, mit denen man Gruppen- und Benutzerrechte festlegen kann, und den Objekten Procedures und Views gibt es noch das Table-Objekt, mit dem man Tabellen erstellen und ihre Eigenschaften festlegen kann.

    Deklarieren des Catalog-Objektes

    Die Definition eines Catalog-Objektes erfolgt mit der folgenden Anweisung:

    Dim cat As ADOX.Catalog

    Erstellen der neuen Datenbank

    Die neue Datenbank erstellen Sie anschließend mit der Create-Methode des soeben deklarierten Catalog-Objektes. Dazu erfolgen drei Schritte:

  • Setzen einer neuen Catalog-Objektvariablen
  • Erstellen der Datenbank mit bestimmten Eigenschaften
  • Löschen der Objektvariablen
  • Das genaue Aussehen einer Prozedur zum Erstellen einer neuen Datenbank finden Sie in Quellcode 1. Bei der Zeichenkette hinter dem Befehl cat.Create handelt es sich um einen Connection-String. Der Connection-String beinhaltet Informationen über die Beschaffenheit der zu erstellenden Datenbank. Dazu gehört - wie im Beispiel zu sehen - die Angabe eines Datenbanktreibers und eines Speicherortes für die Datenbank.

    Sie können noch weitere Informationen eingeben, die bei der Erstellung der Datenbank Verwendung finden sollen.

    Setzen eines Passworts

    Wenn die Datenbank beim Öffnen ein Passwort abfragen soll, hängen Sie beispielsweise den folgenden String an den bestehenden Connection-String an:

    Jet OLEDB:Database Password=Testpasswort

    Abb. 3: Abfrage des Datenbankkennworts

    Wenn Sie die erstellte Datenbank nun öffnen, erscheint eine entsprechende Passwortabfrage (s. Abb. 3).

    Weitere Optionen beim Erstellen einer neuen Datenbank

    Neben dem Anlegen einer Datenbank mit Passwort gibt es noch weitere Optionen beim Anlegen einer neuen Datenbank:

  • Anlegen einer neuen Systemdatenbank
  • Angabe einer Systemdatenbank
  • Angabe eines Benutzers mit Passwort, der zum Besitzer der neuen Datenbank wird
  • Anlegen neuer Datenbanken in Fremdformaten, beispielsweise älteren Access-Versionen, dBase, Lotus, Paradox usw.
  • Da die meisten Optionen mit dem Sicherheitssystem von Access in Zusammenhang stehen, soll hier nicht weiter darauf eingegangen werden.
  • Erstellen einer neuen Tabelle

    Bevor Sie eine neue Tabelle in einer Datenbank erstellen können, müssen Sie mit einer Catalog-Objektvariablen die Datenbank festlegen, in der Sie die neue Tabelle erstellen möchten.

    Festlegen einer Datenbank

    Dazu gibt es zwei Möglichkeiten: Entweder Sie erstellen im gleichen Zuge mit der Zuweisung der Variablen eine neue Datenbank, wie Sie es im vorherigen Kapitel gelernt haben, oder Sie legen eine Verbindung zu einer bestehenden Datenbank fest.

    Verwenden einer externen Datenbank

    Dazu können Sie ruhig die Datenbank verwenden, die Sie im Beispiel des vorhergehenden Kapitels angelegt haben. Dazu verwenden Sie die Prozedur aus Quellcode 2.

    Verwenden der aktuellen Datenbank

    Alternativ können Sie natürlich auch die aktuelle Datenbank verwenden. Dazu müssen Sie lediglich die Anweisung zum Festlegen der Verbindung aus Quellcode 2 in den die folgende Anweisung ändern:

    cat.ActiveConnection = Application._
    CurrentProject.Connection

    Das Table-Objekt

    Das Table-Objekt stellt alle Methoden, Eigenschaften und Ereignisse zur Erstellung von Tabellen und zur Definition ihrer Eigenschaften zur Verfügung (s. Abb. 4).

    Um eine neue Tabelle zu erstellen, müssen Sie zunächst einmal eine entsprechende Objektvariable deklarieren:

    Dim tbl As ADOX.Table

    Anschließend setzen Sie die Objektvariable:

    Set tbl = New ADOX.Table

    Nun statten Sie die Tabelle mit den wichtigsten Eigenschaften aus - einem Namen und einigen Feldern.

    Zum Festlegen eines Tabellennamens verwenden Sie die Name-Eigenschaft des Table-Objektes in der folgenden Form:

    tbl.Name = "tblNeueTabelle"

    Anschließend legen Sie zwei Felder in der neuen Tabelle an. Dazu verwenden Sie die Append-Methode. Die Append-Methode ist eine Methode der Columns-Auflistung des Table-Objektes. Sie hat drei Parameter, die in Tab. 1 beschrieben werden.

    Um beispielsweise ein Textfeld mit der Feldgröße 50 an die Tabelle anzufügen, verwenden Sie die folgende Anweisung:

    tbl.Columns.Append "Text", adChar, 50

    Dabei ist Text der Name des zu erstellenden Feldes, adChar die Konstante für den Datentyp Text und die Zahl 50 die Größe des Feldes.

    In Tab. 2 finden Sie eine Auflistung der Konstanten, die den geläufigen Access-Datentypen entsprechen. Sie enthält die Namen der unterschiedlichen Konstanten sowie eine Beschreibung des Datentyps.

    Parameter

    Beschreibung

    Column

    Gibt den Namen des anzufügenden Feldes an.

    Type

    Gibt den Typ des anzufügenden Feldes an. Die wichtigsten Werte fasst Tab. 2 zusammen.

    Defined Size

    Gibt die Größe des anzufügenden Feldes an.

    Tab. 1: Parameter der Append-Methode der Columns-Auflistung eines Table-Objektes

    Konstante

    Beschreibung

    adInteger

    Long Integer

    adSingle

    Single

    adDouble

    Double

    adCurrency

    Währung

    adBoolean

    Ja/Nein

    adDate

    Datum/Uhrzeit

    adVarWChar

    Text

    adBinary

    Binär

    adGuid

    Replikations-ID

    adLongVarBinary

    OLE-Objekt

    adLongVarVChar

    Memo

    adUnsignedTinyInt

    Byte

    Tab. 2: Konstanten für den Datentyp eines Tabellenfeldes

    Nachdem Sie der Tabelle das Feld zugewiesen haben, kommt nun der wichtigste Schritt: Sie fügen die Tabelle dem Catalog-Objekt hinzu. Dazu verwenden Sie die folgende Anweisung:

    cat.Tables.Append tbl

    Autowert einfügen

    Wenn Sie Tab. 2 sorgfältig studiert haben, ist Ihnen sicher das Fehlen des Datentyps Autowert aufgefallen. Genau genommen ist der Autowert auch gar kein Datentyp. Der Datentyp eines Autowerts ist immer Integer. Damit das Feld vom Datentyp Integer zu einem Autowertfeld wird, müssen Sie die Eigenschaft AutoIncrement des Feldes auf den Wert True setzen.

    Quellcode 3 enthält eine Prozedur, die eine neue Tabelle in der aktuellen Datenbank anlegt. Die Tabelle enthält ein Autowertfeld namens AdresseNr sowie zwei Textfelder mit den Bezeichnungen Nachname und Vorname.

    Die Vorgehensweise entspricht bis auf zwei Ausnahmen der bisher besprochenen Abfolge.

    Zunächst deklariert man die Objektvariablen für die Datenbank und die Tabelle und erstellt die entsprechenden Objekte. Anschließend öffnet man die Verbindung zur aktuellen Datenbank und weist dem neuen Tabellenobjekt einen Namen und die gewünschten Felder zu.

    Jetzt kommt allerdings ein Knackpunkt: Sie können dem Feld AdresseNr keine Eigenschaft - also beispielsweise die des Autowertes - zuweisen.

    Der Grund liegt darin, dass Access nicht weiß, zu welcher Datenbank die Tabelle gehören soll und damit ebensowenig Informationen über die zur Verfügung stehenden Eigenschaften hat. Bekanntlich können Sie ja auch Verbindungen zu Datenbanken anderen Typs herstellen. Das Problem dabei ist, dass nicht alle Datenbanksysteme die gleichen Eigenschaften unterstützen.

    Im vorliegenden Fall legen Sie mit der Anweisung

    Set tbl.ParentCatalog = cat

    einfach fest, dass die aktuelle Datenbank die Datenbank ist, der die Tabelle hinzugefügt werden soll.

    Anschließend weisen Sie der Eigenschaft AutoIncrement des Feldes AdresseNr den Wert True zu.

    Hinzufügen eines Hyperlinkfeldes

    Bevor es an die Definition von Indizes und weiteren Eigenschaften geht, soll die Liste der Datentypen vervollständigt werden: Denn auch der in Access zur Verfügung stehende Datentyp Hyperlink ist unter ADOx nicht vorhanden. Auch hier sorgt eine - je nach Datenbanktyp vorhandene - Eigenschaft für Abhilfe.

    Zunächst ist jedoch zu bemerken, dass der Datentyp des als Hyperlink auszulegenden Feldes adLongVarWChar ist. Um ein Hyperlinkfeld zu erstellen, verwenden Sie also die zwei folgenden Anweisungen:

    tbl.Columns.Append "Hyperlink", _

        adLongVarWChar

    tbl.Columns("Hyperlink").Properties _

        ("Jet OLEDB:Hyperlink") = True

    Hinzufügen von Indizes

    Zu einer gepflegten Tabelle gehört mindestens ein Index, bei dem es sich meist um den Primärindex der Tabelle handelt. Der Primärindex dient zur eindeutigen Identifikation eines jeden Datensatzes.

    Zur Verwaltung von Indizes verwendet man die Indexes-Auflistung. Wie man der Abb. 45 entnehmen kann, enthält jedes Element der Auflistung eine Columns-Auflistung mit dem oder den indizierten Feld(ern).

    Die folgenden Befehle setzen Sie am besten in den bestehenden Quellcode 3 ein.

    Bevor Sie einer Tabelle einen Index hinzufügen können, deklarieren Sie zunächst eine entsprechende Objektvariable:

    Dim idx As New ADOX.Index

    Sie haben das Ende des frei verfügbaren Teils des Artikels erreicht. Lesen Sie weiter, um zu erfahren, wie Sie den vollständigen Artikel lesen und auf viele hundert weitere Artikel zugreifen können.

    Sind Sie Abonnent?Jetzt einloggen ...
     

    Kompletten Artikel lesen?

    Einfach für den Newsletter anmelden, dann lesen Sie schon in einer Minute den kompletten Artikel und erhalten die Beispieldatenbanken.

    E-Mail:

    © 2003-2015 André Minhorst Alle Rechte vorbehalten.