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/2003.

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

Benutzereinstellungen verwalten

Christoph Spielmann, Düsseldorf

Die Verwaltung von Benutzereinstellungen ist - insbesondere beim Einsatz von Access - eine Aufgabe mit vielen Lösungsmöglichkeiten. Dieser Artikel zeigt Ihnen, wie Sie solche Benutzereinstellungen (gleich Optionen) in INI-Dateien, der Windows-Registry oder in Access-Tabellen speichern.

Einsatz von Optionen-Tabellen

Der naheliegendste Weg zum Speichern von Optionen ist sicherlich der Einsatz einer Access-Tabelle. Hierbei werden die einzelnen Optionen als normale Daten betrachtet und entsprechend in der Tabelle gespeichert.

Ein großer Nachteil dieser Lösung ist, dass die Optionen damit fest an Access gebunden sind.

Das Auslesen der Optionen durch andere Programme ist nur durch einen Datenbankzugriff möglich, was unter Umständen problematisch sein kann. Ein weiterer Nachteil besteht darin, dass bei Updates zusammen mit der Datenbank immer auch die Benutzereinstellungen mit ausgetauscht werden. Der Benutzer ist in diesem Fall gezwungen, alle Optionen erneut an seine Anforderungen anzupassen.

Eine Lösung würde in diesem Fall die Auslagerung der Optionen-Tabelle in eine getrennte MDB-Datei bieten, was jedoch insbesondere bei Einzelplatzanwendungen unnötige Probleme mit sich bringt. Schließlich muss die passende Optionen-Tabelle gefunden und ggf. noch in die Hauptanwendung eingebunden werden.

Vorteile bietet die Optionen-Verwaltung per Tabelle beim Einsatz von Anwendungen im Netzwerk. Hier können alle Einstellungen zentral abgelegt werden. Sollte sich ein Benutzer an einem anderen Arbeitsplatz anmelden, erhält er automatisch seine personalisierten Optionen.

Einsatz der Registry

Eine weitere Möglichkeit zum Speichern von Optionen bietet die Windows-Registry. Hierbei handelt es sich um eine hierarchische Datenstruktur, die von Microsoft speziell zur Ablage von Einstellungen und Optionen vorgesehen wurde. Falls Sie unter Windows NT, Windows 2000 oder Windows XP arbeiten, verwaltet Windows Ihre Optionen auch benutzerabhängig. So kann auch hier jeder Benutzer seine eigenen Einstellungen vornehmen.

Zudem schützt das Betriebsystem die Benutzereinstellungen vor den Blicken anderer Benutzer. Dies ist beispielsweise dann von Vorteil, wenn Sie bestimmte Passwörter als Option speichern möchten.

Der Nachteil beim Einsatz der Registry ist, dass der Zugriff nur über API-Funktionsaufrufe erfolgen kann und die Begutachtung nur mit Hilfe des Programms RegEdit.exe möglich ist.

Hinweis

Zum Start von RegEdit wählen Sie den Menüpunkt Start/Ausführen aus, geben den Befehl RegEdit ein und bestätigen mit OK. (

Außerdem ist es umständlich, Optionen von einem PC auf den anderen zu übertragen. Hier müssen Sie mit Hilfe von RegEdit die betreffenden Optionen exportieren und auf dem Zielrechner wieder einlesen.

Einsatz von INI-Dateien

Die dritte hier vorgestellte Möglichkeit besteht im Einsatz von INI-Dateien. Hierbei handelt es sich um die älteste der drei Techniken. Sie stammt noch aus Windows 3.x-Zeiten.

Eine INI-Datei ist eine einfache Text-Datei, in der Optionen in der Form

<Optionsname>=<Optionswert>

abgelegt sind. Verschiedene Optionen können hierbei in Sektionen gruppiert werden, indem den einzelnen Zeilen eine Überschrift in der Form

[<Sektionsname>]

vorangestellt wird.

INI-Dateien haben den großen Vorteil, dass sie im Applikationsverzeichnis angelegt sind und damit einen direkten Bezug zur Anwendung haben. Wenn Sie beispielsweise Ihr Anwendungsverzeichnis in Form eines Backups sichern, haben Sie auch gleich Ihre Optionen mit gesichert.

Darüber hinaus lassen sich INI-Dateien auch sehr leicht von einem PC zum nächsten transportieren und mit einem Text-Editor öffnen und bearbeiten.

Der große Nachteil von INI-Datei besteht in der auf zwei Ebenen beschränkten Struktur. Eine Lösung bietet hier der Einsatz von XML-Dateien. Tatsächlich ist es so, dass Microsoft bei seiner .NET-Technologie auf XML-Dateien zur Speicherung von Konfigurationen setzt und die INI-Datei damit einen zweiten Frühling erlebt.

Tools zum Praxiseinsatz

In den folgenden Abschnitten werden Tools vorgestellt, mit deren Hilfe Sie auf einfache und vereinheitlichte Weise Optionen in den drei vorgestellten Varianten speichern können. Auf den Einsatz von XML wurde hierbei verzichtet, da Access von Haus aus XML gar nicht oder nur sehr rudimentär unterstützt (je nach eingesetzter Access-Version).

Die vorgestellten Klassenmodule finden Sie in den Datenbanken Optionen97.mdb bzw. Optionen2000.mdb auf der aktuellen Heft-CD im Ordner mdb bzw. Musterlösungen.

Das Klassenmodul
clsOptionen_Tabelle

Das Klassenmodul clsOptionen_Tabelle enthält die notwendigen Funktionen zur Speicherung von Optionen in einer Access-Tabelle. Voraussetzung hierfür ist, dass die Access-Datenbank die beiden Tabellen tblOptionen und tblOptionswerte enthält. Die beiden Tabellen haben die folgende Struktur:

Feld

Beschreibung

OptionID

Primärschlüsselfeld

Optionsname

Name der Option

Tab. 1: Felder und Beschreibung der Tabelle tblOptionen

Feld

Beschreibung

OptionswertID

Primärschlüsselfeld

Optionswert

Der Wert der Option

OptionID

Fremdschlüssel zur Tabelle tblOptionen

BenutzerID

Fremdschlüssel zur Tabelle tblBenutzer

Tab. 2: Felder und Beschreibung der Tabelle tblOptionswerte

Beide Tabellen sind über die Felder OptionID miteinander verknüpft. Durch diese Struktur lassen sich in Verbindung mit der BenutzerID für jeden Benutzer individuelle Optionen speichern.

Abb. 1: Das Datenmodell zur Verwaltung von Optionen

Beispielsweise kann die Option 1 namens StartfensterAnzeigen beim Benutzer 1 den Wert True und beim Benutzer 2 den Wert False haben. In der Tabelle tblOptionswerte würden sich in diesem Fall zwei Datensätze befinden.

Public Sub OptionSpeichern(Optionsname As String, Optionswert As String, _
    Optional BenutzerID As Integer)

    Dim OptionID As Integer

    If BenutzerID = 0 Then BenutzerID = 1 'Globaler Benutzer

    OptionID = OptionErmittelnOderAnlegen(Optionsname)

    OptionswertSetzen OptionID, Optionswert, BenutzerID

End Sub

Quellcode 1

Public Function OptionLesen(Optionsname As String, Optional BenutzerID As Integer, _
    Optional DefaultWert As String) As String

    Dim OptionID As Integer

    Dim Ergebnis As Variant

    If BenutzerID = 0 Then BenutzerID = 1 'Globaler Benutzer

    OptionID = OptionErmittelnOderAnlegen(Optionsname)

    Ergebnis = DLookup("Optionswert", "tblOptionswerte", "OptionID=" _
        + CStr(OptionID) + " AND BenutzerID=" + CStr(BenutzerID))

    If IsNull(Ergebnis) Then

        OptionLesen = DefaultWert

    Else

        OptionLesen = CStr(Ergebnis)

    End If

End Function

Quellcode 2

Aufbau des Klassenmoduls

Das Klassenmodul clsOptionen_Tabelle enthält zwei öffentliche Prozeduren, die das Lesen und Schreiben von Optionen erlauben (s. Quellcode 1 und 2).

Die Prozedur OptionSpeichern erwartet als Parameter den Namen der Option sowie den Optionswert. Optional kann noch eine BenutzerID angegeben werden, um festzulegen, für welchen Benutzer diese Option gültig ist.

Wenn Sie die BenutzerID nicht angeben, verwendet die Routine automatisch die 1 als BenutzerID. Diese könnte in Ihrer Anwendung globale Einstellungen repräsentieren, die nicht für einen bestimmten, sondern für alle Benutzer relevant sind.

Das Lesen einer Option erledigt die Prozedur OptionLesen. Diese Prozedur hat die gleichen Parameter wie die Prozedur OptionSpeichern. Anstelle des Optionswertes wird hier jedoch ein Standardwert angegeben.

Dieser wird von der Prozedur immer dann als Ergebnis zurückgeliefert, wenn die Option in der Tabelle tblOptionswerte nicht existiert.

Neben den beiden öffentlichen Prozeduren sind in dem Klassenmodul noch zwei private Prozeduren enthalten (s. Quellcodes 3 und 4). Die Hilfsfunktion OptionErmittelnOderAnlegen sucht in der Tabelle tblOptionen die übergebene Option oder legt diese ggf. an.

Private Function OptionErmittelnOderAnlegen(Optionsname As String) As Integer

    Dim Ergebnis As Variant

    Ergebnis = DLookup("OptionID", "tblOptionen", "Optionsname='" + Optionsname + "'")

    If IsNull(Ergebnis) Then

        Dim rstData As New ADODB.Recordset

        With rstData

            .ActiveConnection = CurrentProject.Connection

            .Source = "tblOptionen"

            .MaxRecords = 1

            .CursorLocation = adUseServer

            .CursorType = adOpenDynamic

            .LockType = adLockOptimistic

            .Open

            .AddNew

                .Fields("Optionsname").Value = Optionsname

            .Update

            OptionErmittelnOderAnlegen = .Fields("OptionID").Value

        End With

    Else

        OptionErmittelnOderAnlegen = Ergebnis

    End If

End Function

Quellcode 3

Private Sub OptionswertSetzen(OptionID As Integer, Optionswert As String, _
    BenutzerID As Integer)

    Dim rstData As New ADODB.Recordset

    With rstData

        .ActiveConnection = CurrentProject.Connection

        .Source = "SELECT * FROM tblOptionswerte WHERE OptionID=" + CStr(OptionID) _
            + " AND BenutzerID=" + CStr(BenutzerID)

        .MaxRecords = 1

        .CursorLocation = adUseServer

        .CursorType = adOpenDynamic

        .LockType = adLockOptimistic

        .Open

        If .EOF Then

            .AddNew

            .Fields("OptionID").Value = OptionID

            .Fields("BenutzerID").Value = BenutzerID

        End If

        .Fields("Optionswert").Value = Optionswert

        .Update

    End With

End Sub

Quellcode 4

Die zweite Hilfsfunktion OptionswertSetzen hat die gleiche Aufgabe, bezieht sich jedoch auf Optionswerte.

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:

Verwandte Beiträge:

Benutzerverwaltung

© 2003-2015 André Minhorst Alle Rechte vorbehalten.