Daten in Properties verstecken

Daten schreibt man in einer Datenbank üblicherweise in die Datensätze der enthaltenen Tabellen. Manchmal möchten Sie aber vielleicht wichtige Informationen, die nicht zu den vom Benutzer verwendeten Daten gehören, versteckt unterbringen. Ein gutes Beispiel dafür ist das Datum der ersten Anwendung einer Datenbank, für die der Benutzer nur über einen bestimmten Zeitraum benutzen darf. Dieser Artikel zeigt, wo Sie solche Daten unterbringen können und wie Sie diese wieder abrufen.

Datenbank-Properties

Die erste Möglichkeit, Daten vor herkömmlichen Benutzern zu verstecken, ist eine einfache Datenbank-Property, also eine Datenbank-Eigenschaft. Diese erreichen Sie über die Auflistung Properties des Database-Objekts. Wenn Sie alle Datenbank-Eigenschaften der aktuellen Datenbank ausgeben möchten, nutzen Sie dazu die Auflistung Properties des mit CurrentDb ermittelten Database-Objekts. Diese können Sie beispielsweise mit der folgenden Prozedur durchlaufen und im Direktbereich ausgeben lassen:

Public Sub GetAllProperties()
     Dim prp As DAO.Property
     Dim db As DAO.Database
     Set db = CodeDb
     For Each prp In db.Properties
         Debug.Print prp.Name,
         On Error Resume Next
         Debug.Print prp.Value
         If Not Err.Number = 0 Then
             Debug.Print "<Error>"
         End If
         On Error GoTo 0
     Next prp
End Sub

Gegebenenfalls tritt bei manchen Eigenschaften ein Fehler auf, den wir hier durch die Ausgabe von umgehen. Das Ergebnis sieht beispielsweise wie in Bild 1 aus.

Ausgabe der Properties einer Datenbank

Bild 1: Ausgabe der Properties einer Datenbank

Benutzerdefinierte Eigenschaft setzen

Wenn Sie eine eigene Eigenschaft setzen wollen, können Sie die folgende Prozedur nutzen. Diese erwartet als Parameter den Namen der zu setzenden/zu erzeugenden Eigenschaft sowie den Wert, den diese Eigenschaft annehmen soll. Wie Sie dem vorherigen Satz entnehmen können, prüft diese Prozedur indirekt, ob die Eigenschaft bereits vorhanden ist und legt diese nur an, falls dies nicht der Fall ist.

Die Prozedur deklariert ein Database– und ein Property-Element und füllt das Database-Objekt mit der Funktion CurrentDb. Danach versucht sie dem Element der Properties-Auflistung des aktuellen Database-Objekts mit dem Namen aus strProperty den Wert strValue zuzuweisen. Ist diese Eigenschaft bereits vorhanden, gelingt dies ohne Probleme. Anderenfalls löst dies den Fehler mit der Nummer 3270 aus. Da wir für den Fall eines Fehlers einen Sprung zu der Marke Fehler vorgesehen haben, springt die Prozedur zu dieser Stelle und prüft, ob der ausgelöste Fehler die Fehlernummer 3270 aufweist.

Falls ja, steht fest, dass die gewünschte Eigenschaft schlicht noch nicht vorhanden ist und wir diese zunächst anlegen müssen. Das erledigen wir mit zwei Anweisungen. Die erste legt die neue Eigenschaft mit der CreateProperty-Methode an, wobei wir dieser den Namen, den Typ (dbText) und den Wert als Parameter übergeben. Anschließend hängen wir die Eigenschaft mit der Append-Methode an die Liste der Eigenschaften der Datenbank an (db.Properties.Append). Außerdem aktualisieren wir die Liste der Eigenschaften mit der Refresh-Methode:

Public Sub SetProperty(strProperty As String, _
         strValue As String)
     Dim db As DAO.Database
     Dim prp As DAO.Property
     On Error GoTo Fehler
     Set db = CurrentDb
     db.Properties(strProperty) = strValue
Ende:
     On Error Resume Next
     Exit Function
Fehler:
     If Err.Number = 3270 Then
         Set prp = db.CreateProperty(strProperty, _
             dbText, strValue)
         db.Properties.Append prp
         db.Properties.Refresh
     End If
     Resume Ende
End Sub

Die Prozedur können wir auch etwas umformulieren:

Public Function SetProperty(strProperty As String, _
         strValue As String)
     Dim db As DAO.Database
     Dim prp As DAO.Property
     Set db = CurrentDb
     On Error Resume Next
     Set prp = db.CreateProperty(strProperty, _
         dbText, strValue)
     db.Properties.Append prp
     db.Properties.Refresh
     If Not Err.Number = 0 Then
         db.Properties(strProperty) = strValue
     End If
End Function

Sie haben das Ende des frei verfügbaren Textes erreicht. Möchten Sie ...

Workplace

Jahresabonnement TestzugangOder haben Sie bereits Zugangsdaten? Dann loggen Sie sich gleich hier ein:

Schreibe einen Kommentar