我想做个登录界面。这个界面有
两个textbox,一个是username,一个是passward,
有两个botton,一个[登录]botton,一个[注册]botton.
这里我想应该要用到数据库了
当我输入了“用户名”和“密码”,单击[登录],
这时要将用户名、密码与数据库中的用户名、密码相比较,
如果用户名,密码都对,就登录成功,否则,就显示登录失败信息,如“您的密码错误”。
关键是我不知道怎么与数据库中的用户名、密码相比较。是了好多遍,都不成功。
郁闷!
特来此请教!!!
最好能把代码写出来。
十二万分感谢!!!

解决方案 »

  1.   

    Private Sub cmdOk_Click()
        Dim strUserPass As String
        '判断用户是否已经输入用户名和密码
        golUsername = Trim(txtName.Text)
        strUserPass = Trim(txtPass.Text)
        If golUsername = "" Then
            MsgBox "请输入用户名", vbExclamation, "登录提示"
            txtName.SetFocus
            Exit Sub
        End If
        If strUserPass = "" Then
            MsgBox "请输入密码", vbExclamation, "登录提示"
            txtPass.SetFocus
            Exit Sub
        End If
        '判断用户登录信息是否正确
        sRs.Open "select * from TAB_User where 用户名='" & golUsername & "'", sCon, adOpenStatic, adLockOptimistic
        If sRs.EOF Then
            MsgBox "没有此用户", vbCritical, "登录错误"
            txtName.SelStart = 0
            txtName.SelLength = Len(txtName.Text)
            txtName.SetFocus
            sRs.Close
            Exit Sub
        End If
        sRs.Close
        sRs.Open "select * from TAB_User where 用户名='" & golUsername & "' and 用户密码='" & strUserPass & "'", sCon, adOpenStatic, adLockOptimistic
        If sRs.EOF Then
            MsgBox "密码错误", vbCritical, "登录错误"
            txtPass.SelStart = 0
            txtPass.SelLength = Len(txtPass.Text)
            txtPass.SetFocus
            sRs.Close
            Exit Sub
        End If
        sRs.Close
        ExecuteCommand "update TAB_user set 最近登录时间=#" & Now & "# where 用户名='" & golUsername & "'"
        MDIFormMain.Show
        Unload Me
    End Sub
      

  2.   

    你可以参考VB自带的登录对话框,选‘工程’-‘添加窗体’-选‘登录对话框’。
    这里面虽然没有涉及到数据库核对密码,但是登录审核做的很规范。
    一点提示:
    如果你的用户名是不重复的话,当点击确定按钮后,打开数据库用用户名做条件检索:
    rs.open "select dbpass where userid=" & trim(Text1.text)
    if not rs.eof then
       if rs("password")=trim(Text2.text) then 密码通过
    else
       '没有这个用户
    end if
      

  3.   

    to   pcwak(书剑狂生)  、czjw(寒雪)
    我试试看。谢谢
      

  4.   

    Public Function ExecuteSQL(sql As String) As ADODB.Recordset
    Dim cn As ADODB.Connection
    Dim rst As ADODB.Recordset
    Dim msg As String
    On Error GoTo executesql_error
    Set cn = New ADODB.Connection
    cn.Open "Provider=MSDASQL.1;Persist Security Info=False;Data Source=CY"
    Set rst = New ADODB.Recordset
    rst.Open Trim$(sql), cn, adOpenKeyset, adLockOptimistic
    Set ExecuteSQL = rst
    executesql_exit:
    Set rst = Nothing
    Set cn = Nothing
    Exit Function
    executesql_error:
    msg = "错误原因:" & Err.Description
    Resume executesql_exit
    End Function
    Private Sub frm_ok_Click()
    Dim cn As ADODB.Connection
    Dim rs As ADODB.Recordset
    Dim sql As StringIf DataCombo1.Text = "" Then
    MsgBox "拜托,名都不报就让你进门,我启不是很对不起观众?报上名来~!~", vbOKOnly + vbExclamation, "注意"
    DataCombo1.SetFocus
    Else
    sql = "select*from Cuser where id='" & DataCombo1.Text & "'"
    Set rs = ExecuteSQL(sql)
    If rs.EOF Then
    MsgBox "对不起,你好象是走错门了,也没听过您的大名啊?要不咱在试试~?", vbOKOnly + vbExclamation, "注意"
    DataCombo1.SetFocus
    DataCombo1.Text = ""
    Else
    If Trim(rs.Fields(1)) = txt_loadpw.Text Then
    If Trim(rs.Fields(2).Value) = 0 Then
    MDI_CYMIS.StatusBar1.Panels(3).Text = "您目前的身份为:一般用户,权限仅为浏览"
    With frm_umanagement
    .cmd_delete.Enabled = False
    .cmd_true.Enabled = False
    .Frame3.Enabled = False
    .Frame5.Enabled = False
    .cmd_cok.Enabled = False
    .Hide
    End With
    With MDI_CYMIS
       .Menu_nation(1).Enabled = False
       .Menu_whcd(6).Enabled = False
       .Menu_zc(5).Enabled = False
       .Menu_zglx(8).Enabled = False
       .Menu_zw(4).Enabled = False
       .Menu_zzmm(7).Enabled = False
       .Menu_gzlb.Enabled = False
       .Menu_adddata(1).Enabled = False
       .Menu_changedata(2).Enabled = False
       .Menu_deletedata(3).Enabled = False
       .Menu_regaindata(4).Enabled = False
       .Menu_kqadd.Enabled = False
       .Menu_kqcd.Enabled = False
       .Menu_gzjf.Enabled = False
       .Menu_gztz.Enabled = False
        End With
       With frm_main
       .Save.Enabled = False
       .cmd_reg_regain.Enabled = False
       .cmd_add.Enabled = False
       .cmd_cd.Enabled = False
       .cmd_regain.Enabled = False
       .Hide
       End With
       Else
    MDI_CYMIS.StatusBar1.Panels(3).Text = "您目前的身份为:系统管理员"
    End If
    MDI_CYMIS.Show
    Me.Hide
    DataCombo1.Text = ""
    txt_loadpw.Text = ""
    Else
    MsgBox "对不起,您门是找对了,但钥匙拿错了啊,快换一把试试~?~", vbOKOnly + vbExclamation, "注意"
    txt_loadpw.SetFocus
    txt_loadpw.Text = ""
    End If
    End If
    End If
    End Sub这是我的登陆代码,目前已经调试成功
      

  5.   

    Public Function check(error)
        
        Dim test As String
            Dim i As Integer
            Dim j As Integer
        test = "!@#$%^&*()-|\;:'<>/?"
        
                
       Rem 循环从内到外,原理利用字符形式比较
        For i = 1 To Len(error)
            For j = 1 To Len(test)
                If Mid(error, i, 1) = Mid(test, j, 1) Then      '表示检测到错误字符
                    
                    check = False
                    Exit Function
                       
                    End If
                                 '若检测到错误,刚提前退出函数,否则的话继续执行下一语句
                        Next j
            Next i
                check = True
            '若执行完所有循环,都没有退出,表示没有检测到非法之符
    End Function
    private sub login_click()
    name1trim(text1.text)
    pass1trim(text2.text)
    if name1"" then
           msgbox "对不起登录用户名不能为空",vbokonly+vbinformation,"登录信息 有误!"
               text1.setfoucs
              exit sub
    end if
    if pass1="" then
            msgbox "对不起请输入你的登录密码!",vbokonly+vbinformation,"登录有误!"
              text2.setfoucs
             exit sub
    end if
         if check(name1) and check(pass1) then
                rem 下面这问分最好用一个单独的函数比较合适
            set cn=createobject("adodb.connection")
               cn.open "provider=microsoft.jet.oledb.4.0;data source="& app.path+"\管理系统"+"\system.mdb"
            set fs=createobject("adodb.recordset")
               sql="select * from users where 用户名='"& name1& "' and 密码='"& pass1 & "'"
                      fs.open sql,cn,adopenstatic,adlockreadonly
                 if fs.eof then  
                        msgbox "对不起你的登录有误!",vbokonly+vbinformation,"系统消息"
                            text1.setfocus
                            text1.text=""
                    exit sub
                end if        '表示用户是合法用户
                    set cn=nothing
                     unload me
                   main.show
    else 
            msgbox "对不起你的输入信息中含有非法之符!",vbokonly+vbexamtion,"系统警告!"
                   text1.text="":text1.setfoucs:exit sub
    end if
      

  6.   

    Private Sub Command1_Click()
       Dim bh As String
       Dim SQLstr As String
       Dim msgstring As String
       Dim rs As New ADODB.Recordset
       
       If Text1(0).Text = "" Or Text1(1).Text = "" Then
          MsgBox "必须输入操作员编号和口令!!!", 48, "错误"
          Text1(0).SetFocus
       Else
          SQLstr = "select * from userID where operatorNo='" & Trim(Text1(0).Text) & "'"
          Set rs = ExecuteSQL(SQLstr, msgstring)
          If rs.EOF = True Then
             MsgBox "操作员编码输入错误!!!", 48, "错误"
             Text1(0).Text = ""
             Text1(1).Text = ""
             Text1(0).SetFocus
          Else
             If Trim(rs!Password) = Trim(Text1(1).Text) Then
                bh = Trim(Text1(0).Text)
                Load MDIBookMIs
                MDIBookMIs.Show
                Unload login
                rs.Close
                Set rs = Nothing
             Else
                MsgBox "密码输入错误!!!", 48, "错误"
                Text1(1).Text = ""
                Text1(1).SetFocus
             End If
          End If
       End If
       
    End Sub
      

  7.   

    Option ExplicitPublic OK As Boolean
    Dim miCount As Integer
    Private Sub cmdCancel_Click()
        '设置全局变量为 false
        '不提示失败的登录
        OK = False
        Me.Hide
      
    End SubPrivate Sub cmdOK_Click()
       Dim txtSQL As String
       Dim mrc As ADODB.Recordset
       Dim msgtext As String
       UserName = ""
    '判断输入用户名是否为空
    If Trim(Combo1.Text = "") Then
       MsgBox "没有这个用户,请重新输入用户名!", vbOKOnly + vbExclamation, "警告"
       Combo1.SetFocus
       Else
       
    '查询指定用户名记录
    txtSQL = "select * from 系统用户 where 用户名=""&Combo1.Text&"""
    Set mrc = ExecuteSQL(txtSQL, msgtext)
     '判断是否存在该用户
    If mrc.EOF = True Then
       MsgBox "没有这个用户,请重新输入用户名!", vbOKOnly + vbExclamation, "警告"
       Combo1.SetFocus
       Else
       '判断输入密码是否正确
       If Trim(mrc.Fields(1)) = Trim(txtPassword.Text) Then
       OK = True
       mrc.Close
       Me.Hide
       UserName = Trim(Combo1.Text)
          Else
          MsgBox "输入密码不正确,请重新输入!", vbOKOnly + vbExclamation, "警告"
          txtPassword.SetFocus
          txtPassword = ""
          End If
          End If
        End If
    '记载输入密码次数
    miCount = miCount + 1
    If miCount = 3 Then
    Me.Hide
    End If
    Exit Sub
    End SubPrivate Sub Form_Load()
    OK = False
    miCount = 0
    End Sub