Optionen in Properties speichern

Lies diesen Artikel und viele weitere mit einem kostenlosen, einwöchigen Testzugang.

Es gibt verschiene Ansätze, Anwendungsoptionen zu speichern, also zum Beispiel Standardverzeichnisse, den aktuellen Benutzer et cetera. Da wären eine eigene Optionentabelle, die Windows-Registry oder auch einfach eine Text- oder XML-Datei. Eine ganz großartige Möglichkeit wird gern übersehen: das Speichern von Optionen in den Datenbankeigenschaften. Dieser Beitrag zeigt, wie Sie Anwendungsoptionen an verschiedenen Stellen innerhalb der Access-Datenbank speichern können.

Wenn Sie an Access-Eigenschaften denken, fällt Ihnen vermutlich zunächst der Eigenschaften-Dialog ein, den Sie unter Access 2003 und älter mit dem Menüeintrag Datei|Datenbankeigenschaften und unter Access 2007 mit dem Office-Menü-Befehl Verwalten|Datenbankeigenschaften anzeigen können (siehe Bild 1).

pic001.png

Bild 1: Der Eigenschaften-Dialog einer Access-Anwendung

Dort befinden sich einige Informationen, die auf verschiedene Register aufgeteilt wurden. Sie können die meisten Eigenschaften durch simples Überschreiben ändern. Möglicherweise finden Sie in den vorhandenen Eigenschaften bereits eine, die Ihren Anforderungen entspricht. Falls nicht, wechseln Sie einfach zum letzten Registerreiter Anpassen (siehe Bild 2).

pic002.png

Bild 2: Anlegen benutzerdefinierter Eigenschaften

Hier können Sie auch individuelle Eigenschaften anlegen. Dazu schreiben Sie den Namen der Eigenschaft in das obere Textfeld, wählen den Datentyp aus und tragen den Wert der Eigenschaft ein. Nach einem Klick auf Hinzufügen erscheint die neue Eigenschaft in der Liste der benutzerdefinierten Eigenschaften.

Datenbankeigenschaften per VBA lesen

Natürlich sollen Optionen wie der aktuelle Benutzer oder dergleichen nicht von Hand in einem Eigenschaften-Dialog gespeichert werden, sondern etwa beim Schließen der Anwendung per VBA – und gleich beim Öffnen lesen wir diesen Wert wieder aus.

Beginnen wir mit dem Lesen der bereits vorhandenen Datenbankeigenschaften, also der Eigenschaften, die Sie auf den ersten vier Registerseiten finden. Dies erledigt die folgende Prozedur:

Public Sub Datenbankeigenschaften()
    Dim prp As DAO.Property
    Dim db As DAO.Database
    Dim con As DAO.Container
    Dim doc As DAO.Document
    Set db = CurrentDb
    Set con = db.Containers("Databases")
    Set doc = con.Documents("SummaryInfo")
    For Each prp In doc.Properties
        Debug.Print " " & prp.Name, prp.Value
    Next prp
    Set doc = Nothing
    Set con = Nothing
    Set db = Nothing
End Sub

Das Ergebnis sieht bei einer frischen Access 2007-Datenbank so aus. Die letzten drei Einträge enthalten die änderbaren und standardmäßig ausgefüllten Eigenschaften des Eigenschaftenfensters, die übrigen finden Sie auf den übrigen Seiten:

Name SummaryInfo
Owner admin
UserName admin
Permissions 0
AllPermissions 65536
Container Databases
DateCreated 09.03.2010 10:25:55
LastUpdated 09.03.2010 10:25:55
Title AccessProperties
Author Andre Minhorst
Company mossSOFT

Die noch nicht ausgefüllten Eigenschaften der Registerseite aus Bild 1 werden erst nach dem Eintragen von Werten in der Properties-Auflistung angelegt.

Ausflug in die Welt der Containers und Documents

In der obigen Prozedur gibt es einige Objekttypen, die dem Access-Entwickler nicht jeden Tag über den Weg laufen:

  • Container: Es gibt je Objekttyp (DataAccessPages, Databases, Forms, Modules, Relationships, Reports, Scripts, SysRel, Tables) in Access einen Container, der für jedes Objekt des entsprechenden Typs in der Documents-Auflistung ein Document-Objekt enthält.
  • Document: Jedes Document-Objekt enthält Zusatzinformationen zu dem Objekt, auf das es sich bezieht. Dies können beispielsweise Eigenschaften (Properties) sein.

Alle Container auflisten

Die folgende Routine listet alle Container einer frischen Access-Datenbank auf:

Public Sub AlleContainer()
    Dim db As DAO.Database
    Dim con As DAO. Container
    Set db = CurrentDb
    For Each con In db.Containers
        Debug.Print con.Name
    Next con
End Sub

Documents auflisten

Gehen wir noch einen Schritt weiter und schauen uns alle Document-Objekte aller Container an:

Public Sub AlleDocuments()
    Dim db As DAO.Database
    Dim con As DAO. Container
    Dim doc As DAO. Document
    Set db = CurrentDb
    For Each con In db.Containers
        Debug.Print con.Name
        For Each doc In con.Documents
            Debug.Print " " & doc.Name
        Next doc
    Next con
End Sub

Das Ergebnis sieht wie in Bild 3 aus. Wenn die Datenbank nicht frisch angelegt wäre, würde die Auflistung noch wesentlich mehr Informationen enthalten.

pic003.png

Bild 3: Alle Documents der Container-Objekte einer Access 2007-Datenbank

Properties von Document-Objekten

Die Document-Objekte enthalten Eigenschaften. Einige davon können Sie auf zwei Arten abfragen:

  • direkt über den Namen der Eigenschaft (doc.Name)
  • oder über ein Element der Properties-Auflistung (doc.Properties("Name").Value)

Datenbank-Eigenschaften

Kommen wir zurück zur Ermittlung der Eigenschaften der Datenbank über die obige Prozedur Datenbankeigenschaften. Dort lesen wir alle Properties des Document-Objekts Summary Info des Container-Objekts Databases aus, was unter anderem den Eigenschaften entspricht, die Sie über die Textfelder des Dialogs Datenbankeigenschaften einstellen können.

Wenn Sie die auf der letzten Registerseite enthaltenen Eigenschaften per VBA lesen möchten, brauchen Sie nur die Zeile

Set doc = con.Documents("SummaryInfo")

durch die folgende Zeile zu ersetzen:

Set doc = con.Documents("UserDefined")

Wenn Sie den Namen einer Property kennen, können Sie auch direkt darauf zugreifen:

Ende des frei verfügbaren Teil. Wenn Du mehr lesen möchtest, hole Dir ...

Testzugang

eine Woche kostenlosen Zugriff auf diesen und mehr als 1.000 weitere Artikel

diesen und alle anderen Artikel mit dem Jahresabo

Schreibe einen Kommentar