Benutzer und Berechtigungen in Access 2007 verwaltenWie bereits in diesem und diesem Artikel erwähnt, kann man auch in Access 2007 Benutzer und Gruppen verwalten und zumindest Tabellen einer Datenbank schützen. Doof ist nur, dass man dazu per VBA auf die entsprechenden User- und Group-Elemente der DAO-Bibliothek zugreifen oder sich selbst ein Administrationstool bauen muss. Oder kann man etwa doch noch die passenden Dialoge älterer Access-Versionen einsetzen?
BeispieldatenbankDie in diesem Download verfügbare Beispieldatenbank ist ein Add-In, dass Sie als Menü-Add-In in Access verfügbar machen können.

ProblemBerechtigungen auf Tabellenebene lassen sich auch unter Access 2007 noch einrichten, allerdings stehen die beiden zum Verwalten von Benutzern, Benutzergruppen und Berechtigungen benötigten Dialoge nicht mehr zur Verfügung. Eingebaut sind diese wohl noch, denn wenn man unter Access 2007 eine .mdb-Datei öffnet, kann man die Dialoge noch über das Ribbon öffnen:
Abbildung 1: Die Dialoge zum Verwalten von Benutzern und Co. sind in Access 2007 grundsätzlich noch vorhanden.
Öffnet man jedoch einen .accdb-Datenbank, verschwinden diese Einträge. Die nächste Idee wäre, die DoCmd.RunCmd-Methode mit den für den Aufruf notwendigen Konstanten zu verwenden:
DoCmd.RunCommand acCmdUserAndGroupAccounts
DoCmd.RunCommand acCmdUserAndGroupPermissions
Leider führen die Aufrufe dieser Methoden einheitlich zum Fehler 2046, "Der Befehl oder die Aktion ... ist zurzeit nicht verfügbar." LösungDie obigen Informationen kann man allerdings zur Lösung zusammensetzen - vielen Dank an dieser Stelle für die Anregung aus dem MS-Office-Forum: Die Dialoge sind in .mdb-Dateien verfügbar, aber nicht in .accdb-Dateien. Also behilft man sich einer in die .accdb-Datei integrierten .mdb-Datei, um auf die speziell für ältere Versionen zugeschnittenen Methoden zuzugreifen. Dies funktioniert durch einen Verweis auf eine .mdb in der aktuellen Datenbank oder, anwendungsübergreifend, durch das Einbinden einer .mdb-Datei als Add-In in Access 2007.
In beiden Fällen braucht man eine öffentliche Funktion beispielsweise mit folgendem Aussehen:
Public Function Sicherheit()
DoCmd.OpenForm "frmSicherheit", WindowMode:=acDialog
End Function
Das dadurch geöffnete Formular enthält die für das Anzeigen der Dialoge nötigen Schaltflächen, welche die oben genannten DoCmd.RunCommand-Befehle aufrufen.
Ein Formular muss man zwischenschalten, weil Access offensichtlich den Kontext zur aktuellen .accdb-Datenbank herstellen kann.
Den übrigen Aufbau können Sie der Beispieldatenbank entnehmen.
Das Add-In registrieren Sie in Access, indem Sie unter Datenbanktools/Add-Ins/Add-In-Manager den Speicherort des Add-Ins angeben. Anschließend können Sie es unter Datenbanktools/Add-Ins/Sicherheit aufrufen. |