Vb6 I';我正在尝试验证用户名和密码,I';I’我不能理解这个问题吗?我该如何解决这个问题?

Vb6 I';我正在尝试验证用户名和密码,I';I’我不能理解这个问题吗?我该如何解决这个问题?,vb6,Vb6,我试图验证用户名和密码,当我通过调试器调用GetUsername()和GetPassword()函数时,它会打印适当的值,但当我在程序中键入相同的值时,它会显示不正确的用户名或密码 Private Sub cmdLogin_Click() Dim ReturnVal As Integer Dim resp As Integer Dim username As String Dim password As String Debug.Print GetUsername() D

我试图验证用户名和密码,当我通过调试器调用GetUsername()和GetPassword()函数时,它会打印适当的值,但当我在程序中键入相同的值时,它会显示不正确的用户名或密码

Private Sub cmdLogin_Click()
  Dim ReturnVal As Integer
  Dim resp As Integer
  Dim username As String
  Dim password As String
  Debug.Print GetUsername()
  Debug.Print GetPassword()
  username = GetUsername()
  password = GetPassword()
  If txtUsername.Text = username And txtPassword.Text = password Then
    ReturnVal = sndPlaySound("D:\Docs Dump\351877__theatomicbrain__start- 
    computer.wav", SND_ASYNC)
    frmMenu.Show
    FormLogin.Hide
  Else
    MsgBox "Incorrect Password or Username", vbOKOnly + vbCritical, "Error"
    txtUsername.Text = ""
    txtPassword.Text = ""
  End If
End Sub

GetUsername()和GetPassword():

试试这个

Private Sub cmdLogin_Click()
  Dim ReturnVal As Integer
  Dim resp As Integer
  Dim username As String
  Dim password As String
  Dim fUserNameOK As Boolean, fPassOK As Boolean

  username = GetUsername()
  password = GetPassword()
  Debug.Print username
  Debug.Print password

  fUserNameOK = (StrComp(username, txtUsername.Text, vbTextCompare) = 0)
  fPassOK = (StrComp(username, txtPassword.Text, vbBinaryCompare) = 0)
  If fUserNameOK And fPassOK Then
    ' play sound file
  Else
    ' login error
  End If
End Sub

在If行设置断点。将鼠标悬停在fUserNameOK和FpasOK上。

显然,它们不是相同的值。从代码的其余部分判断,它们要么有不同的大小写,要么有尾随空格。运算符=(等于)区分大小写。用户名通常不区分大小写,因此请尝试以下操作:如果Trim$(LCase(txtsername.Text))=Trim$(LCase(Username))和txtPassword.Text=password,则…@Smith将转换为小写或大写,以进行不区分大小写的比较。使用的第三个参数执行不区分大小写的比较。您是否将鼠标光标悬停在该行的四个变量上?只有在登录表中有一条记录,或者您正在搜索的是第一条记录时,您的代码才会起作用(hey/9545)。您确定不应该在sql查询中包含用户名吗?
Private Sub cmdLogin_Click()
  Dim ReturnVal As Integer
  Dim resp As Integer
  Dim username As String
  Dim password As String
  Dim fUserNameOK As Boolean, fPassOK As Boolean

  username = GetUsername()
  password = GetPassword()
  Debug.Print username
  Debug.Print password

  fUserNameOK = (StrComp(username, txtUsername.Text, vbTextCompare) = 0)
  fPassOK = (StrComp(username, txtPassword.Text, vbBinaryCompare) = 0)
  If fUserNameOK And fPassOK Then
    ' play sound file
  Else
    ' login error
  End If
End Sub