设为首页收藏本站Access中国

Office中国论坛/Access中国论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

12下一页
返回列表 发新帖
查看: 2633|回复: 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空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 分享淘帖 订阅订阅
14#
发表于 2011-6-6 22:33:21 | 只看该作者
Dim rst As New ADODB.Recordset
Dim strsql As String
strsql = "select 用户名,密码 from 用户名"""  条件在哪里?后面应该加where
' where 用户名='"&控件名 &"' and 密码='"& 控件名 &"'
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


13#
发表于 2011-6-6 21:57:13 | 只看该作者
都可以,不过比较赞成10楼,易懂,可取。不会出错。楼主的问题是没搞清楚如何把账号密码查询匹配到数据库中的对应的数据中去。其实这问题不难,只不过楼主没有化时间去思考。
12#
发表于 2011-6-5 12:10:16 | 只看该作者
建议用条件查询
如果要安全性
建议先匹配用户名
如果存在再验证密码
这样对于爆破将是噩梦,当然还可以加个验证码,再整个MD5加密
11#
 楼主| 发表于 2011-6-4 19:13:12 | 只看该作者
回复 caoguangyao 的帖子

万分感激啊
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
9#
 楼主| 发表于 2011-6-4 16:38:28 | 只看该作者
呵呵,我改了,遇到新问题了。第一个用户名成功登陆。第二用户名登陆,显示登陆失败,请重新登陆,点击又成功登陆了。第三个用户名登陆显示两次登陆失败,请重新登陆,点击两次后又成功登陆。第四个用户名登陆显示三次登陆失败,请重新登陆,点击两次后又成功登陆。这又是杂回事哦。
8#
 楼主| 发表于 2011-6-4 16:35:24 | 只看该作者
万分感激啊
7#
发表于 2011-6-4 14:38:36 | 只看该作者
循环无疑不是好方法,只需对比一下数据库是否有记录即可
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
''---------表示添加的代码行
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2025-5-12 18:05 , Processed in 0.103709 second(s), 34 queries .

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

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