标题:麻烦大神进来指导一下
只看楼主
cfso6202
Rank: 1
等 级:新手上路
帖 子:8
专家分:0
注 册:2018-3-17
结帖率:50%
已结贴  问题点数:20 回复次数:10 
麻烦大神进来指导一下
程序代码:
Private Sub CmdLogin_Click()
Static n As Integer
If n >= 3 Then
    MsgBox "输入用户名或密码次数大于3次,不允许继续登陆"
    End
End If
Set conn = New ADODB.Connection
Call SJK(conn)
Dim sql As String
Dim rs_login As New ADODB.Recordset
        If Trim(TextName.Text) = "" Then
        MsgBox "用户名不能为空,请重新输入!", vbOKOnly + vbExclamation, "错误"
        TextName.SetFocus
     Else
        sql = "select 员工号,密码,姓名,权限 from 管理组 where 员工号='" & Trim(TextName.Text) & " ' and 密码= '" & Trim(TextPsw.Text) & " 'and 姓名= '" & name & " ' and 权限= '" & Class & " '"   
        rs_login.Open sql, conn, adOpenKeyset, adLockPessimistic
        uname = name    
        Pclass = Class   
     If rs_login.EOF = True Then
        MsgBox "用户名或密码不存在,请重新输入!", vbOKOnly + vbExclamation, "错误"
        TextName = ""
        TextName.SetFocus
     Else '检测密码正确与否
     If Trim(rs_login.Fields("密码")) = Trim(TextPsw) Then
        rs_login.Close
        Unload Me
        FormHome.Show
     Else
        n = n + 1
        MsgBox "" & n & "次用户名或密码错误,请重新输入!", vbOKOnly + vbExclamation, "错误"
        TextPsw.SetFocus
      End If
     End If
    End If
End Sub




F5运行没问题,一直提示用户不存在,难道说是我数据库问题?
搜索更多相关主题的帖子: If 用户名 密码 End Trim 
2018-03-18 00:31
cfso6202
Rank: 1
等 级:新手上路
帖 子:8
专家分:0
注 册:2018-3-17
得分:0 
模块代码:
程序代码:
Public conn As New ADODB.Connection, rs As New ADODB.Recordset
Public uname As String, Pclass As String


Public Sub SJK(conn)
   conn.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source= C:\Users\鹏\Desktop\管理系统\Database1.mdb;Persist Security Info=False"
   conn.Open
End Sub
2018-03-18 00:32
cfso6202
Rank: 1
等 级:新手上路
帖 子:8
专家分:0
注 册:2018-3-17
得分:0 
自己没头没脑的跟着网上的资料做出来个登录窗口,是连接ACCESS数据库的。现在遇到问题了,实在想不出问题在哪了!麻烦各位大神进来指导一下,给个思路
2018-03-18 00:35
wds1
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:贵宾
威 望:49
帖 子:393
专家分:2025
注 册:2016-3-10
得分:5 
没有查询到记录,你可以试着把sql逐个字段修改看看是那个字段问题。

原来的:
sql = "select 员工号,密码,姓名,权限 from 管理组 where 员工号='" & Trim(TextName.Text) & " ' and 密码= '" & Trim(TextPsw.Text) & " 'and 姓名= '" & name & " ' and 权限= '" & Class & " '"
修改类似下面4条的单挑形式,一条一条测试,看是那个字段问题【不是4条都写,每次只写一个】:
sql = "select 员工号,密码,姓名,权限 from 管理组 where 员工号='" & Trim(TextName.Text) & "
sql = "select 员工号,密码,姓名,权限 from 管理组 where  密码= '" & Trim(TextPsw.Text) & "
sql = "select 员工号,密码,姓名,权限 from 管理组 where  姓名= '" & name & "
sql = "select 员工号,密码,姓名,权限 from 管理组 where 权限= '" & Class & " '"
2018-03-18 10:39
cfso6202
Rank: 1
等 级:新手上路
帖 子:8
专家分:0
注 册:2018-3-17
得分:0 
回复 4楼 wds1
好的,谢谢!我这就去试试
2018-03-18 10:50
Artless
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
等 级:贵宾
威 望:103
帖 子:4211
专家分:28888
注 册:2009-4-8
得分:5 

“ ' and…"应该是"' and…"

无知
2018-03-18 15:24
风吹过b
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:364
帖 子:4912
专家分:29900
注 册:2008-10-15
得分:5 
        sql = "select 员工号,密码,姓名,权限 from 管理组 where 员工号='" & Trim(TextName.Text) & " ' and 密码= '" & Trim(TextPsw.Text) & " 'and 姓名= '" & name & " ' and 权限= '" & Class & " '"   

首先, and 的前面 的 单引号 是用来连接 字符串的, 在单引号前面不能用空格。这个是 6楼的提到的。
其次,如果 你 SQL 查询的条件是 4个条件均完全相同,才能查到记录,当有一个信息不符合,就没有记录。
      你现在 SQL 命令有误,所以每次都是用户名不存在。

修改建议:
1、去掉 单引号前的空格。注意是 AND 前面的 单引号。同理,等号后面的单引号后面也不能有空格。
2、查询时,不要同时查询这么多的条件。如只使用用户名去查询,
未查到,则用户不存在,
查询到,再比较查询出来的密码,之类的。 提示密码错误还是什么。



授人于鱼,不如授人于渔
早已停用QQ了
2018-03-19 10:04
cfso6202
Rank: 1
等 级:新手上路
帖 子:8
专家分:0
注 册:2018-3-17
得分:0 
回复 7楼 风吹过b
我把密码之后的查询条件去掉之后是可以正常运行的,只不过我想通过登录窗体把姓名定义到全局变量里面去,然后在其他窗体显示出来
2018-03-19 11:38
风吹过b
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:364
帖 子:4912
专家分:29900
注 册:2008-10-15
得分:0 
姓名,应该保存在 管理组 里的。
查到的记录,密码,也过了,那么就继续读 姓名这个字段,再把内容放到 全局变量 里。

授人于鱼,不如授人于渔
早已停用QQ了
2018-03-20 10:40
ZHRXJR
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:125
帖 子:1034
专家分:5519
注 册:2016-5-10
得分:5 
sql = "select 员工号,密码,姓名,权限 from 管理组 where 员工号='" & Trim(TextName.Text) & " ' and 密码= '" & Trim(TextPsw.Text) & " 'and 姓名= '" & Name & " ' and 权限= '" & Class & " '"
几个问题:
1、没有检测  TextPsw.Text 有没有数据;
2、变量 Name 与变量 Class 看不到在那里赋值了,如果没有,就有问题;
3、下面你在检测密码,这里再放置 and 密码= '" & Trim(TextPsw.Text) & " ' 是不是多此一举?
4、如果员工号是唯一的,这个sql字符串语句将没有那么啰嗦,但变量 Class 必须有值,而且与记录中的值一致:
sql = "select 员工号,权限 from 管理组 where 员工号='" & Trim(TextName.Text) & " ' and 权限= '" & Class & " '"

请不要选我!!!
2018-03-20 18:02



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-485365-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.014461 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved