Forums Neueste Beiträge
 

Benutzergruppe als abfragebedingung

12/11/2007 - 10:41 von Tobias Demmer | Report spam
Vorab der Hinweis . ja, ich habe gegoogled ! ich habe auch das ein oder
andere zum Thema gefunden . Leider bringt mich das alles nicht so recht
vorwàrts, was zu einem erheblichen Teil daran liegen könnte, das ich ein
absoluter Newbie in Sachen VBA bin.

Zur Erlàuterung : in den Tabellen werden personenbezogene Daten von
Kollegen aller ( 3 ) Dienstgruppengespeichert. in jeder Gruppe gibt es
einen Verantwortlichen und mehrere Stellvertreter, der die Daten seiner
Schicht pflegen darf , alle anderen Daten sollen für denjenigen nicht
Sichtbar sein. in der Tabelle ist jeder Koll. einer Schicht zugeordnet
die namensgleich mit der Benutzergruppe der Datenpfleger. Diese sind aus
Gründen der Nachvollziehbarkeit namentlich als Benutzer eingepflegt.

Ich möchte erreichen , das in einer Abfrage nur die Datensàtze angezeigt
werden , bei denen die Gruppe mit der Gruppe des akt. angemeldeten
Benutzers übereinstimmt. Folgenden Code hab ich gefunden :

in diesem Modul wird die Benutzergruppe des akt. angemeldeten Users in
einer globalen Variable abgelegt .

[code]

Public Function BenutzerInGruppe(gruppe As String) As Boolean

Dim i As Integer
Dim j As Integer
Dim us As DAO.User
Dim gr As DAO.Group
Dim ws As DAO.Workspace

Set ws = DBEngine.Workspaces(0)

For i = 0 To ws.Groups.Count - 1
Set gr = ws.Groups(i)
If gr.Name = gruppe Then
For j = 0 To gr.Users.Count - 1
Set us = gr.Users(j)
If us.Name = CurrentUser Then
BenutzerInGruppe = True
Exit Function
Else
BenutzerInGruppe = False
End If
Next j
End If
Next i

' Speicher freigeben
If Not ws Is Nothing Then
ws.Close
Set ws = Nothing
End If

[/code]

und hier ??

[code]

Function fnHoleWert()
fnHoleWert = BenutzerInGruppe()
End Function

[/code]

jedenfalls soll dann der Aufruf : fnHoleWert() in der Abfrage das
gewünschte Ergebniss bringen . Die einzelnen Funtionen werden aber das
automacro aufgerufen und bringen eine Fehlermeldung Fehler beim
kompilieren " mehrdeutiger Name : Benutzeringruppe "


kann mir da jemand bitte auf die Sprünge helfen ?


MfG Tobias Demmer
 

Lesen sie die antworten

#1 Lorenz Hölscher
12/11/2007 - 11:21 | Warnen spam
Hallo Tobias,

die Meldung "Mehrdeutiger Name" heißt, daß Du in irgendeinem anderen
Modul nochmals die Function/Prozedur "BenutzerInGruppe" erstellt hast,
das wàre leicht über Bearbeiten/Suche herauszufinden.

Aber auch die Syntax ist nach Deiner Deklaration falsch. Du mußt den
String-Parameter Gruppe übergeben:

Function fnHoleWert()
fnHoleWert = BenutzerInGruppe("meineGruppe")
End Function

Besser wàre noch "Function fnHoleWert() As Boolean", damit (Dir?) klar
wird, daß auch dort nur ein Boole'scher Wert zurückkommt, wo Du
vielleicht namentlich einen String erwartest.

Da Du übrigens CurrentUser() benutzt, bist Du zwingend auf die Access-
eigene Anmeldung angewiesen, sonst heißen nàmlich alle Benutzer
"Admin". Das hast Du hoffentlich eingebaut?

Du kannst das Ergebnis am einfachsten testen mit

Sub Testmich()
MsgBox BenutzerInGruppe("meineGruppe")
End Sub

Dann sparst Du Dir einen mühsamen Abfrage-Aufruf.

tschö, Lorenz

http://www.cls-software.de/cls_soft...ssVBA.aspx

Ähnliche fragen