我做了一个系统登陆的界面,执行时报错信息为“至少有一个参数未指定值”,请大家帮我看看是什么参数!
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
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
解决方案 »
- vb中的溢出问题
- 怎样将EXCEL多个表中的部分列的内容读入ACCESS (VB编程)
- 各位达人们,VB6.0+SQL+水晶报表9.0,为什么动态连接后无法格式化字段?
- 在WebBrowser编程中,我通过htmlText保存的网页代码,与用IE查看“源文件”得到的网页内的标记内容大不相同,谁有办法让得到的htmlText与
- 如何添加INET控件
- VB中从一个新的窗口怎么调用其他窗口里面的数据发送过程
- 如何在vb中通过代码实现在SQLServer中新建数据库和在此数据库中新建数据表呢?
- 怎样把一个数据库里的所有的用户表的结构打印出来?
- datagridview怎么让列不显示...,当数据长度超过列宽的时候,能显示多少就显示多少
- 在线等候,立刻加分,关于COPY操作
- ListView中如何改变标题栏,网格的颜色
- 模块中引用app.path?
将Microsoft.Jet.OLEDB.3.51改成Microsoft.Jet.OLEDB.4.0试试
做一个全局变量吧
intLogTimes=0.
.
.
intLogTimes=intLogTimes+1
这样多好
你的查询语句才不科学,安全性差。当任何人在口令中键入 ' or ''=' 时,你的查询就是:
SELECT count(*) FROM 系统用户 WHERE 用户名='一个用户名' and 口令='' or ''=''结果会如何?