Access运行代码说"类型不匹配",求解
OnErrorGoToerr_cmdlogin_clickDimrsAsNewADODB.RecordsetDimstrAsStringDimnumAsIntegerDi...
On Error GoTo err_cmdlogin_click
Dim rs As New ADODB.Recordset
Dim str As String
Dim num As Integer
Dim loginflag As Boolean
str = "select count(系统密码.ID)from 系统密码 where 系统密码.ID=""&Me.用户名称str=str&""and 系统密码.用户密码=""&Me.用户密码 &" '"
Set rs = getrs(str)
num = rs.RecordCount
If IsNull(Me.用户名称) Then
MsgBox ("请输入用户名称")
ElseIf IsNull(Me.用户密码) Then
MsgBox ("请输入用户密码")
ElseIf num <> 1 Then
MsgBox ("没有这个用户,或密码错误")
Else
Me.Visible = False
loginflag = True
DoCmd.OpenForm "切换面板"
End If
exit_cmdlogin_click
End Sub
最前面还有一句:Private Sub cmdEnter_Click() 展开
Dim rs As New ADODB.Recordset
Dim str As String
Dim num As Integer
Dim loginflag As Boolean
str = "select count(系统密码.ID)from 系统密码 where 系统密码.ID=""&Me.用户名称str=str&""and 系统密码.用户密码=""&Me.用户密码 &" '"
Set rs = getrs(str)
num = rs.RecordCount
If IsNull(Me.用户名称) Then
MsgBox ("请输入用户名称")
ElseIf IsNull(Me.用户密码) Then
MsgBox ("请输入用户密码")
ElseIf num <> 1 Then
MsgBox ("没有这个用户,或密码错误")
Else
Me.Visible = False
loginflag = True
DoCmd.OpenForm "切换面板"
End If
exit_cmdlogin_click
End Sub
最前面还有一句:Private Sub cmdEnter_Click() 展开
展开全部
你的代码也太乱了!存在着很多错误。。比如:
1、Set rs = getrs(str) 这里的 getrs 是什么?是你自定义的过程吗?
2、str = "select …… Me.用户密码 &"'" 像你这样的查询语句还真没见过。。
3、即使执行 Set rs = getrs(str) 时不提示“类型不匹配”的错误,按正常通过算,
那它下面的检查用户名称和用户密码的语句也是毫无意义!
因为,如果用户名称或用户密码有一个为空,查询语句就会出错,代码直接转到最后了。
4、代码第一行错误后跳转的标签是 err_cmdlogin_click ,
而代码的结尾却成了exit_cmdlogin_click 。这也太马虎了吧?
总之,奉劝楼主,做学问要学会严谨。请以后仔细点、认真点哦。。
呵呵,貌似在发牢骚(其实对楼主也应该有所帮助吧),楼主莫怪呀!
言归正传,我把你的代码全部改了,仅作参考。。
Private Sub cmdEnter_Click()
On Error GoTo err_cmdlogin_click
Dim str As String
Dim loginflag As Boolean
' 检查用户名称和用户密码是否已经输入
If IsNull(Me.用户名称) Or IsNull(Me.用户密码) Then
MsgBox "【用户名称】或【用户密码】不能为空!请输入... ", 4096 + 48 + 0, "波涛工作室"
Exit Sub
End If
' 为变量str赋值
str = DLookup("[用户密码]", "系统密码", "[ID]='" & Me.用户名称 & "'")
' 验证用户名称是否存在
If IsNull(str) Then
MsgBox "您输入的【用户名称】不存在!请重输... ", 4096 + 48 + 0, "波涛工作室"
' 验证用户密码是否正确
ElseIf Nz(Me.用户密码) <> Nz(str) Then
MsgBox "您输入的【用户密码】不正确!请重输... ", 4096 + 48 + 0, "波涛工作室"
' 登录系统
Else
' 隐藏登录窗口。以便为程序操作分配权限
Me.Visible = False
loginflag = True
' 打开窗体
DoCmd.OpenForm "切换面板"
End If
'这里一定要结束过程,否则会继续执行下面代码(弹出一个空白的提示框)
Exit Sub
'错误后给出提示
err_cmdlogin_click:
MsgBox Err.Description
End Sub
1、Set rs = getrs(str) 这里的 getrs 是什么?是你自定义的过程吗?
2、str = "select …… Me.用户密码 &"'" 像你这样的查询语句还真没见过。。
3、即使执行 Set rs = getrs(str) 时不提示“类型不匹配”的错误,按正常通过算,
那它下面的检查用户名称和用户密码的语句也是毫无意义!
因为,如果用户名称或用户密码有一个为空,查询语句就会出错,代码直接转到最后了。
4、代码第一行错误后跳转的标签是 err_cmdlogin_click ,
而代码的结尾却成了exit_cmdlogin_click 。这也太马虎了吧?
总之,奉劝楼主,做学问要学会严谨。请以后仔细点、认真点哦。。
呵呵,貌似在发牢骚(其实对楼主也应该有所帮助吧),楼主莫怪呀!
言归正传,我把你的代码全部改了,仅作参考。。
Private Sub cmdEnter_Click()
On Error GoTo err_cmdlogin_click
Dim str As String
Dim loginflag As Boolean
' 检查用户名称和用户密码是否已经输入
If IsNull(Me.用户名称) Or IsNull(Me.用户密码) Then
MsgBox "【用户名称】或【用户密码】不能为空!请输入... ", 4096 + 48 + 0, "波涛工作室"
Exit Sub
End If
' 为变量str赋值
str = DLookup("[用户密码]", "系统密码", "[ID]='" & Me.用户名称 & "'")
' 验证用户名称是否存在
If IsNull(str) Then
MsgBox "您输入的【用户名称】不存在!请重输... ", 4096 + 48 + 0, "波涛工作室"
' 验证用户密码是否正确
ElseIf Nz(Me.用户密码) <> Nz(str) Then
MsgBox "您输入的【用户密码】不正确!请重输... ", 4096 + 48 + 0, "波涛工作室"
' 登录系统
Else
' 隐藏登录窗口。以便为程序操作分配权限
Me.Visible = False
loginflag = True
' 打开窗体
DoCmd.OpenForm "切换面板"
End If
'这里一定要结束过程,否则会继续执行下面代码(弹出一个空白的提示框)
Exit Sub
'错误后给出提示
err_cmdlogin_click:
MsgBox Err.Description
End Sub
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询