VBA MS访问:如何解决if中的第一个条件?

时间:2019-01-29 16:22:22

标签: vba ms-access

我有一个if。在第一个条件中,我正在使用Dlookup函数来检查表单中文本的值是否与我拥有的某个表不同,但是该条件没有被采用。

我已将<>运算符更改为=,但结果仍然相同。它永远不会进入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 :(得分:1)

如果您的模式匹配,则DLOOKUP的结果将返回一个值。如果找不到,DLOOKUP应该返回一个空值。因此,您要在If中查找该空值。

赞:

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

答案 1 :(得分:1)

您也可以这样做

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