我做了一个系统登陆的界面,执行时报错信息为“至少有一个参数未指定值”,请大家帮我看看是什么参数!
Option Explicit
Const MaxLogTimes As Integer = 3 '定义允许用户验证登录信息的最多次数
----------------------------------------------------------------
Private Sub cmdCancel_Click()
    Dim intResult As Integer
    '请求用户确认是否真的退出系统登录
    intResult = MsgBox("你选择了退出系统登录,退出将不能启动管理系统!" & vbCrLf _
              & "是否真的退出?", vbYesNo, "登录验证")
    If intResult = vbYes Then End           '根据用户选择结束应用程序
End SubPrivate Function Check_PassWord(ByVal UserName As String, ByVal Password As String) As Byte
    On Error GoTo gpError
    Dim objCn As New Connection, objRs As New Recordset, strCn As String, strSQL As String
    
    '建立数据库连接
     objCn.ConnectionString = "Provider=Microsoft.Jet.OLEDB.3.51;" & _
                                      "Data Source=" & App.Path & "\数据库\实例1.mdb"
     objCn.Open
        
    '执行查询命令,获得用户登录口令
    strSQL = "SELECT 口令 FROM 系统用户 WHERE 用户名='" & UserName & "'"
    Set objRs.ActiveConnection = objCn
    objRs.Open (strSQL)
    
    '判断有无查询结果
    If objRs.EOF Then
        Check_PassWord = 0      '没有查询结果,表示该用户为非法用户
    Else
        '检查口令是否正确
        If Password <> Trim(objRs.Fields("口令").Value) Then
            Check_PassWord = 1          '口令不正确
        Else
            Check_PassWord = 2         '口令正确
        End If
    End If
    
    '关闭数据库连接,释放对象
    objCn.Close
    Set objRs = Nothing
    Set objCn = Nothing
    Exit Function
gpError:
MsgBox Err.Description
    Check_PassWord = 255                '验证无法正常完成,返回错误代码
    Set objRs = Nothing
    Set objCn = Nothing
End Function
------------------------------------------------------------------------------
Private Sub cmdOk_Click()
    Static intLogTimes As Integer       '静态常量intLogTimes用于保存用户请求验证的次数
    Dim intChecked As Integer, strName As String, strPassword As String
    intLogTimes = intLogTimes + 1       '计算登录次数
    If intLogTimes > MaxLogTimes Then
        '超过允许的登录次数,显示提示信息
        MsgBox "你已经超过允许的登录验证次数!" & vbCr & "应用程序将结束!", vbCritical, "登录验证"
        End                                         '结束应用程序
    Else                                            '进一步验证登录信息的合法性
        strName = Trim(txtUserName.Text)            '获得用户名
        strPassword = Trim(txtPassword.Text)        '获得口令
        
        '检验用户名和口令的合法性,并根据检验返回值执行相应的操作
        Select Case Check_PassWord(strName, strPassword)
            Case 0                                  '用户不是系统用户
                MsgBox "<" & strName & ">不是系统用户,请检查用户名输入是否正确!", _
                       vbCritical, "登录验证"
                txtUserName.SetFocus
                txtUserName.SelStart = 0
                txtUserName.SelLength = Len(txtUserName)
            Case 1                                  '口令错误
                MsgBox "口令错误,请重新输入!", vbCritical, "登录验证"
                txtPassword = ""
                txtPassword.SetFocus
            Case 2                                  '口令正确
                Unload Me                           '卸载登录窗体
                MsgBox "登录成功,将启动系统程序!", vbInformation, "登录验证"
                
                '通常在此放置显示系统主窗体的语句,例如
                'frmMain.Show
            Case Else
                '登录验证未正常完成
                MsgBox "登录验证未正常完成!请重新运行登录程序," & vbCrLf _
                       & "如果仍不能登录,请报告系统管理员!", vbCritical, "登录验证"
        End Select
    End If
End Sub

解决方案 »

  1.   

    具体错在哪一行?
    将Microsoft.Jet.OLEDB.3.51改成Microsoft.Jet.OLEDB.4.0试试
      

  2.   

    把Option Explicit取消了再试试!
      

  3.   

    Unload Me 以后再执行msgbox?
      

  4.   

    strSQL = "SELECT 口令 FROM 系统用户 WHERE 用户名='" & UserName & "'"字段名是否正确?
      

  5.   

    以上各位大侠说的方面我都试过,还是不行,我分过程执行时,发现这个错是报在Private Sub cmdOk_Click()上,请大家帮我看看!!!!!!!!!!!
      

  6.   

    Static intLogTimes As Integer       
    做一个全局变量吧
      

  7.   

    要不直接用也可以的
    intLogTimes=0.
    .
    .
    intLogTimes=intLogTimes+1
      

  8.   

    你的查询语句也不科学strSQL = "SELECT count(*) FROM 系统用户 WHERE 用户名='" & UserName & "' and 口令='" & password & "'"
    这样多好
      

  9.   

    Dim objCn As New Connection, objRs As New Recordset 改成 Dim objCn As New ADODB.Connection, objRs As New ADODB.Recordset
      

  10.   

    chuting(机器人):
        你的查询语句才不科学,安全性差。当任何人在口令中键入 ' or ''=' 时,你的查询就是:
    SELECT count(*) FROM 系统用户 WHERE 用户名='一个用户名' and 口令='' or ''=''结果会如何?