Neuigkeiten:

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

Mobiles Hauptmenü

Formular mit verschiedenen Passwörtern schützen die je nach Eingabe ein anderes

Begonnen von Caro_ne, November 10, 2022, 13:48:12

⏪ vorheriges - nächstes ⏩

Caro_ne

Hallo Zusammen,
Ich würde gerne mit dem folgenden VBA Code folgendes erreichen: Beim Öffnen des Formulars erscheint eine Passwortabfrage, es gibt 2 verschiedene Passwörter. Je nachdem welches eingegeben wird soll ein Makro gestartet werden. Beim Wechsel von Entwurfs- auf Formularansicht fragt er auch das Passwort, hier funktioniert mein Code. Nur wenn ich das Formular neu öffne erscheint die Fehlernummer 2046, und laut Debugger ist das Makro das Problem. Das Makro ist ein "AnwendenFilter" mit einer Bedingung. Fügt man das Makro als Button in das Formular ein funktioniert es einwandfrei. Hier der Code:

Private Sub Form_Open(Cancel As Integer)
Select Case InputBox("Passwort eingeben", "Passwortabfrage")
Case "DAH"
DoCmd.RunMacro "Mak_PL_DAH"
Case "LEF"
DoCmd.RunMacro "Mak_PL_LEF"
Case Else
MsgBox "Falsch"
DoCmd.Close acForm, Me.Name
End Select
End Sub

Wäre super wenn mir jemand helfen kann,
Gruß Caro :)

MzKlMu

Hallo,
vergiss diese Mischung von VBa Code und Makros. Zu Makros wird Dir ohnehin keiner helfen.
Hinterlege den Filter im VBA Code.

Was und wie wird über das Makro gefiltert ?

PS:
Das Passwort wird auch mit "dah" als richtig erkannt, ist Dir das klar ?
Auch "lef" wird funktionieren.
Gruß Klaus

Caro_ne

Hallo Klaus,

ich bin leider Anfänger in Access daher sind mir Makros sehr behilflich.
Das habe ich tatsächlich auch schon versucht, indem ich das Makro in einen VBA Code konvertiert habe und diese Funktion dann aufgerufen habe. Führt aber zu demselben Ergebnis. Wie gesagt, es funktioniert wenn ich von der Entwurfs- in die Formularansicht wechsle, nur nicht wenn ich das Formular neu öffne. Da erscheint dann: Sie können die AnwendenFilter-Aktion nicht für dieses Fenster verwenden.

PS.: Ja das ist mir klar, macht aber gar nichts :-)

MzKlMu

Hallo,
Du musst schon erklären was Du filtern willst. Dem Makro musst Du es ja auch sagen. Anders kann ich Dir nicht helfen.
Zitatindem ich das Makro in einen VBA Code konvertiert habe
Zeige mal diesen VBA Code.

Makros solltest Du nicht anwenden, Du wirst zu Makros so gut wie keine Hilfe bekommen.
Gruß Klaus

Caro_ne

Hallo Klaus,

entschuldige das habe ich überlesen. Ich möchte nach einem Namenskürzel filtern und nach einem Kontrollkasten.

Der konvertierte Code sieht so aus:
Function Mak_PL_DAH()
On Error GoTo Mak_PL_DAH_Err

    DoCmd.ApplyFilter "", "[tbl_Hauptuebersicht]![Bearbeiter PL]=""DAH"" And [tbl_Hauptuebersicht]![Abgerechnet]=0", ""


Mak_PL_DAH_Exit:
    Exit Function

Mak_PL_DAH_Err:
    MsgBox Error$
    Resume Mak_PL_DAH_Exit

End Function

Gruß Caro :-)

MzKlMu

Hallo,
versuche es mal so:
Private Sub Form_Open(Cancel As Integer)
    Select Case InputBox("Passwort eingeben", "Passwortabfrage")
        Case "DAH"
            Me.Filter = "[Bearbeiter PL]= 'DAH' And [Abgerechnet]= False"
            Me.FilterOn = True
        Case "LEF"
            Me.Filter = "[Bearbeiter PL]= 'LEF' And [Abgerechnet]= False"
            Me.FilterOn = True
        Case Else
            MsgBox "Falsch"
            DoCmd.Close
    End Select
End Sub

PS:
Ich würde Dir dringend raten auf Leerzeichen (und andere Sonderzeichen) in Feldnamen zu verzichten. Du bisst immer gezwungen bei Bezügen ein [] Klammerpaar zu verwenden, was zusätzliche Arbeit macht .
Und Code immer sauber formatiert darstellen und die Codetags des Forums verwenden.
Gruß Klaus

Caro_ne

Hallo Klaus,

ich bin dir sehr dankbar, es funktioniert einwandfrei!!! :) Danke auch noch für die Tipps!

Grüße, Caro :-)