Neuigkeiten:

Ist euer Problem gelöst, dann bitte den Knopf "Thema gelöst" drücken!

Mobiles Hauptmenü

Formulare und Abfragen einblenden

Begonnen von Ocrim, Dezember 01, 2014, 13:52:02

⏪ vorheriges - nächstes ⏩

Ocrim

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

Ocrim

Sry die Datenbank im Anhang hat das falsche Passwort..
Lad sie grad neu für euch hoch

MaggieMay

#2
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"
Freundliche Grüße
MaggieMay

Ocrim

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

MaggieMay

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.
Freundliche Grüße
MaggieMay