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 3/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

Benutzer mit Access verwalten

André Minhorst, Duisburg

Das Sicherheitssystem von Access bietet die Möglichkeit, Benutzer und Benutzergruppen zu verwalten und deren Berechtigungen an den einzelnen Objekten der Access-Datenbank festzulegen. Die Verwaltung der Berechtigungen erfolgt in zwei Dialogen, die über die Menüleiste geöffnet werden können. Leider haben diese Dialoge Nachteile - sie stehen z. B. in der Runtime-Version nicht zur Verfügung und sind nicht anpassbar. Im folgenden Beitrag erfahren Sie, wie Sie dem Anwender eine maßgeschneiderte und immer verfügbare Benutzerverwaltung zur Verfügung stellen.

Benutzer, Benutzergruppen
und Berechtigungen

Die Verwaltung der Berechtigungen von Benutzern und Benutzergruppen verläuft im optimalen Fall so, dass bei der Erstellung der Anwendung bereits alle Benutzergruppen und deren Berechtigungen feststehen. Außerdem sollte die Vergabe der Berechtigungen ausschließlich auf Gruppenebene erfolgen, niemals auf Benutzerebene.

Unter diesen Voraussetzungen müssen nach der Inbetriebnahme der Anwendung nur noch gelegentlich Benutzer hinzugefügt oder entfernt und deren Gruppenzugehörigkeiten angepasst werden.

Wenn die Datenbankanwendung diese Funktionalität unabhängig von der Art der Weitergabe (als herkömmliche Datenbank oder als Runtime-Version) aufweisen soll, müssen Sie das entsprechende Werkzeug selbst bereitstellen. Im Gegensatz zu den Dialogen zur Verwaltung von Benutzern und Gruppen sind die entsprechenden VBA-Anweisungen immer verfügbar. Mit Hilfe eines Formulars zur Verwaltung von Benutzern und Gruppen können Sie dem Anwender außerdem ein für dessen Bedürfnisse maßgeschneidertes Werkzeug zur Verfügung stellen.

Im vorliegenden Beitrag erfahren Sie, wie Sie ein solches Formular erstellen und welche Techniken zum codegesteuerten Verwalten einer Datenbank benötigt werden.

Beispieldatenbank

Als Beispieldatenbank bietet sich die Stundenzetteldatenbank aus der Ausgabe 4/2002 von Access im Unternehmen an. Die Stundenzetteldatenbank verfügt bereits über ein aktiviertes Sicherheitssystem mit verschiedenen Benutzergruppen und entsprechenden Berechtigungen. Sie können die hier beschriebenen Formulare und Module in dieser Datenbank anlegen und anwenden.

Hinweis

Wenn Ihnen die Anwendung des Sicherheitssystems nicht geläufig ist, können Sie die Beiträge Skalierbare Datensicherheit mit Access und Stundenzetteldatenbank zur Dokumentation von Arbeitsleistungen aus Heft 4/2002 als Grundlage für die Lektüre des vorliegenden Beitrags verwenden. (

Exkludieren der Berechtigungsverwaltung

Einige Formulare und Funktionen können theoretisch auch unverändert in anderen Datenbankanwendungen zum Einsatz kommen. Dazu können Sie entweder die benötigten Datenbankobjekte in die Zieldatenbank exportieren oder Sie platzieren sie in einer eigenen Datenbank und greifen per Referenz auf die dort vorhandenen Funktionen zu.

Im Beitrag Referenzen und Bibliotheken der vorliegenden Ausgabe erfahren Sie, wie Sie die Funktionen einer solchen Datenbank in andere Datenbanken einbinden und dort zur Verfügung stellen können.

Hinweis

Sie finden die Beispieldatenbanken zum vorliegenden Beitrag unter den Namen Berechtigungen97.mdb und Berechtigungen2000.mdb auf der beiliegenden Heft-CD. (

Benutzerinformationen
ermitteln

Zur Verwaltung von Benutzern und Benutzergruppen in einem neu erstellten Formular ist der Einsatz von VBA unumgänglich. Daher lernen Sie in den folgenden Abschnitten zunächst einiges über die berechtigungsspezifische Seite des Objektmodells von Access.

Das DBEngine-Objekt

Das Hauptobjekt der DAO-Bibliothek ist das Objekt DBEngine. Alle weiteren Objekte dieser Bibliothek sind diesem Objekt untergeordnet.

Die Workspaces-Auflistung und das Workspaces-Objekt

Die Workspaces-Auflistung ist dem DBEngine-Objekt untergeordnet und enthält alle Workspaces.

Das Workspace-Objekt dient zur Verwaltung einer Sitzung mit Access. Eine Sitzung wird durch die Anmeldung an die Jet-Engine gestartet und endet mit der Abmeldung. Das bedeutet unter Access 97, dass die Sitzung mit dem Starten von Access beginnt, während die Sitzung unter Access 2000 erst mit dem Öffnen einer Datenbank startet.

Hinweis

Auch wenn Sie sich nicht bewusst bei einer Datenbank anmelden, befinden Sie sich zu jeder Zeit während der Arbeit mit einer Access-Datenbank in einer Sitzung. Bei der Anwendung von nicht geschützten Datenbanken erfolgt die Anmeldung nämlich automatisch mit dem Benutzernamen Admin, der in jeder Arbeitsgruppendatei enthalten ist. Als nicht geschützt gilt eine Datenbank in diesem Falle, wenn für den Benutzer Admin kein Passwort vergeben wurde. (

Wenn Sie innerhalb einer Access-Sitzung Informationen über Benutzer, Benutzergruppen etc. verwenden möchten, erstellen Sie einfach eine Referenz auf das Workspace-Objekt der aktuellen Sitzung und greifen über entsprechende Auflistungen auf die gewünschten Informationen zu. Zur Referenzierung des Workspace-Objektes müssen Sie lediglich eine entsprechende Objektvariable deklarieren und anschließend initialisieren:

Dim wrk As Workspace

Set wrk = DBEngine.Workspaces(0)

Der Eintrag der Workspaces-Auflistung mit dem Index 0 entspricht immer der aktuellen Sitzung. Wenn Sie auf eine andere Sitzung zugreifen möchten, müssen Sie das über den Namen der Sitzung erledigen.

Die Auflistungen Groups und Users

Nachdem Sie das Workspace-Objekt festgelegt haben, können Sie leicht auf die Auflistungen Groups und Users zugreifen, um die Benutzergruppen und Benutzer der aktuellen Sitzung anzuzeigen.

Gruppen auflisten

Die Prozedur aus Quellcode 1 listet alle Namen der in der aktuellen Sitzung verwendeten Arbeitsgruppe vorhandenen Gruppen auf:

Die Prozedur durchläuft alle Einträge der Groups-Auflistung und gibt den jeweiligen Namen im Testfenster aus. Gehen Sie folgendermaßen vor, um die Prozedur auszuprobieren:

  • Klicken Sie auf der Registerseite Module des Datenbankfensters auf die Schaltfläche Neu.
  • Geben Sie die Prozedur aus Quellcode 1 im nun erscheinenden VBA-Editor ein.
  • Aktivieren Sie mit der Tastenkombination Strg + G das Testfenster, um die Prozedur auszuprobieren.
  • Geben Sie dort den Prozedurnamen ein und schließen Sie die Eingabe mit der Eingabetaste ab. (
  • Public Sub GruppenAnzeigen()

        Dim wrk As Workspace

        Dim grp As Group

        Set wrk = DBEngine.Workspaces(0)

        For Each grp In wrk.Groups

            Debug.Print grp.Name

        Next grp

    End Sub

    Quellcode 1

    Abb. 1: Auflistung aller Benutzergruppen im Testfenster

    Abb. 2: Ausgabe von Benutzern und deren Gruppen

    Die Prozedur erzeugt für die Beispieldatenbank Stundenzettelverwaltung die Ausgabe aus
    Abb. 1.

    Benutzer auflisten

    Die Prozedur zur Auflistung aller Benutzer der in der aktuellen Sitzung verwendeten Arbeitsgruppe hat einen ähnlichen Aufbau:

    Public Sub BenutzerAnzeigen()

        Dim wrk As Workspace

        Dim usr As user

        Set wrk = DBEngine.Workspaces(0)

        For Each usr In wrk.Users

            Debug.Print usr.Name

        Next usr

    End Sub

    Abhängigkeiten zwischen
    Benutzer und Gruppe

    Zur Ermittlung der Benutzer einer Gruppe bzw. der Gruppen eines Benutzers können Sie ebenfalls Auflistungen verwenden. Das folgende Beispiel ist eine Modifikation der Prozedur BenutzerAnzeigen. Sie ist um eine For Next-Schleife zur Anzeige aller Gruppen des aktuellen Benutzers erweitert worden:

    Public Sub BenutzerUndGruppenAnzeigen()

        Dim wrk As Workspace

        Set wrk = DBEngine.Workspaces(0)

        Dim usr As user

        Dim i As Integer

        For Each usr In wrk.Users

            Debug.Print usr.Name

            For i = 0 To usr.Groups.Count - 1

                Debug.Print "  " _
                    & usr.Groups(i).Name

            Next i

        Next usr

    End Sub

    Abb. 2 zeigt das Ergebnis der Prozedur BenutzerUndGruppenAnzeigen.

    Hinweis

    Die Anzeige der Gruppen und der dazugehörenden Benutzer erfolgt analog. (

    Benutzer und Gruppen
    verwalten

    Mit den soeben beschriebenen Funktionen sind Sie bereits in der Lage, ein Formular zur Anzeige von Benutzern, Gruppen und deren Abhängigkeiten anzuzeigen.

    Public Function BenutzerHinzufuegen(Benutzername As _
        String, PID As String, Passwort As String)

        On Error GoTo BenutzerHinzufuegen_Err

        Dim wrk As Workspace

        Dim usr As user

        Set wrk = DBEngine.Workspaces(0)

        Set usr = wrk.CreateUser(Benutzername, PID, _
            Passwort)

        wrk.Users.Append usr

        BenutzerHinzufuegen = True

        Exit Function

    BenutzerHinzufuegen_Err:

        If Err.Number = 3390 Then

            MsgBox "Der Benutzer mit dem Benutzernamen '" _
                & Benutzername & "' ist bereits vorhanden."

        End If

        BenutzerHinzufuegen = False

    End Function

    Quellcode 2

    Public Function GruppeHinzufuegen(Gruppenname As _
        String, PID As String)

        On Error GoTo GruppeHinzufuegen_Err

        Dim wrk As Workspace

        Dim grp As Group

        Set wrk = DBEngine.Workspaces(0)

        Set grp = wrk.CreateGroup(Gruppenname, PID)

        wrk.Groups.Append grp

        GruppeHinzufuegen = True

        Exit Function

    GruppeHinzufuegen_Err:

        If Err.Number = 3390 Then

            MsgBox "Die Datenbank enthält bereits eine " _
                & "Gruppe mit der Bezeichnung '" _
                & Gruppenname & "'."

        End If

        GruppeHinzufuegen = False

    End Function

    Quellcode 3

    Zur Verwaltung dieser Objekte fehlen nun noch die Möglichkeiten, Benutzer und Gruppen anzulegen, zu löschen und Benutzer und Gruppen einander zuzuordnen.

    Benutzer und Gruppen anlegen

    Das Anlegen von Benutzern und Gruppen erfolgt für beide Auflistungen ähnlich.

    Benutzer anlegen

    Für das Anlegen eines neuen Benutzers sind neben den üblichen Anweisungen zur Deklaration und zur Initialisierung der Variablen zwei Befehle erforderlich.

    Die Methode CreateUser des Workspace-Objekts hat drei Parameter: Benutzernamen, PID und Kennwort. Mit ihr erstellen Sie zunächst ein neues Benutzerobjekt, das Sie anschließend mit der Methode Append der Auflistung Users hinzufügen.

    Die Funktion aus Quellcode 2 enthält neben diesen Anweisungen noch eine rudimentäre Fehlerbehandlung, die eine entsprechende Meldung ausgibt, wenn der anzulegende Benutzer bereits vorhanden ist.

    Gruppen anlegen

    Das Anlegen einer neuen Gruppe erfolgt ebenfalls durch die Verwendung zweier Methoden des Workspace-Objektes:

    Nach dem Erstellen der Gruppe mit der Methode CreateGroup wird diese mit der Methode Append zur Auflistung Groups hinzugefügt. Die Methode CreateGroup benötigt die Übergabe zweier Argumente: Gruppenname und PID.

    Die Funktion aus Quellcode 3 beinhaltet die zum Hinzufügen einer Gruppe benötigten Befehle sowie eine entsprechende Fehlerbehandlung, die sich beim Versuch, eine bereits bestehende Gruppe hinzuzufügen, meldet.

    Public Function BenutzerLoeschen _
        (Benutzername As String)

        On Error GoTo BenutzerLoeschen_Err

        Dim wrk As Workspace

        Set wrk = DBEngine.Workspaces(0)

        wrk.Users.Delete Benutzername

        BenutzerLoeschen = True

        Exit Function

    BenutzerLoeschen_Err:

        BenutzerLoeschen = False

    End Function

    Quellcode 4

    Public Function _
        BenutzerZuGruppeHinzufuegen _
        (Benutzer As String, Gruppe As _
        String)

        On Error GoTo BenutzerZuGruppeHinzufuegen_Err

        Dim wrk As Workspace

        Dim usr As user

        Dim grp As Group

        Set wrk = DBEngine.Workspaces(0)

        Set usr = wrk.Users(Benutzer)

        Set grp = usr.CreateGroup(Gruppe)

        usr.Groups.Append grp

        usr.Groups.Refresh

        BenutzerZuGruppeHinzufuegen = True

        Exit Function

    BenutzerZuGruppeHinzufuegen_Err:

        BenutzerZuGruppeHinzufuegen = False

    End Function

    Quellcode 5

    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

    Access, MySQL und Berechtigungsverwaltung

    © 2003-2015 André Minhorst Alle Rechte vorbehalten.