#vba #ms-access-2013
#vba #ms-access-2013
Вопрос:
Heloo, у меня есть код ниже, который помогает пользователю изменить пароль, если он или она его забыли. Теперь сначала он или она должен ввести свое имя пользователя, чтобы продолжить. ниже приведен код.
Private Sub cmdchange_Click()
On Error Resume Next
If IsNull(Me.txtnewpass) = True Then
MsgBox "New Password or Confirm Password can't be Null", vbInformation vbCritical, "Electporl"
Me.txtnewpass.SetFocus
ElseIf IsNull(Me.txtconfirmpassword) = True Then
MsgBox "New Password or Confirm Password can't be Null", vbInformation vbCritical, "Electporl"
Me.txtconfirmpassword.SetFocus
End If
Dim Pass As String
If Me.txtconfirmpassword.Value <> Me.txtnewpass.Value Then
MsgBox "Password entered does not match", vbInformation, "Error"
Exit Sub
End If
If Me.txtnewpass.Value = Me.txtconfirmpassword.Value Then
Pass = "UPDATE User Registration Details SET Password =" amp; Me.txtconfirmpassword.Value amp; "WHERE Username = " amp; Me.txtusername.Value
CurrentDb.Execute (Pass)
MsgBox "Your Password has been successfully Changed", vbInformation, "Password changed"
DoCmd.OpenForm "frmlogin"
DoCmd.Close acForm, Me.NAME
Else
MsgBox "The passwords do NOT match. Please try again." _
amp; vbCrLf amp; "and please try again.", vbCritical, _
"Re-enter both Passwords."
End If
End Sub
Теперь дело в том, что приведенный выше код работает отлично, но пароль НЕ меняется.
Может кто-нибудь, пожалуйста, помогите мне понять, почему это не работает, несмотря на то, что мне было показано, что «Ваш пароль был успешно изменен»
Комментарии:
1. Удалите
On Error Resume Next
, чтобы увидеть ошибки.2. спасибо за это, теперь я получаю синтаксическую ошибку в инструкции UPDATE, может кто-нибудь мне помочь, пожалуйста?
3. что ж, если я могу спросить, как мне получить проверки кода от фантастического дополнения Rubberduck
4. Я бы предположил, что и «пароль», и «имя пользователя» являются строковыми полями в вашей базовой таблице «Сведения о регистрации пользователя». Вам нужно посмотреть, как правильно разделять строковые поля в вашей строке sql. Выявление проблем с вашей строкой sql может быть проще, если вы добавите debug.print NameOfYourSQLString после того, как вы задали свою строку SQL (для вашего кода вы бы заменили NameOfYourSQLString на Pass, поскольку это имя вашей строки SQL). Это покажет вам полную строку SQL в немедленном окне вместе с передаваемыми значениями, чтобы вам было легче находить любые проблемы.
Ответ №1:
Пароль — это зарезервированное слово, текстовые значения должны заключаться в кавычки и не пропускать пробелы.
Итак:
Pass = "UPDATE User Registration Details SET [Password] = '" amp; Me!txtconfirmpassword.Value amp; "' WHERE Username = '" amp; Me!txtusername.Value amp; "'"