VBA Tipp: Zugehörigkeit zu einer Benutzergruppe feststellen

Aus DBWiki
Wechseln zu: Navigation, Suche

Problem

Ich möchte feststellen, ob der aktuelle Benutzer der Datenbank (=CurrentUser) einer bestimmten Benutzergruppe (Group) angehört. Abhängig davon, welcher Gruppe der Benutzer angehört, kann ich ihn dann bestimmte Aktionen ausführen lassen.

Lösung

Das geht mit der folgenden Funktion, die in einem globalen Modul hinterlegt wird

Public Function AktBenutzerInGruppe(gruppenname As String) As Boolean
 
 Dim grp As DAO.Group
 Dim ws As DAO.Workspace
 
 Set ws = DBEngine.Workspaces(0)
 
 AktBenutzerInGruppe = False
 For Each grp In ws.Users(CurrentUser).Groups
   If grp.Name = gruppenname Then
     AktBenutzerInGruppe = True
     Exit For
   End If
 Next grp
 
 ' Speicher freigeben
 If Not ws Is Nothing Then
   ws.Close
   Set ws = Nothing
 End If
 
End Function

Aufruf

Der Beispielcode wird über eine Schaltfläche Befehl1 ausgeführt. Die Funktion prüft in diesem Beispiel, ob der aktuelle Benutzer der Gruppe admins (Administratoren) angehört.

 Private Sub Befehl1_Click()
 
 Dim gname As String
 
 ' Beispiel: Gruppenname admins (=Administratoren)
 gname = "admins"
 
 If AktBenutzerInGruppe(gname) Then
   MsgBox "Ich gehöre zur Gruppe " & gname
   ' ... hier kommt der Code rein, den ich ausführen darf oder soll
 Else
   MsgBox "Ich gehöre nicht zur Gruppe " & gname
   ' ... hier kann Code stehen, den alle anderen, die nicht zu der
   '     Gruppe gehören, ausführen dürfen oder sollen
 End If
 
End Sub

Alternative

Folgender Code stellt eine Quick&Dirty-Alternative zur obigen Funktion dar:

Public Function AktBenutzerInGruppe(Gruppenname As String) As Boolean
    On Error Resume Next
    AktBenutzerInGruppe = _
     (Gruppenname = DBengine(0).Users(CurrentUser).Groups(Gruppenname).Name)
End Function