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()
展开
 我来答
敏锐还宁静丶行家0
2013-02-24 · TA获得超过6870个赞
知道大有可为答主
回答量:3502
采纳率:0%
帮助的人:1769万
展开全部
你的代码也太乱了!存在着很多错误。。比如:
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
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式