{"id":55000107,"date":"2003-06-01T00:00:00","date_gmt":"2020-05-06T15:17:25","guid":{"rendered":"http:\/\/access-im-unternehmen.aix-dev.de\/aiu\/?p=107"},"modified":"-0001-11-30T00:00:00","modified_gmt":"-0001-11-30T00:00:00","slug":"Benutzer_mit_Access_verwalten","status":"publish","type":"post","link":"https:\/\/access-im-unternehmen.de\/Benutzer_mit_Access_verwalten\/","title":{"rendered":"Benutzer mit Access verwalten"},"content":{"rendered":"<p><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/vg05.met.vgwort.de\/na\/001286173a954420a4e0402d23efdc99\" width=\"1\" height=\"1\" alt=\"\"><\/p>\n<p><b>Andr&eacute; Minhorst, Duisburg<\/b><\/p>\n<p><b>Das Sicherheitssystem von Access bietet die M&ouml;glichkeit, Benutzer und Benutzergruppen zu verwalten und deren Berechtigungen an den einzelnen Objekten der Access-Datenbank festzulegen. Die Verwaltung der Berechtigungen erfolgt in zwei Dialogen, die &uuml;ber die Men&uuml;leiste ge&ouml;ffnet werden k&ouml;nnen. Leider haben diese Dialoge Nachteile &#8211; sie stehen z. B. in der Runtime-Version nicht zur Verf&uuml;gung und sind nicht anpassbar. Im folgenden Beitrag erfahren Sie, wie Sie dem Anwender eine ma&szlig;geschneiderte und immer verf&uuml;gbare Benutzerverwaltung zur Verf&uuml;gung stellen.<\/b><\/p>\n<p>Die Verwaltung der Berechtigungen von Benutzern und Benutzergruppen verl&auml;uft im optimalen Fall so, dass bei der Erstellung der Anwendung bereits alle Benutzergruppen und deren Berechtigungen feststehen. Au&szlig;erdem sollte die Vergabe der Berechtigungen ausschlie&szlig;lich auf Gruppenebene erfolgen, niemals auf Benutzerebene.<\/p>\n<p>Unter diesen Voraussetzungen m&uuml;ssen nach der Inbetriebnahme der Anwendung nur noch gelegentlich Benutzer hinzugef&uuml;gt oder entfernt und deren Gruppenzugeh&ouml;rigkeiten angepasst werden.<\/p>\n<p>Wenn die Datenbankanwendung diese Funktionalit&auml;t unabh&auml;ngig von der Art der Weitergabe (als herk&ouml;mmliche Datenbank oder als Runtime-Version) aufweisen soll, m&uuml;ssen Sie das entsprechende Werkzeug selbst bereitstellen. Im Gegensatz zu den Dialogen zur Verwaltung von Benutzern und Gruppen sind die entsprechenden VBA-Anweisungen immer verf&uuml;gbar. Mit Hilfe eines Formulars zur Verwaltung von Benutzern und Gruppen k&ouml;nnen Sie dem Anwender au&szlig;erdem ein f&uuml;r dessen Bed&uuml;rfnisse ma&szlig;geschneidertes Werkzeug zur Verf&uuml;gung stellen.<\/p>\n<p>Im vorliegenden Beitrag erfahren Sie, wie Sie ein solches Formular erstellen und welche Techniken zum codegesteuerten Verwalten einer Datenbank ben&ouml;tigt werden.<\/p>\n<p>Als Beispieldatenbank bietet sich die Stundenzetteldatenbank aus der Ausgabe 4\/2002 von Access im Unternehmen an. Die Stundenzetteldatenbank verf&uuml;gt bereits &uuml;ber ein aktiviertes Sicherheitssystem mit verschiedenen Benutzergruppen und entsprechenden Berechtigungen. Sie k&ouml;nnen die hier beschriebenen Formulare und Module in dieser Datenbank anlegen und anwenden.<\/p>\n<h3>Hinweis<\/h3>\n<p>Wenn Ihnen die Anwendung des Sicherheitssystems nicht gel&auml;ufig ist, k&ouml;nnen Sie die Beitr&auml;ge Skalierbare Datensicherheit mit Access und Stundenzetteldatenbank zur Dokumentation von Arbeitsleistungen aus Heft 4\/2002 als Grundlage f&uuml;r die Lekt&uuml;re des vorliegenden Beitrags verwenden. <\/p>\n<h3>Exkludieren der Berechtigungsverwaltung<\/h3>\n<p>Einige Formulare und Funktionen k&ouml;nnen theoretisch auch unver&auml;ndert in anderen Datenbankanwendungen zum Einsatz kommen. Dazu k&ouml;nnen Sie entweder die ben&ouml;tigten Datenbankobjekte in die Zieldatenbank exportieren oder Sie platzieren sie in einer eigenen Datenbank und greifen per Referenz auf die dort vorhandenen Funktionen zu.<\/p>\n<p>Im Beitrag Referenzen und Bibliotheken der vorliegenden Ausgabe erfahren Sie, wie Sie die Funktionen einer solchen Datenbank in andere Datenbanken einbinden und dort zur Verf&uuml;gung stellen k&ouml;nnen.<\/p>\n<h3>Hinweis<\/h3>\n<p>Sie finden die Beispieldatenbanken zum vorliegenden Beitrag unter den Namen Berechtigungen97.mdb und Berechtigungen2000.mdb auf der beiliegenden Heft-CD. <\/p>\n<p>Zur Verwaltung von Benutzern und Benutzergruppen in einem neu erstellten Formular ist der Einsatz von VBA unumg&auml;nglich. Daher lernen Sie in den folgenden Abschnitten zun&auml;chst einiges &uuml;ber die berechtigungsspezifische Seite des Objektmodells von Access.<\/p>\n<h2>Das DBEngine-Objekt<\/h2>\n<p>Das Hauptobjekt der DAO-Bibliothek ist das Objekt DBEngine. Alle weiteren Objekte dieser Bibliothek sind diesem Objekt untergeordnet.<\/p>\n<h2>Die Workspaces-Auflistung und das Workspaces-Objekt<\/h2>\n<p>Die Workspaces-Auflistung ist dem DBEngine-Objekt untergeordnet und enth&auml;lt alle Workspaces.<\/p>\n<p>Das Workspace-Objekt dient zur Verwaltung einer Sitzung mit Access. Eine Sitzung wird durch die Anmeldung an die Jet-Engine gestartet und endet mit der Abmeldung. Das bedeutet unter Access 97, dass die Sitzung mit dem Starten von Access beginnt, w&auml;hrend die Sitzung unter Access 2000 erst mit dem &ouml;ffnen einer Datenbank startet.<\/p>\n<h3>Hinweis<\/h3>\n<p>Auch wenn Sie sich nicht bewusst bei einer Datenbank anmelden, befinden Sie sich zu jeder Zeit w&auml;hrend der Arbeit mit einer Access-Datenbank in einer Sitzung. Bei der Anwendung von nicht gesch&uuml;tzten Datenbanken erfolgt die Anmeldung n&auml;mlich automatisch mit dem Benutzernamen Admin, der in jeder Arbeitsgruppendatei enthalten ist. Als nicht gesch&uuml;tzt gilt eine Datenbank in diesem Falle, wenn f&uuml;r den Benutzer Admin kein Passwort vergeben wurde. <\/p>\n<p>Wenn Sie innerhalb einer Access-Sitzung Informationen &uuml;ber Benutzer, Benutzergruppen etc. verwenden m&ouml;chten, erstellen Sie einfach eine Referenz auf das Workspace-Objekt der aktuellen Sitzung und greifen &uuml;ber entsprechende Auflistungen auf die gew&uuml;nschten Informationen zu. Zur Referenzierung des Workspace-Objektes m&uuml;ssen Sie lediglich eine entsprechende Objektvariable deklarieren und anschlie&szlig;end initialisieren:<\/p>\n<pre>Dim wrk As Workspace\r\nSet wrk = DBEngine.Workspaces(0)<\/pre>\n<p>Der Eintrag der Workspaces-Auflistung mit dem Index 0 entspricht immer der aktuellen Sitzung. Wenn Sie auf eine andere Sitzung zugreifen m&ouml;chten, m&uuml;ssen Sie das &uuml;ber den Namen der Sitzung erledigen.<\/p>\n<h2>Die Auflistungen Groups und Users<\/h2>\n<p>Nachdem Sie das Workspace-Objekt festgelegt haben, k&ouml;nnen Sie leicht auf die Auflistungen Groups und Users zugreifen, um die Benutzergruppen und Benutzer der aktuellen Sitzung anzuzeigen.<\/p>\n<h3>Gruppen auflisten<\/h3>\n<p>Die Prozedur aus Quellcode 1 listet alle Namen der in der aktuellen Sitzung verwendeten Arbeitsgruppe vorhandenen Gruppen auf:<\/p>\n<p>Die Prozedur durchl&auml;uft alle Eintr&auml;ge der Groups-Auflistung und gibt den jeweiligen Namen im Testfenster aus. Gehen Sie folgenderma&szlig;en vor, um die Prozedur auszuprobieren:<\/p>\n<li>Klicken Sie auf der Registerseite Module des Datenbankfensters auf die Schaltfl&auml;che Neu.<\/li>\n<li>Geben Sie die Prozedur aus Quellcode 1 im nun erscheinenden VBA-Editor ein.<\/li>\n<li>Aktivieren Sie mit der Tastenkombination Strg + G das Testfenster, um die Prozedur auszuprobieren.<\/li>\n<li>Geben Sie dort den Prozedurnamen ein und schlie&szlig;en Sie die Eingabe mit der Eingabetaste ab. (<\/li>\n<pre>Public Sub GruppenAnzeigen()\r\n    Dim wrk As Workspace\r\n    Dim grp As Group\r\n    Set wrk = DBEngine.Workspaces(0)\r\n    For Each grp In wrk.Groups\r\n        Debug.Print grp.Name\r\n    Next grp\r\nEnd Sub<\/pre>\n<p><b>Quellcode 1<\/b><\/p>\n<p><IMG height=\"240\" src=\"..\/fileadmin\/_temp_\/{5FEDB5CD-B086-4733-BB0F-0F41B1C9F31A}\/pic001.png\" width=\"447\" border=\"0\"><\/p>\n<p><b><\/b><\/p>\n<p><b><span style=\"color:darkgrey\">Bild 1:  Auflistung aller Benutzergruppen im Testfenster<\/span><\/b><\/p>\n<p><IMG height=\"355\" src=\"..\/fileadmin\/_temp_\/{5FEDB5CD-B086-4733-BB0F-0F41B1C9F31A}\/pic002.png\" width=\"447\" border=\"0\"><\/p>\n<p><b><\/b><\/p>\n<p><b><span style=\"color:darkgrey\">Bild 2:  Ausgabe von Benutzern und deren Gruppen<\/span><\/b><\/p>\n<p>Die Prozedur erzeugt f&uuml;r die Beispieldatenbank Stundenzettelverwaltung die Ausgabe aus Bild 1.<\/p>\n<h3>Benutzer auflisten<\/h3>\n<p>Die Prozedur zur Auflistung aller Benutzer der in der aktuellen Sitzung verwendeten Arbeitsgruppe hat einen &auml;hnlichen Aufbau:<\/p>\n<pre>Public Sub BenutzerAnzeigen()\r\n    Dim wrk As Workspace\r\n    Dim usr As user\r\n    Set wrk = DBEngine.Workspaces(0)\r\n    For Each usr In wrk.Users\r\n        Debug.Print usr.Name\r\n    Next usr\r\nEnd Sub<\/pre>\n<h2>Abh&auml;ngigkeiten zwischenBenutzer und Gruppe<\/h2>\n<p>Zur Ermittlung der Benutzer einer Gruppe bzw. der Gruppen eines Benutzers k&ouml;nnen Sie ebenfalls Auflistungen verwenden. Das folgende Beispiel ist eine Modifikation der Prozedur BenutzerAnzeigen. Sie ist um eine For Next-Schleife zur Anzeige aller Gruppen des aktuellen Benutzers erweitert worden:<\/p>\n<pre>Public Sub BenutzerUndGruppenAnzeigen()\r\n    Dim wrk As Workspace\r\n    Set wrk = DBEngine.Workspaces(0)\r\n    Dim usr As user\r\n    Dim i As Integer\r\n    For Each usr In wrk.Users\r\n        Debug.Print usr.Name\r\n        For i = 0 To usr.Groups.Count - 1\r\n            Debug.Print \"  \" _                & usr.Groups(i).Name\r\n        Next i\r\n    Next usr\r\nEnd Sub<\/pre>\n<p>Bild 2 zeigt das Ergebnis der Prozedur BenutzerUndGruppenAnzeigen.<\/p>\n<h3>Hinweis<\/h3>\n<p>Die Anzeige der Gruppen und der dazugeh&ouml;renden Benutzer erfolgt analog. <\/p>\n<p>Mit den soeben beschriebenen Funktionen sind Sie bereits in der Lage, ein Formular zur Anzeige von Benutzern, Gruppen und deren Abh&auml;ngigkeiten anzuzeigen.<\/p>\n<pre>Public Function BenutzerHinzufuegen(Benutzername As _    String, PID As String, Passwort As String)\r\n    On Error GoTo BenutzerHinzufuegen_Err\r\n    Dim wrk As Workspace\r\n    Dim usr As user\r\n    Set wrk = DBEngine.Workspaces(0)\r\n    Set usr = wrk.CreateUser(Benutzername, PID, _        Passwort)\r\n    wrk.Users.Append usr\r\n    BenutzerHinzufuegen = True\r\n    Exit Function\r\nBenutzerHinzufuegen_Err:\r\n    If Err.Number = 3390 Then\r\n        MsgBox \"Der Benutzer mit dem Benutzernamen ''\" _            & Benutzername & \"'' ist bereits vorhanden.\"\r\n    End If\r\n    BenutzerHinzufuegen = False\r\nEnd Function<\/pre>\n<p><b>Quellcode 2<\/b><\/p>\n<pre>Public Function GruppeHinzufuegen(Gruppenname As _    String, PID As String)\r\n    On Error GoTo GruppeHinzufuegen_Err\r\n    Dim wrk As Workspace\r\n    Dim grp As Group\r\n    Set wrk = DBEngine.Workspaces(0)\r\n    Set grp = wrk.CreateGroup(Gruppenname, PID)\r\n    wrk.Groups.Append grp\r\n    GruppeHinzufuegen = True\r\n    Exit Function\r\nGruppeHinzufuegen_Err:\r\n    If Err.Number = 3390 Then\r\n        MsgBox \"Die Datenbank enth&auml;lt bereits eine \" _            & \"Gruppe mit der Bezeichnung ''\" _            & Gruppenname & \"''.\"\r\n    End If\r\n    GruppeHinzufuegen = False\r\nEnd Function<\/pre>\n<p><b>Quellcode 3<\/b><\/p>\n<p>Zur Verwaltung dieser Objekte fehlen nun noch die M&ouml;glichkeiten, Benutzer und Gruppen anzulegen, zu l&ouml;schen und Benutzer und Gruppen einander zuzuordnen.<\/p>\n<h2>Benutzer und Gruppen anlegen<\/h2>\n<p>Das Anlegen von Benutzern und Gruppen erfolgt f&uuml;r beide Auflistungen &auml;hnlich.<\/p>\n<h3>Benutzer anlegen<\/h3>\n<p>F&uuml;r das Anlegen eines neuen Benutzers sind neben den &uuml;blichen Anweisungen zur Deklaration und zur Initialisierung der Variablen zwei Befehle erforderlich.<\/p>\n<p>Die Methode CreateUser des Workspace-Objekts hat drei Parameter: Benutzernamen, PID und Kennwort. Mit ihr erstellen Sie zun&auml;chst ein neues Benutzerobjekt, das Sie anschlie&szlig;end mit der Methode Append der Auflistung Users hinzuf&uuml;gen.<\/p>\n<p>Die Funktion aus Quellcode 2 enth&auml;lt neben diesen Anweisungen noch eine rudiment&auml;re Fehlerbehandlung, die eine entsprechende Meldung ausgibt, wenn der anzulegende Benutzer bereits vorhanden ist.<\/p>\n<h3>Gruppen anlegen<\/h3>\n<p>Das Anlegen einer neuen Gruppe erfolgt ebenfalls durch die Verwendung zweier Methoden des Workspace-Objektes:<\/p>\n<p>Nach dem Erstellen der Gruppe mit der Methode CreateGroup wird diese mit der Methode Append zur Auflistung Groups hinzugef&uuml;gt. Die Methode CreateGroup ben&ouml;tigt die &uuml;bergabe zweier Argumente: Gruppenname und PID.<\/p>\n<p>Die Funktion aus Quellcode 3 beinhaltet die zum Hinzuf&uuml;gen einer Gruppe ben&ouml;tigten Befehle sowie eine entsprechende Fehlerbehandlung, die sich beim Versuch, eine bereits bestehende Gruppe hinzuzuf&uuml;gen, meldet.<\/p>\n<pre>Public Function BenutzerLoeschen _    (Benutzername As String)\r\n    On Error GoTo BenutzerLoeschen_Err\r\n    Dim wrk As Workspace\r\n    Set wrk = DBEngine.Workspaces(0)\r\n    wrk.Users.Delete Benutzername\r\n    BenutzerLoeschen = True\r\n    Exit Function\r\nBenutzerLoeschen_Err:\r\n    BenutzerLoeschen = False\r\nEnd Function<\/pre>\n<p><b>Quellcode 4<\/b><\/p>\n<pre>Public Function _    BenutzerZuGruppeHinzufuegen _    (Benutzer As String, Gruppe As _    String)\r\n    On Error GoTo BenutzerZuGruppeHinzufuegen_Err\r\n    Dim wrk As Workspace\r\n    Dim usr As user\r\n    Dim grp As Group\r\n    Set wrk = DBEngine.Workspaces(0)\r\n    Set usr = wrk.Users(Benutzer)\r\n    Set grp = usr.CreateGroup(Gruppe)\r\n    usr.Groups.Append grp\r\n    usr.Groups.Refresh\r\n    BenutzerZuGruppeHinzufuegen = True\r\n    Exit Function\r\nBenutzerZuGruppeHinzufuegen_Err:\r\n    BenutzerZuGruppeHinzufuegen = False\r\nEnd Function<\/pre>\n<p><!--30percent--><\/p>\n<p><b>Quellcode 5<\/b><\/p>\n<h3>Hinweis<\/h3>\n<p>In dem Formular zur Verwaltung von Benutzern und Gruppen, das Sie sp&auml;ter kennen lernen werden, befindet sich keine Funktion zum Anlegen oder L&ouml;schen von Benutzergruppen. Die ben&ouml;tigten Benutzergruppen und deren Berechtigungen sollten nach der Erstellung der Anwendung weitgehend feststehen und sollten im Normalfall nicht regelm&auml;&szlig;igen &auml;nderungen unterliegen. <\/p>\n<h2>Benutzer und Gruppen l&ouml;schen<\/h2>\n<p>Selbstverst&auml;ndlich k&ouml;nnen Sie die mit den bereits vorgestellten Funktionen angelegten Benutzer und Gruppen auch wieder l&ouml;schen.<\/p>\n<h3>Benutzer l&ouml;schen<\/h3>\n<p>Das L&ouml;schen eines Benutzers erfolgt &uuml;ber die Methode Delete der Auflistung Users. Einziger Parameter der Methode ist der Benutzername.<\/p>\n<p>Die Funktion BenutzerLoeschen beinhaltet alle ben&ouml;tigten Anweisungen zum L&ouml;schen eines Benutzers und gibt nach erfolgtem L&ouml;schen den Wert True zur&uuml;ck (s. Quellcode 4).<\/p>\n<h3>Gruppen l&ouml;schen<\/h3>\n<p>Das L&ouml;schen einer Gruppe erfolgt analog zum L&ouml;schen eines Benutzers. Die einzigen Unterschiede sind die Verwendung der Groups- statt der Users-Auflistung und des Gruppen- statt des Benutzernamens.<\/p>\n<h3>Hinweis<\/h3>\n<p>Den Quellcode zur entsprechenden Funktion GruppeLoeschen finden Sie in der Beispieldatenbank. <\/p>\n<h2>Benutzer zu Gruppe hinzuf&uuml;gen<\/h2>\n<p>Das Hinzuf&uuml;gen eines Benutzers zu einer Gruppe kann auf zwei Wegen erfolgen. Entweder Sie f&uuml;gen den Benutzer der Users-Auflistung der Zielgruppe hinzu oder Sie f&uuml;gen die Zielgruppe der Groups-Auflistung des Benutzers hinzu.<\/p>\n<p>Da beide Methoden einen &auml;hnlichen Ablauf haben, lernen Sie hier nur eine von beiden kennen (die andere finden Sie in der Beispieldatenbank).<\/p>\n<p>Die Funktion BenutzerZuGruppeHinzufuegen (s. Quellcode 5) hat zwei Parameter: den Namen des Benutzers und den Namen der Zielgruppe.<\/p>\n<pre>Public Function BenutzerAusGruppeEntfernen(Benutzer _    As String, Gruppe As String)\r\n    On Error GoTo BenutzerAusGruppeEntfernen_Err\r\n    Dim wrk As Workspace\r\n    Dim grp As Group\r\n    Set wrk = DBEngine.Workspaces(0)\r\n    Set grp = wrk.Groups(Gruppe)\r\n    grp.Users.Delete Benutzer\r\n    BenutzerAusGruppeEntfernen = True\r\n    Exit Function\r\nBenutzerAusGruppeEntfernen_Err:\r\n    BenutzerAusGruppeEntfernen = False\r\nEnd Function<\/pre>\n<p><b>Quellcode 6<\/b><\/p>\n<pre>Public Function KennwortAendern(Benutzer As String, _    AltesKennwort As String, NeuesKennwort As String) _    As Boolean\r\n    On Error GoTo KennwortAendern_Err\r\n    Dim wrk As Workspace\r\n    Dim usr As user\r\n    Set wrk = DBEngine.Workspaces(0)\r\n    Set usr = wrk.Users(Benutzer)\r\n    usr.NewPassword AltesKennwort, NeuesKennwort\r\n    KennwortAendern = True\r\n    Exit Function\r\nKennwortAendern_Err:\r\n    If Err.Number = 3033 Then\r\n        MsgBox \"Das alte Kennwort ist nicht korrekt.\"\r\n    End If\r\n    KennwortAendern = False\r\nEnd Function<\/pre>\n<p><b>Quellcode 7<\/b><\/p>\n<p>Nach dem Deklarationsteil erstellt die Funktion zun&auml;chst ein User-Objekt f&uuml;r den gew&uuml;nschten Benutzer und ein Group-Objekt mit der Zielgruppe.<\/p>\n<p>Das Group-Objekt wird schlie&szlig;lich der Groups-Auflistung des Benutzers hinzugef&uuml;gt.<\/p>\n<h2>Benutzer aus Gruppe entfernen<\/h2>\n<p>Das Entfernen eines Benutzers aus einer Gruppe erfolgt mit der Funktion aus Quellcode 6. Die Funktion hat zwei Parameter: den Namen des Benutzers und den Namen der Gruppe, aus der er entfernt werden soll.<\/p>\n<p>Kernbefehl der Funktion ist die Methode Delete der Users-Auflistung einer Gruppe. Sie l&ouml;scht den angegebenen Benutzer aus der entsprechenden Gruppe.<\/p>\n<h2>Kennwort &auml;ndern<\/h2>\n<p>Die letzte ben&ouml;tigte Funktion dient zum &auml;ndern des Kennworts eines Benutzers (s. Quellcode 7). Dazu sind drei Parameter erforderlich: Der Benutzername, das alte Kennwort und das neue Kennwort.<\/p>\n<p>Die wichtigste Anweisung der Funktion beinhaltet den Aufruf der Methode NewPassword des User-Objekts. Es &uuml;bergibt das alte und das neue Passwort f&uuml;r den zuvor per User-Objekt festgelegten Benutzer.<\/p>\n<p>Die Fehlerbehandlung reagiert mit einer Meldung, wenn das eingegebene alte Kennwort nicht stimmt.<\/p>\n<p>F&uuml;r Anwender von Access-Datenbanken ist es sicher ein wenig viel verlangt, Benutzer und deren Einteilung in Gruppen &uuml;ber das Testfenster mit VBA-Funktionen zu verwalten.<\/p>\n<p>Daher stellen Sie ihm ein Formular mit allen daf&uuml;r vorgesehenen Funktionen zur Verf&uuml;gung.<\/p>\n<h2>Aufbau des Formulars<\/h2>\n<p>Das Formular enth&auml;lt ein Register mit zwei Registerseiten. Die erste Seite zeigt jeweils einen Benutzer und die Gruppen an, denen er zugeteilt ist (siehe Bild 3). Hier k&ouml;nnen Sie Benutzer hinzuf&uuml;gen, l&ouml;schen und deren Kennwort &auml;ndern sowie die Gruppen ausw&auml;hlen, denen er zugeteilt ist.<\/p>\n<p><IMG height=\"268\" src=\"..\/fileadmin\/_temp_\/{5FEDB5CD-B086-4733-BB0F-0F41B1C9F31A}\/pic003.png\" width=\"318\" border=\"0\"><\/p>\n<p><b><\/b><\/p>\n<p><b><span style=\"color:darkgrey\">Bild 3:  Anzeige eines Benutzers und seiner Gruppen<\/span><\/b><\/p>\n<p>Die zweite Registerseite enth&auml;lt die Informationen der ersten Seite aus Gruppensicht (siehe Bild 4): Das rechte Listenfeld zeigt alle Benutzer an, die zur im Kombinationsfeld ausgew&auml;hlten Gruppe geh&ouml;ren.<\/p>\n<p><IMG height=\"268\" src=\"..\/fileadmin\/_temp_\/{5FEDB5CD-B086-4733-BB0F-0F41B1C9F31A}\/pic004.png\" width=\"318\" border=\"0\"><\/p>\n<p><b><\/b><\/p>\n<p><b><span style=\"color:darkgrey\">Bild 4:  Gruppen und die enthaltenen Benutzer<\/span><\/b><\/p>\n<h2>F&uuml;llen von Steuerelementen mitCallback-Funktionen<\/h2>\n<p>Das Formular besteht im Wesentlichen aus den Kombinations- und Listenfeldern zur Anzeige der Benutzer und Gruppen.<\/p>\n<h3>Listen f&uuml;llen mit Callback-Funktionen<\/h3>\n<p>Das F&uuml;llen dieser Steuerelemente erfolgt durch den Einsatz sog. Callback-Funktionen. Diese Funktionen kommen immer dann zum Einsatz, wenn die gew&uuml;nschten Daten nicht im Datenbestand der Datenbank vorliegen und der Umfang der Daten m&ouml;glicherweise zu gro&szlig; f&uuml;r die Unterbringung in einer Wertliste ist.<\/p>\n<h3>Hinweis<\/h3>\n<p>Im Beitrag Kombinations- und Listenfelder bev&ouml;lkern in Ausgabe 4\/2002 von Access im Unternehmen erhalten Sie grundlegende Informationen zum Einsatz von Callback-Funktionen und deren Eigenschaften. <\/p>\n<p>Das Formular erfordert den Einsatz von vier unterschiedlichen Callback-Funktionen, die zum F&uuml;llen von Steuerelementen mit den folgenden Daten dienen:<\/p>\n<li>alle Benutzer<\/li>\n<li>alle Gruppen<\/li>\n<li>alle Benutzer, die einer bestimmten Gruppe zugeordnet sind<\/li>\n<li>alle Gruppen, die einem bestimmten Benutzer zugeordnet sind<\/li>\n<p>Da alle vier Funktionen einen weitgehend identischen Ablauf haben, lernen Sie im Folgenden nur die Funktion zum Einlesen aller Benutzer kennen.<\/p>\n<h3>Kombinationsfeld mit Benutzern f&uuml;llen<\/h3>\n<p>Die Funktion aus Quellcode 8 f&uuml;llt das Kombinationsfeld cboBenutzer auf der ersten Registerseite und das Listenfeld lstAlleBenutzer auf der zweiten Registerseite des Formulars frmBerechtigungen.<\/p>\n<p>Die folgende Auflistung beschreibt den Ablauf der nacheinander erfolgenden Aufrufe der Funktion durch das Kombinations- bzw. Listenfeld mit den entsprechenden Parametern:<\/p>\n<li>Parameter acLBInitialize: Ermittlung der Anzahl von Benutzern mit der Eigenschaft wrk.Users.Count<\/li>\n<li>Parameter acLBOpen: R&uuml;ckgabe des Timer-Wertes<\/li>\n<pre>Function BenutzerErmitteln(Feld As Control, ID As _    Variant, Zeile As Variant, Spalte As Variant, Code _    As Variant) As Variant\r\n    Static i As Integer\r\n    Dim Rueckgabewert As Variant\r\n    Dim wrk As DAO.Workspace\r\n    Set wrk = DBEngine.Workspaces(0)\r\n    Select Case Code\r\n        Case acLBInitialize\r\n            i = wrk.Users.Count\r\n            Rueckgabewert = i\r\n        Case acLBOpen\r\n            Rueckgabewert = Timer\r\n        Case acLBGetRowCount\r\n            Rueckgabewert = i\r\n        Case acLBGetColumnCount\r\n            Rueckgabewert = 1\r\n        Case acLBGetColumnWidth\r\n            Rueckgabewert = -1\r\n        Case acLBGetValue\r\n            Rueckgabewert = wrk.Users(Zeile).Name\r\n        Case acLBGetFormat\r\n        Case acLBEnd\r\n    End Select\r\n    BenutzerErmitteln = Rueckgabewert\r\nEnd Function<\/pre>\n<p><b>Quellcode 8<\/b><\/p>\n<p><IMG height=\"406\" src=\"..\/fileadmin\/_temp_\/{5FEDB5CD-B086-4733-BB0F-0F41B1C9F31A}\/pic005.png\" width=\"491\" border=\"0\"><\/p>\n<p><b><\/b><\/p>\n<p><b><span style=\"color:darkgrey\">Bild 5:  Einstellen der Callback-Funktion als Herkunftstyp<\/span><\/b><\/p>\n<li>Parameter acLBGetColumnCount: R&uuml;ckgabe des Wertes 1 als Spaltenanzahl<\/li>\n<li>Parameter acLBGetColumnWidth: R&uuml;ckgabe des Wertes -1, damit die Spaltenbreite automatisch festgelegt wird<\/li>\n<li>Parameter acLBGetColumnWidth: R&uuml;ckgabe des Inhalts der statischen Variablen i mit der Anzahl der Benutzer<\/li>\n<li>Parameter acLBGetValue: R&uuml;ckgabe der Benutzernamen mit der Eigenschaft wrk.Users(Zeile).Name.Der Parameter Zeile wird dabei von der Funktion zur Verf&uuml;gung gestellt. Dieser Teil wird f&uuml;r jeden vorhandenen Benutzer je einmal aufgerufen.<\/li>\n<p>Damit das Kombinationsfeld cboBenutzer mit den in der Callback-Funktion ermittelten Daten gef&uuml;llt wird, m&uuml;ssen Sie die Eigenschaft Herkunftstyp auf den Namen der Funktion einstellen (siehe Bild 5).<\/p>\n<h3>Kombinationsfeld mitGruppen f&uuml;llen<\/h3>\n<p>Das Kombinationsfeld cboGruppen auf der zweiten Registerseite des Formulars wird ebenfalls mit einer Callback-Funktion gef&uuml;llt.<\/p>\n<p>Diese f&uuml;hrt prinzipiell die gleichen Schritte wie die im vorhergehenden Abschnitt beschriebene Funktion durch und soll daher hier nicht weiter beschrieben werden.<\/p>\n<pre>Private Sub Form_Current()\r\n    Me.cboBenutzer = Me.cboBenutzer.ItemData(0)\r\n    Me.lstBenutzergruppen.RowSourceType = \"GruppenEinesBenutzersErmitteln\"\r\n    Me.lstBenutzergruppen.Requery\r\n    Me.cboGruppen = Me.cboGruppen.ItemData(0)\r\n    Me.lstGruppenbenutzer.RowSourceType = \"BenutzerEinerGruppeErmitteln\"\r\n    Me.lstGruppenbenutzer.Requery\r\nEnd Sub<\/pre>\n<p><b>Quellcode 9<\/b><\/p>\n<h3>Hinweis<\/h3>\n<p>Sie finden diese und die anderen, nicht im vorliegenden Beitrag abgedruckten Funktionen in der Beispieldatenbank auf der beiliegenden Heft-CD. <\/p>\n<h3>Listenfelder mit Informationen f&uuml;llen<\/h3>\n<p>Zwei der vier Listenfelder k&ouml;nnen ohne Probleme beim &ouml;ffnen des Formulars mit den gew&uuml;nschten Daten gef&uuml;llt werden. Dabei handelt es sich um die jeweils auf der linken Seite der Registerseiten befindlichen Listenfelder, die alle Gruppen bzw. alle Benutzer anzeigen.<\/p>\n<p>Problematischer ist es bei den beiden &uuml;brigen Listenfeldern, die lediglich die zu einem Benutzer geh&ouml;renden Gruppen bzw. die zu einer Gruppe geh&ouml;renden Benutzer anzeigen.<\/p>\n<p>Auf der ersten Registerseite beispielsweise zeigt das Listenfeld lstBenutzergruppen alle Gruppen zu dem aktuell im Kombinationsfeld ausgew&auml;hlten Benutzer an.<\/p>\n<p>Dazu ermittelt die dort verwendete Callback-Funktion GruppenEinesBenutzersErmitteln einen gegen&uuml;ber der weiter oben beschriebenen Funktion BenutzerErmitteln zwei Unterschiede:<\/p>\n<p>Die Zeile zur Ermittlung der Anzahl der Eintr&auml;ge lautet folgenderma&szlig;en:<\/p>\n<pre>i = wrk.Users(Me.cboBenutzer). _    Groups.Count<\/pre>\n<p>Die Methode Count ermittelt dabei alle Gruppen des im Kombinationsfeld cboBenutzer ausgew&auml;hlten Benutzers.<\/p>\n<p>Der zweite Unterschied findet sich in der R&uuml;ckgabe der Gruppennamen.<\/p>\n<p>Dort werden ebenfalls nur solche Eintr&auml;ge ber&uuml;cksichtigt, die sich auf den entsprechenden Benutzer beziehen.<\/p>\n<pre>Rueckgabewert = wrk.Users _(Me.cboBenutzer).Groups(Zeile).Name<\/pre>\n<p>Wenn der Wert des Kombinationsfeldes Null ist, also kein Eintrag ausgew&auml;hlt ist, bricht die Callback-Funktion mit einem Fehler ab.<\/p>\n<p>Daher m&uuml;ssen Sie daf&uuml;r sorgen, dass die Kombinationsfelder vor dem Aufruf der davon abh&auml;ngigen Callback-Funktionen mit einem Wert gef&uuml;llt werden.<\/p>\n<p>Legen Sie dazu f&uuml;r die Ereigniseigenschaft Beim Anzeigen des Formulars eine Prozedur an, die folgende Schritte ausf&uuml;hrt:<\/p>\n<li>Auswahl eines Wertes im Kombinationsfeld<\/li>\n<li>Zuweisen der Callback-Funktion an die Eigenschaft Herkunftstyp der abh&auml;ngigen Listenfelder<\/li>\n<p>Diese Aufgabe &uuml;bernimmt die Prozedur aus Quellcode 9. Sie weist den Kombinationsfeldern der beiden Registerseiten den jeweils ersten Wert der Datensatzherkunft und anschlie&szlig;end der Eigenschaft RowSourceType der Listenfelder den Namen der entsprechenden Callback-Funktion zu.<\/p>\n<p>Schlie&szlig;lich sorgt es durch die Requery-Methode f&uuml;r die Ausf&uuml;hrung der Callback-Funktionen.<\/p>\n<h2>Funktionalit&auml;t des Formulars<\/h2>\n<p>Nachdem die Steuerelemente mit Daten gef&uuml;llt sind, folgt nun die Hauptaufgabe nahezu jeder Datenbank: die Bearbeitung von Daten.<\/p>\n<p>Allerdings handelt es sich im vorliegenden Fall nicht um Daten aus den Tabellen der Datenbank, sondern um die Benutzerdaten der Datenbank.<\/p>\n<p>Zu deren Bearbeitung soll das Formular die folgenden Funktionen zur Verf&uuml;gung stellen:<\/p>\n<li>Anlegen von Benutzern<\/li>\n<li>L&ouml;schen von Benutzern<\/li>\n<li>&auml;ndern des Kennworts eines Benutzers<\/li>\n<li>Benutzer zu Gruppen hinzuf&uuml;gen und von Gruppen entfernen<\/li>\n<p>Die Steuerelemente auf dem ersten Registerblatt decken bereits alle gew&uuml;nschten Funktionen ab. Die zweite Registerseite dient lediglich der alternativen Anzeige der Zuordnung von Benutzern und Gruppen.<\/p>\n<h3>Anlegen von Benutzern<\/h3>\n<p>Das Anlegen von Benutzern erfolgt durch einen Mausklick auf die Schaltfl&auml;che cmdBenutzerAnlegen. Die dadurch ausgel&ouml;ste Prozedur &ouml;ffnet das Formular frmBenutzerAnlegen (siehe Bild 6) im Dialog-Modus.<\/p>\n<p>Dadurch wird der Prozedurablauf unterbrochen, bis das Formular entweder geschlossen oder unsichtbar gemacht wird.<\/p>\n<p><IMG height=\"147\" src=\"..\/fileadmin\/_temp_\/{5FEDB5CD-B086-4733-BB0F-0F41B1C9F31A}\/pic006.png\" width=\"241\" border=\"0\"><\/p>\n<p><b><\/b><\/p>\n<p><b><span style=\"color:darkgrey\">Bild 6:  Benutzer anlegen<\/span><\/b><\/p>\n<p>Das Formular enth&auml;lt die drei Felder zur Eingabe von Benutzername, PID und Kennwort. Nach deren Eingabe kann der Benutzer auf eine der beiden Schaltfl&auml;chen mit der Beschriftung OK oder Abbrechen klicken.<\/p>\n<p>Die durch die Schaltfl&auml;che OK ausgel&ouml;ste Ereignisprozedur &uuml;berpr&uuml;ft, ob f&uuml;r die beiden Felder txtBenutzername und txtPID ein Wert eingegeben wurde. F&uuml;r das Feld txtKennwort ist das nicht zwingend erforderlich.<\/p>\n<p>Anschlie&szlig;end setzt sie die Eigenschaft Sichtbar des Formulars auf den Wert False. Dadurch verschwindet das Formular und die aufrufende Prozedur wird fortgesetzt.<\/p>\n<p>Die Ereignisprozedur der Schaltfl&auml;che Abbrechen dient zum Schlie&szlig;en des Formulars.<\/p>\n<p>Die Prozedur, die das Formular aufgerufen hat, wertet nun die Eingabe aus und verwendet diese als Parameter f&uuml;r den Aufruf der Funktion BenutzerHinzufuegen, die bereits weiter vorne beschrieben wurde.<\/p>\n<p>Falls die Funktion den Wert True zur&uuml;ckliefert &#8211; was dem erfolgreichen Anlegen des gew&uuml;nschten Benutzers entspricht &#8211; erscheint eine entsprechende Meldung.<\/p>\n<h3>L&ouml;schen von Benutzern<\/h3>\n<p>Das L&ouml;schen von Benutzern erfordert wesentlich weniger Aufwand als das Anlegen. Die Prozedur, die durch einen Mausklick auf die Schaltfl&auml;che cmdBenutzerLoeschen ausgel&ouml;st wird, ruft lediglich die Funktion BenutzerLoeschen auf.<\/p>\n<p>Als &uuml;bergabeparameter verwendet sie den Namen des aktuell im Kombinationsfeld ausgew&auml;hlten Benutzers.<\/p>\n<h3>&auml;ndern des Kennworts<\/h3>\n<p>Zum &auml;ndern des Kennworts ist ebenfalls ein weiteres Formular erforderlich. Das Formular dient zur Eingabe des alten Kennworts sowie der zweimaligen Eingabe des neuen Kennworts, wie es allgemein &uuml;blich ist (siehe Bild 7).<\/p>\n<pre>Private Sub cmdGruppeZuBenutzerHinzufuegen_Click()\r\n    On Error Resume Next\r\n    BenutzerZuGruppeHinzufuegen Me.cboBenutzer, _        Me.lstAlleGruppen\r\n    Me.lstBenutzergruppen.Requery\r\n    Me.lstGruppenbenutzer.Requery\r\nEnd Sub<\/pre>\n<p><b>Quellcode 10<\/b><\/p>\n<p><IMG height=\"168\" src=\"..\/fileadmin\/_temp_\/{5FEDB5CD-B086-4733-BB0F-0F41B1C9F31A}\/pic007.png\" width=\"247\" border=\"0\"><\/p>\n<p><b><\/b><\/p>\n<p><b><span style=\"color:darkgrey\">Bild 7:  &auml;ndern des Kennworts<\/span><\/b><\/p>\n<p>Die Schaltfl&auml;che cmdKennwortAendern auf der ersten Registerseite des Formulars frmBerechtigungen dient dem Aufrufen des Formulars frmKennwortAendern.<\/p>\n<p>Die dadurch ausgel&ouml;ste Ereignisprozedur &ouml;ffnet das Formular im Dialogmodus, damit das aufrufende Formular die Eingaben nach dem Beenden des Dialogs auswerten kann.<\/p>\n<p>Das Formular frmKennwortAendern hat zwei Schaltfl&auml;chen zum Beenden des Dialogs, die denen des Dialogs zum Anlegen von Benutzern &auml;hneln. Auch hier findet nach dem Bet&auml;tigen der OK-Schaltfl&auml;che eine Eingabepr&uuml;fung statt.<\/p>\n<p>Nach dem Beenden des Dialogs verwendet die aufrufende Prozedur die eingegebenen Werte als Parameter f&uuml;r den Aufruf der Funktion KennwortAendern. <\/p>\n<p>Diese Funktion liefert nach erfolgreicher &auml;nderung des Kennworts den Wert True zur&uuml;ck, ansonsten den Wert False.<\/p>\n<p>Bei falscher Eingabe zeigt die Funktion eine entsprechende Meldung an.<\/p>\n<h3>Hinzuf&uuml;gen eines Benutzers zu einer Gruppe<\/h3>\n<p>Das Formular frmBerechtigungen bietet vier M&ouml;glichkeiten an, einen Benutzer einer Gruppe und umgekehrt zuzuordnen:<\/p>\n<li>per Doppelklick auf einen Eintrag des linken Listenfeldes auf dem Registerblatt Benutzer<\/li>\n<li>per Klick auf die entsprechende Schaltfl&auml;che zwischen den beiden Listenfeldern auf dem gleichen Registerblatt<\/li>\n<li>durch die entsprechenden M&ouml;glichkeiten auf dem Registerblatt Gruppen<\/li>\n<p>Durch den Einsatz jeder dieser M&ouml;glichkeiten wird &#8211; wie in Quellcode 10 &#8211; die Funktion BenutzerZuGruppeHinzufuegen aufgerufen.<\/p>\n<p>Als Parameter verwendet die aufrufende Prozedur die Werte des Kombinationsfeldes cboBenutzer und des Listenfeldes lstAlleGruppen.<\/p>\n<p>F&uuml;r den Fall, dass im Listenfeld lstAlleGruppen beim Aufruf kein Eintrag markiert ist, enth&auml;lt die Prozedur eine Fehlerbehandlung, die bei Fehlern einfach die folgende Anweisung ausf&uuml;hrt.<\/p>\n<p>Sonst w&uuml;rde die Verwendung eines Nullwertes als Parameter eine Fehlermeldung provozieren.<\/p>\n<p>Nach dem Hinzuf&uuml;gen des Benutzers zu der ausgew&auml;hlten Gruppe durch die Funktion BenutzerZuGruppeHinzufuegen aktualisiert die Prozedur noch die beiden Listenfelder<\/p>\n<p>Das Zuordnen von Benutzern zu Gruppen von der Registerseite Gruppen aus funktioniert &auml;hnlich.<\/p>\n<h3>Entfernen eines Benutzers von einer Gruppe<\/h3>\n<p>F&uuml;r das Entfernen eines Benutzers von einer Gruppe und umgekehrt gibt es ebenfalls vier M&ouml;glichkeiten &#8211; n&auml;mlich jeweils auf den beiden Registerseiten durch einen Klick auf die Schaltfl&auml;chen mit dem Pfeil nach links bei markiertem Eintrag im rechten Listenfeld oder durch einen Doppelklick auf einen Eintrag in einem der beiden rechten Listenfelder.<\/p>\n<p>Der Ablauf entspricht weitgehend dem beim Zuordnen eines Benutzers zu einer Gruppe und umgekehrt &#8211; mit der Ausnahme, dass die Funktion GruppeVonBenutzerEntfernen zum Entfernen der Zuordnung verwendet wird.<\/p>\n<h2>Verwendung des Formular alsBestandteil einerBibliotheksdatenbank<\/h2>\n<p>Wenn Sie die Benutzerverwaltung nicht in die Zieldatenbank integrieren, sondern diese als Teil einer Bibliotheksdatenbank mit der Zieldatenbank verkn&uuml;pfen m&ouml;chten, kann das wie im Beitrag Verweise und Bibliotheken in der vorliegenden Ausgabe von Access im Unternehmen erfolgen.<\/p>\n<p>Nachdem Sie die Bibliotheksdatenbank in geeigneter Form eingebunden haben, k&ouml;nnen Sie auf alle dort vorhandenen, &ouml;ffentlichen Funktionen zugreifen.<\/p>\n<p>Wie aber greifen Sie auf das Formular zum Bearbeiten der Benutzer und Benutzergruppen zu<\/p>\n<p>Die einzige M&ouml;glichkeit zum Einbinden von Formularen verkn&uuml;pfter Datenbanken zu verwenden ist eine Funktion mit einem entsprechenden Aufruf.<\/p>\n<p>Gehen Sie folgenderma&szlig;en vor, um die Datenbank Berechtigungen97.mdb bzw. Berechtigungen2000.mdb als Bibliotheksdatenbank in eine andere Datenbank einzubinden:<\/p>\n<li>&ouml;ffnen Sie die Bibliotheksdatenbank mit dem Formular zur Bearbeitung von Benutzern und Benutzergruppen.<\/li>\n<li>Legen Sie eine Prozedur mit den Anweisungen aus Quellcode 11 in einem neuen Modul an.<\/li>\n<li>Schlie&szlig;en Sie die Datenbank.<\/li>\n<li>Falls dies noch nicht geschehen ist, erstellen Sie in der Datenbank, deren Benutzer Sie pflegen m&ouml;chten, einen Verweis auf die Bibliotheksdatenbank.<\/li>\n<li>Geben Sie zum Testen der Funktionalit&auml;t im Testfenster (zu &ouml;ffnen mit der Tastenkombination Strg + G) den Namen der Funktion OeffneBenutzerverwaltung ein. (<\/li>\n<pre>Public Function _    OeffneBenutzerverwaltung()\r\n    DoCmd.OpenForm _        \"frmBenutzerverwaltung\"\r\nEnd Function<\/pre>\n<p><b>Quellcode 11<\/b><\/p>\n<p>Mit den vorgestellten Techniken k&ouml;nnen Sie beliebigen Anwendungen eine komfortable Funktionalit&auml;t zum Zuordnen von Benutzern zu Benutzergruppen hinzuf&uuml;gen.<\/p>\n<p>Die vorgestellte L&ouml;sung ist etwas komfortabler als die in Access eingebaute Funktionalit&auml;t, da sie auch die Anzeige aller Benutzer einer Gruppe erm&ouml;glicht.<\/p>\n<p>Die Funktionalit&auml;t dient vor allem dem Einsatz in solchen Varianten von Access-Anwendungen, die dem Benutzer von Haus aus nicht die M&ouml;glichkeit bieten, die eingebaute Benutzerverwaltung von Access zu verwenden. Das ist z. B. in der Runtime-Version der Fall.<\/p>\n<p>Eine denkbare Erweiterung w&auml;re die Auswahl von Benutzern aus der Mitarbeitertabelle des jeweiligen Unternehmens.<\/p>\n<p>Wenn Sie die Datenbank als Bibliotheksdatenbank zusammen mit einer anderen Datenbank weitergeben m&ouml;chten, gehen Sie mit einem entsprechenden Setup sicher. Wie Sie ein solches Setup erstellen, erfahren Sie im Beitrag Setup-Erstellung mit Inno Setup in der aktuellen Ausgabe.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Das Sicherheitssystem von Access bietet die M&ouml;glichkeit, Benutzer und Benutzergruppen zu verwalten und deren Berechtigungen an den einzelnen Objekten der Access-Datenbank festzulegen. Die Verwal-tung der Berechtigungen erfolgt in zwei Dialogen, die &uuml;ber die Men&uuml;leiste ge&ouml;ffnet werden k&ouml;nnen. Leider haben diese Dialoge Nachteile &#8211; sie stehen z. B. in der Runtime-Version nicht zur Verf&uuml;gung und sind nicht anpassbar. Im folgenden Beitrag erfahren Sie, wie Sie dem Anwender eine ma&szlig;geschneiderte und immer verf&uuml;gbare Benutzerverwaltung zur Verf&uuml;gung stellen.<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"om_disable_all_campaigns":false,"_monsterinsights_skip_tracking":false,"_monsterinsights_sitenote_active":false,"_monsterinsights_sitenote_note":"","_monsterinsights_sitenote_category":0,"_uf_show_specific_survey":0,"_uf_disable_surveys":false,"footnotes":""},"categories":[662003,66032003,44000028,44000038],"tags":[],"class_list":["post-55000107","post","type-post","status-publish","format-standard","hentry","category-662003","category-66032003","category-Ergonomie_und_Benutzeroberflaeche","category-Sicherheit"],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v20.9 (Yoast SEO v27.3) - https:\/\/yoast.com\/product\/yoast-seo-premium-wordpress\/ -->\n<title>Benutzer mit Access verwalten - Access im Unternehmen<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/access-im-unternehmen.de\/Benutzer_mit_Access_verwalten\/\" \/>\n<meta property=\"og:locale\" content=\"de_DE\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Benutzer mit Access verwalten\" \/>\n<meta property=\"og:description\" content=\"Das Sicherheitssystem von Access bietet die M&ouml;glichkeit, Benutzer und Benutzergruppen zu verwalten und deren Berechtigungen an den einzelnen Objekten der Access-Datenbank festzulegen. Die Verwal-tung der Berechtigungen erfolgt in zwei Dialogen, die &uuml;ber die Men&uuml;leiste ge&ouml;ffnet werden k&ouml;nnen. Leider haben diese Dialoge Nachteile - sie stehen z. B. in der Runtime-Version nicht zur Verf&uuml;gung und sind nicht anpassbar. Im folgenden Beitrag erfahren Sie, wie Sie dem Anwender eine ma&szlig;geschneiderte und immer verf&uuml;gbare Benutzerverwaltung zur Verf&uuml;gung stellen.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/access-im-unternehmen.de\/Benutzer_mit_Access_verwalten\/\" \/>\n<meta property=\"og:site_name\" content=\"Access im Unternehmen\" \/>\n<meta property=\"article:published_time\" content=\"2020-05-06T15:17:25+00:00\" \/>\n<meta property=\"og:image\" content=\"http:\/\/vg05.met.vgwort.de\/na\/001286173a954420a4e0402d23efdc99\" \/>\n<meta name=\"author\" content=\"Andr\u00e9 Minhorst\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Verfasst von\" \/>\n\t<meta name=\"twitter:data1\" content=\"Andr\u00e9 Minhorst\" \/>\n\t<meta name=\"twitter:label2\" content=\"Gesch\u00e4tzte Lesezeit\" \/>\n\t<meta name=\"twitter:data2\" content=\"22\u00a0Minuten\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Benutzer_mit_Access_verwalten\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Benutzer_mit_Access_verwalten\\\/\"},\"author\":{\"name\":\"Andr\u00e9 Minhorst\",\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/#\\\/schema\\\/person\\\/13395c4bcd7d7963efe33be9c584d93f\"},\"headline\":\"Benutzer mit Access verwalten\",\"datePublished\":\"2020-05-06T15:17:25+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Benutzer_mit_Access_verwalten\\\/\"},\"wordCount\":3797,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/#organization\"},\"image\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Benutzer_mit_Access_verwalten\\\/#primaryimage\"},\"thumbnailUrl\":\"http:\\\/\\\/vg05.met.vgwort.de\\\/na\\\/001286173a954420a4e0402d23efdc99\",\"articleSection\":[\"2003\",\"3\\\/2003\",\"Ergonomie und Benutzeroberfl\u00e4che\",\"Sicherheit\"],\"inLanguage\":\"de\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/access-im-unternehmen.de\\\/Benutzer_mit_Access_verwalten\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Benutzer_mit_Access_verwalten\\\/\",\"url\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Benutzer_mit_Access_verwalten\\\/\",\"name\":\"Benutzer mit Access verwalten - Access im Unternehmen\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Benutzer_mit_Access_verwalten\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Benutzer_mit_Access_verwalten\\\/#primaryimage\"},\"thumbnailUrl\":\"http:\\\/\\\/vg05.met.vgwort.de\\\/na\\\/001286173a954420a4e0402d23efdc99\",\"datePublished\":\"2020-05-06T15:17:25+00:00\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Benutzer_mit_Access_verwalten\\\/#breadcrumb\"},\"inLanguage\":\"de\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/access-im-unternehmen.de\\\/Benutzer_mit_Access_verwalten\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"de\",\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Benutzer_mit_Access_verwalten\\\/#primaryimage\",\"url\":\"http:\\\/\\\/vg05.met.vgwort.de\\\/na\\\/001286173a954420a4e0402d23efdc99\",\"contentUrl\":\"http:\\\/\\\/vg05.met.vgwort.de\\\/na\\\/001286173a954420a4e0402d23efdc99\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Benutzer_mit_Access_verwalten\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/access-im-unternehmen.de\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Benutzer mit Access verwalten\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/#website\",\"url\":\"https:\\\/\\\/access-im-unternehmen.de\\\/\",\"name\":\"Access im Unternehmen\",\"description\":\"Das Magazin f\u00fcr Datenbankentwickler auf Basis von Microsoft Access\",\"publisher\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/access-im-unternehmen.de\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"de\"},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/#organization\",\"name\":\"Andr\u00e9 Minhorst Verlag\",\"url\":\"https:\\\/\\\/access-im-unternehmen.de\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"de\",\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/#\\\/schema\\\/logo\\\/image\\\/\",\"url\":\"https:\\\/\\\/access-im-unternehmen.de\\\/wp-content\\\/uploads\\\/2019\\\/09\\\/aiu_wp.png\",\"contentUrl\":\"https:\\\/\\\/access-im-unternehmen.de\\\/wp-content\\\/uploads\\\/2019\\\/09\\\/aiu_wp.png\",\"width\":370,\"height\":111,\"caption\":\"Andr\u00e9 Minhorst Verlag\"},\"image\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/#\\\/schema\\\/logo\\\/image\\\/\"}},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/#\\\/schema\\\/person\\\/13395c4bcd7d7963efe33be9c584d93f\",\"name\":\"Andr\u00e9 Minhorst\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"de\",\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/1b9d010cf1716692cb9c34f21554e07d17d461acaea5b61b8cb21cbec678d48a?s=96&d=mm&r=g\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/1b9d010cf1716692cb9c34f21554e07d17d461acaea5b61b8cb21cbec678d48a?s=96&d=mm&r=g\",\"contentUrl\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/1b9d010cf1716692cb9c34f21554e07d17d461acaea5b61b8cb21cbec678d48a?s=96&d=mm&r=g\",\"caption\":\"Andr\u00e9 Minhorst\"}}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Benutzer mit Access verwalten - Access im Unternehmen","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/access-im-unternehmen.de\/Benutzer_mit_Access_verwalten\/","og_locale":"de_DE","og_type":"article","og_title":"Benutzer mit Access verwalten","og_description":"Das Sicherheitssystem von Access bietet die M&ouml;glichkeit, Benutzer und Benutzergruppen zu verwalten und deren Berechtigungen an den einzelnen Objekten der Access-Datenbank festzulegen. Die Verwal-tung der Berechtigungen erfolgt in zwei Dialogen, die &uuml;ber die Men&uuml;leiste ge&ouml;ffnet werden k&ouml;nnen. Leider haben diese Dialoge Nachteile - sie stehen z. B. in der Runtime-Version nicht zur Verf&uuml;gung und sind nicht anpassbar. Im folgenden Beitrag erfahren Sie, wie Sie dem Anwender eine ma&szlig;geschneiderte und immer verf&uuml;gbare Benutzerverwaltung zur Verf&uuml;gung stellen.","og_url":"https:\/\/access-im-unternehmen.de\/Benutzer_mit_Access_verwalten\/","og_site_name":"Access im Unternehmen","article_published_time":"2020-05-06T15:17:25+00:00","og_image":[{"url":"http:\/\/vg05.met.vgwort.de\/na\/001286173a954420a4e0402d23efdc99","type":"","width":"","height":""}],"author":"Andr\u00e9 Minhorst","twitter_card":"summary_large_image","twitter_misc":{"Verfasst von":"Andr\u00e9 Minhorst","Gesch\u00e4tzte Lesezeit":"22\u00a0Minuten"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/access-im-unternehmen.de\/Benutzer_mit_Access_verwalten\/#article","isPartOf":{"@id":"https:\/\/access-im-unternehmen.de\/Benutzer_mit_Access_verwalten\/"},"author":{"name":"Andr\u00e9 Minhorst","@id":"https:\/\/access-im-unternehmen.de\/#\/schema\/person\/13395c4bcd7d7963efe33be9c584d93f"},"headline":"Benutzer mit Access verwalten","datePublished":"2020-05-06T15:17:25+00:00","mainEntityOfPage":{"@id":"https:\/\/access-im-unternehmen.de\/Benutzer_mit_Access_verwalten\/"},"wordCount":3797,"commentCount":0,"publisher":{"@id":"https:\/\/access-im-unternehmen.de\/#organization"},"image":{"@id":"https:\/\/access-im-unternehmen.de\/Benutzer_mit_Access_verwalten\/#primaryimage"},"thumbnailUrl":"http:\/\/vg05.met.vgwort.de\/na\/001286173a954420a4e0402d23efdc99","articleSection":["2003","3\/2003","Ergonomie und Benutzeroberfl\u00e4che","Sicherheit"],"inLanguage":"de","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/access-im-unternehmen.de\/Benutzer_mit_Access_verwalten\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/access-im-unternehmen.de\/Benutzer_mit_Access_verwalten\/","url":"https:\/\/access-im-unternehmen.de\/Benutzer_mit_Access_verwalten\/","name":"Benutzer mit Access verwalten - Access im Unternehmen","isPartOf":{"@id":"https:\/\/access-im-unternehmen.de\/#website"},"primaryImageOfPage":{"@id":"https:\/\/access-im-unternehmen.de\/Benutzer_mit_Access_verwalten\/#primaryimage"},"image":{"@id":"https:\/\/access-im-unternehmen.de\/Benutzer_mit_Access_verwalten\/#primaryimage"},"thumbnailUrl":"http:\/\/vg05.met.vgwort.de\/na\/001286173a954420a4e0402d23efdc99","datePublished":"2020-05-06T15:17:25+00:00","breadcrumb":{"@id":"https:\/\/access-im-unternehmen.de\/Benutzer_mit_Access_verwalten\/#breadcrumb"},"inLanguage":"de","potentialAction":[{"@type":"ReadAction","target":["https:\/\/access-im-unternehmen.de\/Benutzer_mit_Access_verwalten\/"]}]},{"@type":"ImageObject","inLanguage":"de","@id":"https:\/\/access-im-unternehmen.de\/Benutzer_mit_Access_verwalten\/#primaryimage","url":"http:\/\/vg05.met.vgwort.de\/na\/001286173a954420a4e0402d23efdc99","contentUrl":"http:\/\/vg05.met.vgwort.de\/na\/001286173a954420a4e0402d23efdc99"},{"@type":"BreadcrumbList","@id":"https:\/\/access-im-unternehmen.de\/Benutzer_mit_Access_verwalten\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/access-im-unternehmen.de\/"},{"@type":"ListItem","position":2,"name":"Benutzer mit Access verwalten"}]},{"@type":"WebSite","@id":"https:\/\/access-im-unternehmen.de\/#website","url":"https:\/\/access-im-unternehmen.de\/","name":"Access im Unternehmen","description":"Das Magazin f\u00fcr Datenbankentwickler auf Basis von Microsoft Access","publisher":{"@id":"https:\/\/access-im-unternehmen.de\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/access-im-unternehmen.de\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"de"},{"@type":"Organization","@id":"https:\/\/access-im-unternehmen.de\/#organization","name":"Andr\u00e9 Minhorst Verlag","url":"https:\/\/access-im-unternehmen.de\/","logo":{"@type":"ImageObject","inLanguage":"de","@id":"https:\/\/access-im-unternehmen.de\/#\/schema\/logo\/image\/","url":"https:\/\/access-im-unternehmen.de\/wp-content\/uploads\/2019\/09\/aiu_wp.png","contentUrl":"https:\/\/access-im-unternehmen.de\/wp-content\/uploads\/2019\/09\/aiu_wp.png","width":370,"height":111,"caption":"Andr\u00e9 Minhorst Verlag"},"image":{"@id":"https:\/\/access-im-unternehmen.de\/#\/schema\/logo\/image\/"}},{"@type":"Person","@id":"https:\/\/access-im-unternehmen.de\/#\/schema\/person\/13395c4bcd7d7963efe33be9c584d93f","name":"Andr\u00e9 Minhorst","image":{"@type":"ImageObject","inLanguage":"de","@id":"https:\/\/secure.gravatar.com\/avatar\/1b9d010cf1716692cb9c34f21554e07d17d461acaea5b61b8cb21cbec678d48a?s=96&d=mm&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/1b9d010cf1716692cb9c34f21554e07d17d461acaea5b61b8cb21cbec678d48a?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/1b9d010cf1716692cb9c34f21554e07d17d461acaea5b61b8cb21cbec678d48a?s=96&d=mm&r=g","caption":"Andr\u00e9 Minhorst"}}]}},"_links":{"self":[{"href":"https:\/\/access-im-unternehmen.de\/data\/wp\/v2\/posts\/55000107","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/access-im-unternehmen.de\/data\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/access-im-unternehmen.de\/data\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/access-im-unternehmen.de\/data\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/access-im-unternehmen.de\/data\/wp\/v2\/comments?post=55000107"}],"version-history":[{"count":0,"href":"https:\/\/access-im-unternehmen.de\/data\/wp\/v2\/posts\/55000107\/revisions"}],"wp:attachment":[{"href":"https:\/\/access-im-unternehmen.de\/data\/wp\/v2\/media?parent=55000107"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/access-im-unternehmen.de\/data\/wp\/v2\/categories?post=55000107"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/access-im-unternehmen.de\/data\/wp\/v2\/tags?post=55000107"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}