Private Sub cmdOK_Click()
    '检查正确的密码
    Dim CheckUser As New ADODB.Recordset
    Dim UsrName As String
    Dim UsrPwd As String
    Dim DBstr As String
    
    UsrName = Replace(Trim(Me.txtUserName.Text), "'", "''")
    UsrPwd = Replace(Trim(Me.txtUserPwd.Text), "'", "''")
    
    '打开数据集
    CheckUser.Open "UserInfo", g_Conn, adOpenForwardOnly, adLockOptimistic
    DBstr = "SELECT * FROM UserInfo WHERE name='" & UsrName & "'"
    Set CheckUser = g_Conn.Execute(DBstr)
    
    If CheckUser.EOF Then
        MsgBox "此用户不存在!", 0 + 16, "财务记账"
        CheckUser.Close
        Exit Sub
    Else
        CheckUser.MoveFirst
        If UsrPwd = CheckUser.Fields("password").Value Then
            MsgBox "登陆成功"
            CheckUser.Close
            Exit Sub
        Else
            MsgBox "无效的密码,请重试!", , "登录"
            txtUserPwd.Text = ""
            txtUserPwd.SetFocus
            Exit Sub
        End If
    End If
    
End Sub
打印UsrPwd和CheckUser.Fields("password").Value明明2个是相同的,但是为什么会执行else的部分?现在好晕,实在弄不清楚,大家帮帮忙,谢谢

解决方案 »

  1.   

    这样试试:
     If trim(UsrPwd) = trim(CheckUser.Fields("password").Value) Then
      

  2.   

    果真好了,是不是trim的问题啊?我前面也用过trim在赋值的时候
      

  3.   

    password字段类型是什么?用char数据库会自动补空格比如"A"在数据库就变成“A   "
    **********************************
    *本人主要使用VB+MS SQL,C#略知一二
    *                                
    *如有相关问题需要帮助            
    *                                
    *可发短消息告知链接    
    *
    *助人为快乐之本!         
    **********************************