设为首页收藏本站Access中国

Office中国论坛/Access中国论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

12下一页
返回列表 发新帖
查看: 2128|回复: 13
打印 上一主题 下一主题

[窗体] 高手帮下忙啊?急急急

[复制链接]
跳转到指定楼层
1#
发表于 2011-6-4 10:19:36 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
我做了个登录系统,设置了4个用户名和密码。但是只有第一个可以登录成功,其它3个不行,不知道为什么。急啊,不用怀疑,我很菜。Private Sub Command4_Click()
Dim rst As New ADODB.Recordset
Dim strsql As String
strsql = "select 用户名,密码 from 用户名"""
rst.Open strsql, CurrentProject.Connection, adOpenKeyset, adLockOptimistic
If Trim(Me.Combo13) = Trim(rst.Fields(0)) And Trim(Me.Text2) = Trim(rst.Fields(1)) Then
    Dim stDocName As String
    Dim stLinkCriteria As String

    stDocName = ChrW(20999) & ChrW(25442) & ChrW(-26782) & ChrW(26495)
    DoCmd.OpenForm stDocName, , , stLinkCriteria

    Else
    MsgBox "登陆失败,请重新登陆"
    Me.Combo13.SetFocus
End If
End Sub
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 分享淘帖 订阅订阅
2#
 楼主| 发表于 2011-6-4 10:20:11 | 只看该作者
好心 人看下是不是哪儿写错了,万分感谢
3#
发表于 2011-6-4 10:46:33 | 只看该作者
这个写法只读取第一条记录进行比对,当然也只能有一个人通过

strsql = "select 用户名,密码 from 用户名 where 用户名='"& 用户名控件 &"' and 密码 ='"& 密码控件 &"'

rst.Open strsql, CurrentProject.Connection, adOpenKeyset, adLockOptimistic

if rs.RecordCount=1 then
'通过
else
'错误
end if
4#
发表于 2011-6-4 11:59:09 | 只看该作者
应该循环读取用户表,进行用户名和相应密码的验证,形式如下:
rs.movefirst
for i=0 to rs.RecordCount -1
if   条件为真 then
执行表达式
exit sub'退出程序
else
MsgBox Err.Description'提示
endif
rs.movenext
next
5#
 楼主| 发表于 2011-6-4 12:23:53 | 只看该作者
万分感谢,虽然我还是没有弄出来。
6#
发表于 2011-6-4 12:58:41 | 只看该作者
将楼主的代码修改了,如下:
Private Sub Command4_Click()

Dim rst As New ADODB.Recordset
Dim strsql As String
strsql = "select 用户名,密码 from 用户名"""
rst.Open strsql, CurrentProject.Connection, adOpenKeyset, adLockOptimistic

Dim i As Long ''---------
rst.MoveFirst ''---------
For i = 0 To rst.RecordCount - 1 ''---------
    If Trim(Me.Combo13) = Trim(rst.Fields(0)) And Trim(Me.Text2) = Trim(rst.Fields(1)) Then
        Dim stDocName As String
        Dim stLinkCriteria As String
   
        stDocName = ChrW(20999) & ChrW(25442) & ChrW(-26782) & ChrW(26495)
        DoCmd.OpenForm stDocName, , , stLinkCriteria
        Exit Sub ''---------
    Else
        MsgBox "登陆失败,请重新登陆"
        Me.Combo13.SetFocus
    End If
rst.MoveNext
Next ''---------
rst.Close ''---------
Set rst = Nothing ''---------
End Sub
''---------表示添加的代码行
7#
发表于 2011-6-4 14:38:36 | 只看该作者
循环无疑不是好方法,只需对比一下数据库是否有记录即可
8#
 楼主| 发表于 2011-6-4 16:35:24 | 只看该作者
万分感激啊
9#
 楼主| 发表于 2011-6-4 16:38:28 | 只看该作者
呵呵,我改了,遇到新问题了。第一个用户名成功登陆。第二用户名登陆,显示登陆失败,请重新登陆,点击又成功登陆了。第三个用户名登陆显示两次登陆失败,请重新登陆,点击两次后又成功登陆。第四个用户名登陆显示三次登陆失败,请重新登陆,点击两次后又成功登陆。这又是杂回事哦。
10#
发表于 2011-6-4 19:02:18 | 只看该作者
Grant 发表于 2011-6-4 14:38
循环无疑不是好方法,只需对比一下数据库是否有记录即可

我个人不建议用循环,直接把控件名称作为Where条件来打开记录集会更好些。LZ不妨调试下一下代码:
Dim rst As New ADODB.Recordset
Dim strsql As String
strsql = "select 用户名,密码 from 用户名 where 用户名='" & Trim(Me.Combo13) &"' and 密码='" & Trim(Me.Text2) &"'"
rst.Open strsql, CurrentProject.Connection, adOpenKeyset, adLockOptimistic
if Not rst.EOF Then
    Dim stDocName As String
    Dim stLinkCriteria As String
    stDocName = ChrW(20999) & ChrW(25442) & ChrW(-26782) & ChrW(26495)
    DoCmd.OpenForm stDocName, , , stLinkCriteria
    Else
    MsgBox "登陆失败,请重新登陆"
    Me.Combo13.SetFocus
End If
End Sub
您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|站长邮箱|小黑屋|手机版|Office中国/Access中国 ( 粤ICP备10043721号-1 )  

GMT+8, 2024-5-21 12:18 , Processed in 0.107142 second(s), 33 queries .

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表