VBA MS ACCESS: Как я могу исправить первое состояние, если? - PullRequest
0 голосов
/ 29 января 2019

У меня есть if.В первом условии я использую функцию Dlookup, чтобы проверить, отличается ли значение текста в форме от определенной таблицы, но это условие не выполняется.

IЯ изменил оператор <> на =, но у меня все еще тот же результат.Он никогда не переходит к части Else.

 Private Sub btn_Cambiar_Click()

    On Error Resume Next

    DoCmd.SetWarnings False

    Dim CambiarContraseña As String
    Dim coincidenContraseñas As Variant

    CurrentDb.Execute dbFailOnError

    If (DLookup("[Contraseña]", "tbl_Usuarios", "[Contraseña] <>'" & Me.txt_Contraseña.Value & "'")) Then

        MsgBox "¡La contraseña no coincide!!/"
        Me.txt_Contraseña.SetFocus

    Else
            CambiarContraseña = _
            "UPDATE tbl_Usuarios SET Contraseña = txt_Contraseña_Nueva.value WHERE ID_Usuario = txt_Usuario"

            DoCmd.RunSQL CambiarContraseña

            MsgBox ("Contraseña cambiada.")

            txt_Contraseña = Null
            txt_Contraseña_Nueva = Null
    End If    

End Sub

Я ожидаю, что этот if должен идти непосредственно к части else, потому что текст, который я ввожу в форму, точно такой же, как яесть в моей таблице:

tbl_Usuarios

Ответы [ 2 ]

0 голосов
/ 30 января 2019

Вы также можете сделать что-то вроде этого

  If (Nz(DCount("[CID_Usario]", "tbl_Usuarios", "[Contraseña] <>'" & Me.txt_Contraseña.Value & "'"),0) > 0) Then ...
0 голосов
/ 29 января 2019

Результат DLOOKUP вернет значение, если ваш шаблон соответствует.Если он не найден, DLOOKUP должен вернуть ноль.Итак, в вашем If вы хотите найти этот нуль.

Вот так:

If IsNull(DLookup("[Contraseña]", "tbl_Usuarios", "[Contraseña]='" & Me.txt_Contraseña.Value & "'")) Then
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...