注册 登录
编程论坛 VB6论坛

麻烦大神进来指导一下

cfso6202 发布于 2018-03-18 00:31, 3305 次点击
程序代码:
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运行没问题,一直提示用户不存在,难道说是我数据库问题?
10 回复
#2
cfso62022018-03-18 00:32
模块代码:
程序代码:
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
#3
cfso62022018-03-18 00:35
自己没头没脑的跟着网上的资料做出来个登录窗口,是连接ACCESS数据库的。现在遇到问题了,实在想不出问题在哪了!麻烦各位大神进来指导一下,给个思路
#4
wds12018-03-18 10:39
没有查询到记录,你可以试着把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 & " '"
#5
cfso62022018-03-18 10:50
回复 4楼 wds1
好的,谢谢!我这就去试试
#6
Artless2018-03-18 15:24

“ ' and…"应该是"' and…"
#7
风吹过b2018-03-19 10:04
        sql = "select 员工号,密码,姓名,权限 from 管理组 where 员工号='" & Trim(TextName.Text) & " ' and 密码= '" & Trim(TextPsw.Text) & " 'and 姓名= '" & name & " ' and 权限= '" & Class & " '"   

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

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


#8
cfso62022018-03-19 11:38
回复 7楼 风吹过b
我把密码之后的查询条件去掉之后是可以正常运行的,只不过我想通过登录窗体把姓名定义到全局变量里面去,然后在其他窗体显示出来
#9
风吹过b2018-03-20 10:40
姓名,应该保存在 管理组 里的。
查到的记录,密码,也过了,那么就继续读 姓名这个字段,再把内容放到 全局变量 里。
#10
ZHRXJR2018-03-20 18:02
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 & " '"
#11
cfso62022018-03-20 22:34
谢谢各位版主的指导,问题已经明确,并且解决清楚了!感谢指导!!!!
1