BEISPIEL
BEISPIEL
HINWEIS
Kapitel 9: Fortgeschrittene Datenbankprogrammierung
cat.Users.Append "Müller", "pwMüller"
cat.Users.Append "Braun", "pwBraun"
Müller wird der Gruppe "Buchhalter" zugeordnet
cat.Groups("Buchhalter").Users.Append "Müller"
Braun wird der Gruppe "Administratoren" zugeordnet
cat.Groups("Admins").Users.Append "Braun"
Das obige Beispiel dürfte recht eindrucksvoll zeigen, wie intuitiv das Erzeugen von Usern und Gruppen mit
Hilfe der ADOX ist. Das gleiche Beispiel mit DAO programmiert ist wesentlich länger.
Ändern des Passworts von »Braun«:
Dim cat As New ADOX.Catalog
cat.ActiveConnection = Application.CurrentProject.Connection
cat.Users("Bauer").ChangePassword "pwBraun","geheim"
Entfernen von »Braun« aus der Gruppe »Administratoren«:
Dim cat As New ADOX.Catalog
cat.ActiveConnection = Application.CurrentProject.Connection
cat.Groups("Admins").Users.Delete "Braun"
Vergabe von Rechten (ADOX)
Die Zuordnung von Rechten an Datenbankobjekten verläuft auch hier nach dem gleichen Prinzip wie bei
den DAO, allerdings müssen wir hier nicht den Umweg über die Document-Objekte gehen. Den ent-
sprechenden Gruppen (Collection Groups) und Usern (Collection Users) werden die Rechte mit Hilfe der
Methode SetPermissions direkt zugewiesen.
Die Syntax:
Group|User.SetPermissions Name, ObjectType, Action, Rights [, Inherit][, ObjectTypeId]
Mit Name ist der Bezeichner des jeweiligen Datenbankobjektes (Tabellenname oder Abfragename etc.) ge-
meint.
Wollen Sie Datenbank-Rechte setzen, übergeben Sie einen Leerstring.
ObjectType spezifiziert die Art des Datenbankobjektes (z.B. adPermObjTable, adPermObjDatabase, adPerm-
ObjView, adPermObjProcedure).
Der Parameter Action kann die in der folgenden Tabelle 9.13 angegebenen Werte annehmen:
546
BEISPIEL
Konstante Beschreibung
adAccessGrant Die Gruppe oder der Benutzer erhält mindestens die angeforderten Berechtigungen
adAccessSet Die Gruppe oder der Benutzer erhält genau die angeforderten Berechtigungen
adAccessDeny Der Gruppe oder dem Benutzer werden die angegebenen Berechtigungen verweigert bzw. entzogen
adAccessRevoke Alle der Gruppe oder dem Benutzer ausdrücklich gewährten Zugriffsrechte werden widerrufen
Tabelle 9.13 Werte für den Parameter Action
Die folgende Tabelle zeigt die Rechte (Parameter Rights) im Einzelnen.
Konstante Beschreibung
adRightExecute Berechtigung, das Objekt auszuführen (Abfrage)
adRightRead Berechtigung, das Objekt zu lesen/öffnen (Datenbank, Tabelle)
adRightUpdate Berechtigung, das Objekt zu aktualisieren/ändern (z.B. Tabelle)
adRightInsert Berechtigung, in das Objekt Daten einzufügen (z.B. Records)
adRightDelete Berechtigung, Daten im Objekt zu löschen (z.B. Records)
adRightReference Berechtigung, auf das Objekt zu verweisen
adRightCreate Berechtigung, das jeweilige Objekt zu erstellen
adRightWithGrant Berechtigung, das Objekt zu verwalten
adRightReadDesign Berechtigung, die Struktur des Objekts zu lesen
adRightWriteDesign Berechtigung, die Struktur des Objekts zu schreiben
adRightFull Summe aller o.g. Rechte
adRightNone Keine Rechte
adRightDrop Berechtigung, das Objekt zu löschen
adRightExclusiv Berechtigung, auf das Objekt exklusiv zuzugreifen (z.B. Datenbank)
adRightReadPermissions Berechtigung, die Zugriffsrechte des Objekts zu lesen
adRightWritePermissions Berechtigung, die Zugriffsrechte des Objekts zu schreiben
adRightWriteOwner Berechtigung, den Owner des Objekts zu ändern
Tabelle 9.14 Konstanten für die Vergabe von Rechten
Die folgenden Beispiele zeigen Ihnen den praktischen Einsatz.
Herrn Braun werden Lese-Rechte an der Datenbank
Test.mdb
zugewiesen (Öffnen der Datenbank):
Dim conn As New ADODB.Connection
Dim cat As New ADOX.Catalog
conn.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=c:\test.mdb"
conn.Open
Set cat.ActiveConnection = conn
cat.Users("Braun").SetPermissions "", adPermObjDatabase, adAccessSet, adRightRead
547
Zugriffsschutz in Access-Datenbanken
BEISPIEL
BEISPIEL
Kapitel 9: Fortgeschrittene Datenbankprogrammierung
Herrn Braun werden alle Rechte an der Tabelle »Gehälter« zugewiesen:
Dim conn As New ADODB.Connection
Dim cat As New ADOX.Catalog
conn.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=c:\test.mdb"
conn.Open
Set cat.ActiveConnection = conn
cat.Users("Braun").SetPermissions "Gehälter", adPermObjTable, adAccessSet, adRightFull
Der Gruppe »Buchhalter« werden die Leserechte an der Tabelle »Gehälter« erteilt:
Dim conn As New ADODB.Connection
Dim cat As New ADOX.Catalog
conn.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=Test.mdb "
conn.Open
Set cat.ActiveConnection = conn
cat.Groups("Buchhalter").SetPermissions "Gehälter", adPermObjTable, adAccessSet, adRightRead
Die folgende Tabelle soll Umsteigern das Anpassen ihrer Programme erleichtern:
DAO ADOX
dbSecNoAccess adRightNone
dbSecFullAccess adRightFull
dbSecDelete adRightDrop
dbSecReadSec adRightReadPermissions
dbSecWriteSec adRightWritePermissions
dbSecWriteOwner adRightWriteOwner
dbSecCreate adRightCreate
dbSecReadDef adRightReadDesign
dbSecWriteDef adRightWriteDesign
dbSecRetrieveData adRightRead
dbSecInsertData adRightInsert
dbSecReplaceData adRightUpdate
dbSecDeleteData adRightDelete
dbSecDBAdmin adRightFull
dbSecDBCreate adRightCreate
dbSecDBExclusive adRightExclusive
dbSecDBOpen adRightRead
Tabelle 9.15 Vergleich zwischen DAO und ADOX
548

Get Microsoft Office Access 2007-Programmierung - Das Handbuch now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.