title image


Smiley ...Und es geht doch mit dem Access - internen ...
... Rechtesystem.



Nämlich mit einem Trick. Ich habe mich heute morgen ebenfalls mit diesem Thema beschäftigt. Man geht wie folgt vor.



1.

Man lege in der entsprechenden .mdw verschiedene Benutzergruppen an (z.B. 'Köln', 'Potsdam' usw.)



2.

Man ordne die jeweiligen User den Benutzergruppen zu (Ein User kann zu mehreren Gruppen gehören). Man sollte jeden User mindestens einer weiteren Gruppe zuordnen (standardmäßig gehört jeder zur Gruppe 'Benutzer').



3.

Man sorge dafür, dass man sich immer mit Benutzername und Passwort anmelden muss (Standardadmin entrechten).



4.

Man liest die jeweilige/n Gruppe/n des angemeldeten Users aus und führt die Aktionen wie gewünscht aus. In einem Beispiel von mir enable / disable ich die Schaltflächen eines Startforms in Abhängigkeit von den zugelassenen Gruppen (diese hinterlege ich einfach in der Tag-Eigenschaft der Schaltflächen. Auf diese Weise brauche ich beim Start des Forms nur 3 Zeilen Code...).



Mit folgendem Code aus dem VBA CodeBook - von mir etwas abgewandelt - kann man feststellen, ob der Mitglied einer bestimmten Gruppe ist. Man kann der Funktion mehrere Gruppen übergeben (z.B. "User,Leser,Bearbeiter,Chef"). Sie gibt 'true' zurück, wenn sich der angemeldete User in einer der Gruppen befindet.





'* AP24 ****************************************************

'Description: Ermittelt, ob eine Benutzer in der angebenen

' der akt. Sicherheitsdatei enhalten ist

'Parameters: strGroup, [varUser]

'

'geändert am 05.02.04 durch Walter Grimm:

'Es können nunmehr auch mehrere Gruppen durch Kommata getrennt

'übergeben werden. Die Funktion gibt 'true' zurück, sobald der

'User Mitglied in eine der Gruppen ist

'

'Return: Boolean

'* AP24 ****************************************************

Public Function IsGroupMember( _

ByVal strGroup As String, _

Optional ByVal varUser As Variant) As Boolean



Dim wrk As Workspace

Dim usr As User

Dim grp As Group

Dim varGroupName As Variant 'den übergebenen String

'in ein Array zerlegen

Dim strGroupList As String 'Nimmt alle Gruppen des Users in

'eine Liste auf

Dim i As Long

On Error GoTo IsGroupMember_Error



Set wrk = DBEngine.Workspaces(0)



wrk.Users.Refresh

wrk.Groups.Refresh



If IsMissing(varUser) Then

varUser = CurrentUser()

End If



Set usr = wrk.Users(varUser)

'Gruppenliste erzeugen

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

strGroupList = strGroupList & usr.Groups(i).Name & " "

Next i

'Jetzt prüfen, ob der übergebene Gruppenname in der

'Liste enthalten ist

varGroupName = Split(strGroup, ",")

For i = 0 To UBound(varGroupName)

If InStr(1, strGroupList, varGroupName(i)) > 0 Then

IsGroupMember = True

Exit For

End If

Next i



Exit Function



IsGroupMember_Error:



MsgBox err.Description



End Function





Zu der nicht ganz einfachen Benutzerverwaltung in Access: s. Archivbeiträge.




Mit freundlichen Grüßen aus Wuppertal

Walter Grimm EasyPointer

MS Access 2000/XP, MS SQL Server 2005, Windows XP
C#.Net 2.0 - VS 2005 Std
Bitte immer Erfolgs- oder Misserfolgsmeldung abgeben
++ Emails und Dateianhänge bitte nur nach Absprache ++

geschrieben von

Login

E-Mail:
  

Passwort:
  

Beitrag anfügen

Symbol:
 
 
 
 
 
 
 
 
 
 
 
 
 

Überschrift: