# MS Access VBA SQL Update



## Alex777 (21. Mai 2018)

Hallo zusammen! 

Zunächst war ich mir nicht sicher ob das Thema unter VBA oder SQL gehört .. 

Es geht um folgendes, habe in meiner Datenbank einen VBA Code, der bei Neueingabe des Userkennworts die Benutzertabelle aktualisiert.

Hier der Code:


```
Private Sub PWReset(BenutzerID As Long)
Dim strPW1 As String
Dim strPW2 As String
Dim strSQL As String

Zeile1:
strPW1 = InputBox("Bitte geben Sie ein neues Kennwort ein!")
strPW2 = InputBox("Bitte wiederholen Sie das neue Kennwort!")

If strPW1 = strPW2 Then
strSQL = "UPDATE tblBenutzer SET tblBenutzer.Passwort = '" & strPW2 & "'" & " AND tblBenutzer.NeueingabePW = FALSE" & " WHERE BenutzerID = "  & BenutzerID
DoCmd.SetWarnings False
DoCmd.RunSQL strSQL
CurrentDb.Execute strSQL, dbFailOnError
DoCmd.SetWarnings True
Else
MsgBox "Die Kennwörter stimmen nicht überein!"
GoTo Zeile1
End If

End Sub
```

Leider funktioniert der SQL Teil nicht. Es kommt keine Fehlermeldung. 
Der Datensatz wird aber nicht mit den Werten strPW2 und False aktualisiert. In das Feld tblBenutzer.Passwort wird durch die Abfrage eine 0 geschrieben. Manchmal auch -1.

Habe den SQL Teil nun auch schonmal in eine eigene Abfrage kopiert und ausgeführt. Das Problem bleibt das gleiche.
Hier nochmal die reine Abfrage:

```
UPDATE tblBenutzer SET tblBenutzer.Passwort = 'Hallo' AND tblBenutzer.NeueingabePW = FALSE WHERE BenutzerID = 1
```

Wenn ich diese ausführe wird in das Feld Passwort des Benutzers 1 der Wert "-1" geschrieben, das Feld NeueingabePW bleibt auf TRUE.
Das Feld Passwort ist als kurzer Text formatiert, das Feld NeueingabePW als Ja/Nein.

Ich bedanke mich schonmal für eure Mühe.

Gruß Alex


----------



## Zvoni (21. Mai 2018)

```
UPDATE tblBenutzer 
SET tblBenutzer.Passwort = 'Hallo',
tblBenutzer.NeueingabePW = FALSE 
WHERE tblBenutzer.BenutzerID = 1
```

Btw: Umbauen! Das Goto-Gedöns ist komplett unnötig.
Eine einfache Do..Loop Until reicht vollkommen aus


----------

