Neuigkeiten:

Wenn ihr euch für eine gute Antwort bedanken möchtet, im entsprechenden Posting einfach den Knopf "sag Danke" drücken!

Mobiles Hauptmenü

Laufzeitfehler 3061 bei Versuch ein Feld in Tabelle zu überschreiben

Begonnen von TTB, Oktober 01, 2016, 17:01:56

⏪ vorheriges - nächstes ⏩

TTB

Hallo liebe Leute,

ich häng jetzt schon wieder seit Stunden über folgendem Problem:

Ich habe eine Tabelle in der verschiedene "Nutzerstatus"(der Duden sagt, das sei Plural) mitsamt Passwort gespeichert sind. Nun möchte ich per Formular das Passwort ändern können. Prüfungen, wie das Passwort letztlich auszusehen hat und dass niemand unberechtigterweise andere Passwörter ändern kann funktionieren.

Das Problem liegt darin, dass ich beim Versuch das alte Passwort zu überschreiben, den Laufzeitfehler 3061 bekomme. "2 parameter wurden erwartet aber zu wenig wurden übergeben. Wenn das Passwort aus Zahlen besteht, wurde nur 1 Parameter erwartet - aber das ist auch zu wenig. Gleicher Fehler.

Der Code sieht folgendermaßen aus:

CurrentDb.Execute ("UPDATE tblRechte SET Passwort= " & Me.txtPasswortNeu2 & " WHERE Nutzer=" & Me.kmbNutzer.Value)

Die Tabelle besteht aus den Feldern Nutzer und Passwort. Das neue Passwort soll aus dem Textfeld "txtPasswortNeu2" entnommen werden und der dazugehörige Nutzer entweder aus einem Kombinationsfeld, das die Nutzernamen enthält und "kmbNutzer" heißt oder aus der Variablen "strNutzerRechte", die zuvor deklariert wurde und eben diesen Namen enthält.


Könnt ihr mir sagen, woran es liegt?


Hier nochmal der komplette Code:

Private Sub btnPasswortNeuSpeichern_Click()

Dim strNutzerRechte As String                                                                                       'Variablendeklaration
Dim PWaktuell As String                                                                                             'Variablendeklaration
Dim PWneu1 As String                                                                                                'Variablendeklaration
Dim PWneu2 As String                                                                                                'Variablendeklaration
Dim strVorhandeneNutzer As String                                                                                   'Variablendeklaration


strNutzerRechte = Nz(DLookup("[Nutzer]", "[tblRechte]", "[Nutzer]='" & Forms![frmPasswort]![kmbNutzer] & "'"), 0)   'Zuweisung des Feldeinhaltes Nutzer in die Variable strNutzerRechte die mit dem Inhalt des kmbNutzer-Feldes übereinstimmt; Nz verhindert, dass NULL zurückgegeben wird
PWneu1 = Nz(Forms![frmPasswort]![txtPasswortNeu1], 0)                                                               'Zuweisung des Textfeldinhaltes txtPasswortNeu1 zu Variablen PWneu1
PWneu2 = Nz(Forms![frmPasswort]![txtPasswortNeu2], 0)                                                               'Zuweisung des Textfeldinhaltes txtPasswortNeu2 zu Variablen PWneu2

If strNutzerRechte = "0" Then                                                                                       'Wird der Datensatz nicht gefunden (dafür steht die "0"), wird die Prozedur beendet und untenstehende Meldung ausgegeben
    MsgBox "Dieser Nutzer existiert nicht!"
    GoTo Ende                                                                                                       'Verweis auf Ende
End If

PWaktuell = DLookup("[Passwort]", "[tblRechte]", "[Nutzer]= '" & strNutzerRechte & "'")                             'der Variablen PWaktuell wird mithilfe der Suchfunktion das Passwort zugewiesen, das zum jeweiligen Nutzer passt


If (Nz(Forms![frmPasswort]![txtPasswortAktuell], "")) = "" Then                                                     'Wenn der Wert des Feldes "Aktuelles Passwort" gleich NULL ist, wird der NULL-Wert in eine Leere Zeichenkette umgewandelt
    MsgBox "Sie haben vergessen, das aktuelle Passwort für den Nutzer *" & strNutzerRechte & "* einzugeben!"          'Entsprechende Fehlermeldung
    GoTo Ende                                                                                                       'Verweis auf Ende
    Else
    If PWaktuell <> Forms![frmPasswort]![txtPasswortAktuell] Then                                                   'Bedingung: Wenn Eingabe nicht mit entsprechendem Passwort übereinstimmt
        MsgBox "Das aktuelle Passwort ist nicht korrekt!"                                                           'Entsprechende Fehlermeldung
        GoTo Ende                                                                                                   'Verweis auf Ende
        Else
        If ((PWneu1 = "0") And (PWneu2 = "0")) Then                                                                 'Wenn beide Passwortfelder leer sind...
            MsgBox "Kein Passwort festzulegen ist etwas unsicher - meinen Sie nicht? Versuchen Sie es bitte noch einmal mit Passwort!"  '...wird die entsprechende Meldung angezeigt
            GoTo Ende                                                                                               'Verweis auf Ende
            Else
            If PWneu1 <> PWneu2 Then                                                                                'Wenn sich die neuen Passwörter voneinander unterscheiden...
                MsgBox "Das neu gewählte Passwort stimmt nicht mit der Wiederholung überein."                       '...kommt entsprechende Meldung
                GoTo Ende                                                                                           'Verweis auf Ende
                Else
                CurrentDb.Execute ("UPDATE tblRechte SET Passwort= " & Me.txtPasswortNeu2 & " WHERE Nutzer=" & Me.kmbNutzer.Value)
                'strNutzerRechte)
               
               
               
            End If
        End If
    End If
End If
'MsgBox strNutzerRechte                                                                                             'Testausgabe des Nutzernamens
'MsgBox PWaktuell                                                                                                   'Testausgabe des dazugehörigen Passwortes

Ende: Exit Sub

el_gomero

Moin,

Texte gehören in zusätzliche Hochkommata eingeschlossen:


CurrentDb.Execute "UPDATE tblRechte SET Passwort= '" & Me.txtPasswortNeu2 & "' WHERE Nutzer='" & Me.kmbNutzer & "'"
Gruß
Jürgen


Hilfe nach bestem Wissen, ohne Anspruch auf Richtigkeit und Vollständigkeit.
*feedback erwünscht*
Bitte Tipps lesen

TTB

Der Wahnsinn! Es funktioniert natürlich! Herzlichsten Dank ' " - " '