Hallo Leute,
Ich habe folgendes Problem:
Da es seit Access 2003 keine Benutzerverwaltung mehr gibt, wollte ich eine eigenes Login erstellen.
Das funktioniert auch soweit.
Es gibt nur zwei Benutzer: Admin und Benutzer
Der Admin sollte auf alles zugreifen können und beliebig ändern können
Der Benutzer soll sich nur durch Formulare durchklicken können, kann aber auch die Datensätze in den Formularen ändern.
Um das Umzusetzen, hab ich ein wenig gegoogelt und wurde auch fündig.
Wenn der Benutzer sich anmeldet wird praktisch alles ausgeblendet, dass Problem ist, auch der Admin kann beim nächsten Login nicht mehr auf alles zugreifen.
Die Tabellen in Navigationsleiste werden angezeigt, und auch das Menüband ist noch da, aber Abfragen und Formulare sind ausgeblendet.
Das ist der Code womit ich das Umgesetzt habe
Private Sub Befehl1_Click()
Dim UserLevel As Integer
If IsNull(Me.txtBenutzername) Then
MsgBox "Bitte Benutzernamen eingeben", vbInformation, "Benutzername erforderlich"
Me.txtBenutzername.SetFocus
ElseIf IsNull(Me.txtPasswort) Then
MsgBox "Bitte Passwort eingeben", vbInformation, "Passwort erforderlich"
Me.txtPasswort.SetFocus
Else
If (IsNull(DLookup("[benBenutzerLogin]", "tblBenutzer", "[benBenutzerLogin] ='" & Me.txtBenutzername.Value & "' And benPasswort = '" & Me.txtPasswort.Value & "'"))) Then
MsgBox "Falscher Benutzername oder Passwort"
Else
UserLevel = DLookup("UserSecurity", "tblBenutzer", "benBenutzerLogin ='" & Me.txtBenutzername.Value & "'")
DoCmd.Close
If UserLevel = 1 Then
DoCmd.OpenForm "frmSuchformularNeu2"
DoCmd.OpenForm "frmStart"
Else
[color=green] If CommandBars("Ribbon").Visible = True Then
DoCmd.ShowToolbar "Ribbon", acToolbarNo
End If
For Each cmb In CommandBars
cmb.Enabled = False
Next[/color]
[color=red]DoCmd.NavigateTo "acNavigationCategoryObjectType", _
"acNavigationGroupTables"
DoCmd.SelectObject acTable, vbNullString, True
DoCmd.RunCommand acCmdWindowHide[/color]
DoCmd.OpenForm "frmHidden", , , , , acHidden
DoCmd.OpenForm "frmSuchformularNeu2"
DoCmd.OpenForm "frmStart"
End If
End If
End If
End Sub
Der Grüne Teil ist dafür verantwortlich das, das Menüband ausgeblendet wird
In dem Formular "frmHidden" steht dann folgendes:
Private Sub Form_Close()
For Each cmb In CommandBars
cmb.Enabled = True
Next
End Sub
Das macht den grünen Teil beim schließen der Datenbank wieder rückgängig.
Der Rote Teil ist dafür verantwortlich, das die Navigationsleiste verschwindet.
Beim neustarten der Datenbank ist die Navigationsleiste auch wieder da, allerdings Fehlen die Formulare und Abfragen...
Meine Frage:
Ich würde am liebsten einen weiteren Code in den Formular "frmHidden" hinzufügen welcher alles aus der Navigationsleiste wieder anzeigt. Nur hab ich keine Ahnung wie, da ich bisher kaum etwas in VBA gemacht habe.
Werde die Datenbank Anhängen, damit es evtl besser verstanden wird.
Admin -> Passwort: Passwort
Benutzer -> Passwort: 12345
Danke schon mal, Gruß
Ocrim
Sry die Datenbank im Anhang hat das falsche Passwort..
Lad sie grad neu für euch hoch
Hallo,
Zitatauch der Admin kann beim nächsten Login nicht mehr auf alles zugreifen
gib jedem ein eigenes lokales Frontend, dann sollte sich das Problem erübrigen.
Der Benutzer sollte das Navigations-Panel übrigens überhaupt nicht zu Gesicht bekommen und ausschließlich formulargesteuert durch die Anwendung geführt werden.
Nachtrag:
Abgesehen davon, was meinst du, was der folgende Befehl bewirkt:
DoCmd.NavigateTo "acNavigationCategoryObjectType", "acNavigationGroupTables"
Hab das Problem vorhin selbst gelöst :)
Dennoch Danke.
Hab ein 2 versteckte Formulare erstellt,
Beim Start der DB ist bereits alles gesperrt.
Meldet man sich als Admin an, öffnet sich das erste versteckte Formular, welches alles entsperrt.
Meldet man sich als Benutzer an, öffnet sich das zweite versteckte Formular, welches beim schließen der Datenbank wieder alles entsperrt.
Um wieder alle Objekte der Naviagtionsleiste angezeigt zu bekommen hab ich folgenden Code verwendet:
DoCmd.NavigateTo "acNavigationCategoryObjectType", _
"acNavigationGroupTables"
DoCmd.SelectObject acTable, , True
DoCmd.SelectObject acQuery, , True
DoCmd.SelectObject acForm, , True
DoCmd.NavigateTo "acNavigationCategoryObjectType", "" sollte genügen.
(einfach mal die Access-Hilfe lesen zu den Befehlen die du einsetzt)
Und ein zweites Formular brauchst du dazu auch nicht.