Einem User kurzzeitig per VBA schreibrechte zuweisen

09/09/2009 - 17:41 von Oliver Vincenz | Report spam
Hallo,

ich möchte einem User mit Leserechten auf meiner DB kurzzeitig Schreibrechte
zuweisen und sie anschliessend wieder entziehen. Leider funktioniert meine
Lösung nicht. Es wàre schön, wenn mir jemand helfen könnte.

Die DB liegt im A2003-Dateiformat als MDB vor. Sie ist kompatibel zu A2007
und die Lösung muß es natürlich auch sein.

Mit der Access-Benutzreverwaltung wurden mehrere Gruppen eingerichtet, u.a.
die Gruppen grpNurLesen und grpAlleRechte. Weiter wurden Benutzer
eingerichtet, z.B. die Benutzer usrLeser und usrAlleRechte. Der Benutzer
usrLeser ist natürlich mitglied der Gruppe grpNurLesen und hat entsprechende
Rechte.

Unter bestimmten Umstànden kann es nun aber notwendig sein, daß usrLeser auf
der Tabelle tabXYZ schreiben muß. Die Gruppe grpAlleRechte hat das Recht auf
dieser Tabelle zu schreiben.

Meine Lösung sieht nun vor, daß ich den usrLeser für diese Aktion kurzzeitig
in die Gruppe grpAlleRechte aufnehme und ihn anschließend wieder entferne.
Wenn's denn funktionieren würde.


Der Code sieht ungefàhr (abgekürzt) so aus:

Set ws = DBEngine(0)
Set Gruppe = ws.Groups("grpAlleRechte")
Set Benutzer = ws.Users("usrLeser")

Gruppe.Users.Append Gruppe.CreateUser(CurrentUser())
Gruppe.Users.Refresh
Benutzer.Groups.Refresh

Im Debugger kann ich nun sehen, daß usrLeser einen Verweis auf die Gruppe
grpAlleRechte hat und die Gruppe grpAlleRechte den usrLeser enthàlt.

Trotzdem funktioniert das Schreiben auf der Tabelle nicht.

Anstelle der Anweisung Gruppe.CreateUser(CurrentUser()) habe ich noch einige
andere Varianten ausprobiert, weil ich ja eigentlich keinen User "createn"
will, sondern einen existierenden verwenden möchte. Das hat aber auch alles
nicht funktioniert.

Kann mir bitte jemand helfen / sagen ob ich auf dem richtigen oder völlig
falschen weg bin?!

Vielen Dank im Voraus,

Oliver
 

Lesen sie die antworten

#1 Mark Doerbandt
09/09/2009 - 18:29 | Warnen spam
Hallo, Oliver,

Oliver Vincenz:

Set ws = DBEngine(0)
Set Gruppe = ws.Groups("grpAlleRechte")
Set Benutzer = ws.Users("usrLeser")

Gruppe.Users.Append Gruppe.CreateUser(CurrentUser())
Gruppe.Users.Refresh
Benutzer.Groups.Refresh



hmm - einen neuen Benutzer anlegen solltest Du nicht müssen.

Was ich aber grundsàtzlich vermute, ist dass die Rechte beim Start der
Datenbank gelesen werden und dann für diese Sitzung gültig sind. Hast
Du mal Deinen Code (den mit dem vorhandenen Benutzer) probiert, die DB
geschlossen und wieder geöffnet? Hat der Benutzer dann die neuen
Rechte?

Gruss - Mark

Informationen fuer Neulinge in den Access-Newsgroups unter
http://www.doerbandt.de/Access/Newbie.htm

Bitte keine eMails auf Newsgroup-Beitràge senden.

Ähnliche fragen