大家好,我是初学VB的新手,有个很郁闷的问题请教大家,请高手不吝赐教。 
    我在用LoginFrm登录的时候,输入正确的密码(从数据库复制和直接输入都试过),总是提示密码错误。但是我明明输入的是正确的啊。而把ACCESS数据库中的密码字段置空又可以登录。 
----------------------------------------------- 
窗体LoginFrm的代码: 
Private Sub LoginCmd_Click() 
  If UIDComb.Text = "" Then 
    MsgBox "请选择用户!", 48, "错误提示" 
    Exit Sub 
  End If 
  
  Call OpenConn 
    sql = "select * from UserID where Uname='" & UIDComb.Text & "'" 
    rs.Open sql, cn, 1, 1 
  
  If zhuan(PassComb.Text) = IIf(Trim(IsNull(rs.Fields("Upass"))), "", Trim(rs.Fields("Upass"))) Then 
    Optor = rs.Fields("Uname") 
    UsePwr = rs.Fields("Power") 
  Call CloseConn 
    MDIForm1.Show 
    Unload Me 
  Else 
    MsgBox "密码错误!", 48, "错误提示" 
    'PassComb 
  End If 
End Sub 
Private Sub ExitCmd_Click() 
  End 
End Sub Private Sub Form_Load() 
  Me.Picture1.Picture = LoadPicture(App.Path & "\Pic\login.bmp") 
  
  Call OpenConn 
    sql = "select * from UserID" 
    rs.Open sql, cn, 1, 1 
  
  Do While Not rs.EOF 
    Uname = rs.Fields("Uname") 
    UIDComb.AddItem (Uname) 
    rs.MoveNext 
  Loop 
  
  Call CloseConn   If Dir(App.Path & "\backup", vbDirectory) = "" Then 
    MkDir (App.Path & "\backup") 
  End If 
End Sub 
------------------------------- 
CONN.bas的代码: 
Public Optor As String '操作员 
Public UsePwr As String '权限 
Public cn As New ADODB.Connection 
Public rs As New ADODB.Recordset 
Public Sub OpenConn() 
    Set cn = New ADODB.Connection 
    Set rs = New ADODB.Recordset 
    cn.CursorLocation = adUseClient 
    cn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & App.Path & "\data\data.dll;_ 
Jet OLEDB:Database Password=12345;Persist Security Info=False;" 
End Sub 
'关闭数据库连接 
Public Sub CloseConn() 
  rs.Close 
  Set rs = Nothing 
  cn.Close 
  Set cn = Nothing 
End Sub '系统名称 
Public Property Get sysname() As Variant 
sysname = "管理系统" 
End Property 
----------------------------------------- 
数据库信息 
库名:data.dll 
表名:UserID 
字段: 
Uname =Admin 直接显示在UIDComb中由用户选择 
Upass =12345678  不能登陆。只有为空才能登录 
Power =1 
--------------------------------- 
请各位帮忙看看我究竟错在哪。还有,我到底有多少分呢?如果有回答,我该怎样给分?

解决方案 »

  1.   

    zhuan(PassComb.Text)zhuan是什么方法?
      

  2.   

    你好,关于zhuan的函数
    Public Function zhuan(Str)
    If Len(Str) >= 4 Then
    Str = Str & Mid(Str, 2, 2)
    Str = Right(Str, 3) & Str
    Str = Replace(Str, "0", "C")
    Str = Replace(Str, "1", "p")
    Str = Replace(Str, "2", "w")
    Str = Replace(Str, "3", "x")
    Str = Replace(Str, "4", "E")
    Str = Replace(Str, "5", "T")
    Str = Replace(Str, "6", "J")
    Str = Replace(Str, "7", "q")
    Str = Replace(Str, "8", "O")
    Str = Replace(Str, "9", "V")
    zhuan = Str
    Else
    Str = Str
    zhuan = Str
    End IfEnd Function
    这是网上抄的
      

  3.   

    If zhuan(PassComb.Text) = IIf(Trim(IsNull(rs.Fields("Upass"))), "", Trim(rs.Fields("Upass"))) Then 这一句改为:If zhuan(PassComb.Text) = IIf(Trim(IsNull(rs.Fields("Upass"))), "", zhuan(Trim(rs.Fields("Upass")))) Then 
      

  4.   

    测试成功。画一个圈只要1美元,知道在哪画圈要1000美元
    感谢fvflove画的圈
    不过我是第一次发贴,奴隶啊,有分了一定送,很谢谢你!