| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 3508 人关注过本帖, 1 人收藏
标题:帮我看看这段代码问题出在哪,一个登录窗体
只看楼主 加入收藏
wjq09
Rank: 2
等 级:论坛游民
帖 子:69
专家分:20
注 册:2011-1-2
结帖率:60%
收藏(1)
已结贴  问题点数:20 回复次数:21 
帮我看看这段代码问题出在哪,一个登录窗体
照书上打的,数据库也连接成功,是Access数据库
程序代码:
Private Sub cmdOK_Click()
    Adodc1.RecordSource = "select * from User where UserName='" + txtUserName.Text + "'"
    Adodc1.Refresh
    If Adodc1.Recordset.RecordCount > 0 Then
    If txtPassword = Adodc1.Recordset.Fields("Password") Then
        '将代码放在这里传递
        '成功到 calling 函数
        '设置全局变量时最容易的
        LoginSucceeded = True
        MsgBox "登录成功"
        
        Me.Hide
    Else
        MsgBox "无效的密码,请重试!", , "登录"
        txtPassword.SetFocus
        SendKeys "{Home}+{End}"
    End If
    Else
        MsgBox "无此用户"
    End If
End Sub

图片附件: 游客没有浏览图片的权限,请 登录注册
图片附件: 游客没有浏览图片的权限,请 登录注册
搜索更多相关主题的帖子: 数据库 color 
2016-10-28 08:52
xzlxzlxzl
Rank: 15Rank: 15Rank: 15Rank: 15Rank: 15
来 自:湖北
等 级:贵宾
威 望:125
帖 子:1091
专家分:5825
注 册:2014-5-3
收藏
得分:4 
好像是User必须改成[User]。
在access sql语句里,User是关键字
2016-10-28 10:21
风吹过b
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:364
帖 子:4947
专家分:30084
注 册:2008-10-15
收藏
得分:4 
同意二楼的,
凡与关键字相同的表名、字段名,通通用 [] 括起来。

授人于鱼,不如授人于渔
早已停用QQ了
2016-10-28 11:01
xiangyue0510
Rank: 14Rank: 14Rank: 14Rank: 14
等 级:贵宾
威 望:86
帖 子:941
专家分:5244
注 册:2015-8-10
收藏
得分:4 
同意,事实上我现在编写的代码基本都用[]括起来了。
2016-10-28 13:54
wjq09
Rank: 2
等 级:论坛游民
帖 子:69
专家分:20
注 册:2011-1-2
收藏
得分:0 
回复 2楼 xzlxzlxzl
谢谢楼上几位,我把User和UserName括起来就正常了,但还有个问题VB调试运行取消后自动切换到搜狗输入法,怎么让它不切换
2016-10-31 10:19
初始元灵
Rank: 2
等 级:论坛游民
帖 子:72
专家分:46
注 册:2016-10-10
收藏
得分:4 
默认输入法是搜狗吧,修改成美式键盘。

三清之始
2016-10-31 10:53
wjq09
Rank: 2
等 级:论坛游民
帖 子:69
专家分:20
注 册:2011-1-2
收藏
得分:0 
回复 3楼 风吹过b
谢谢各位,我现在不想用ADO控件改用ADO对象操作,代码改成了这样,能正常运行但运行结果不对了,弹出“无此用户”,之前用ADO控件时运行结果是正常的,请各位再帮忙看看代码问题出在哪
程序代码:
Private Sub cmdOK_Click()
    Dim adoRs As New ADODB.Recordset
    adoRs.ActiveConnection = adoCon
    adoRs.Open "select * from [User] where [UserName]='" + txtUserName.Text + "'"
    If adoRs.RecordCount > 0 Then
    If txtPassword = adoRs.Fields("Password") Then
        '将代码放在这里传递
        '成功到 calling 函数
        '设置全局变量时最容易的
        LoginSucceeded = True
        MsgBox "登录成功"
        Me.Hide
        MDIFrmMain.Show
    Else
        MsgBox "无效的密码,请重试!", , "登录"
        txtPassword.SetFocus
        SendKeys "{Home}+{End}"
    End If
    Else
        MsgBox "无此用户"
    End If
End Sub
图片附件: 游客没有浏览图片的权限,请 登录注册


[此贴子已经被作者于2016-10-31 15:11编辑过]

2016-10-31 14:45
ZHRXJR
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:125
帖 子:1034
专家分:5519
注 册:2016-5-10
收藏
得分:4 
1、说明你的数据库中的 [User] 数据表中的 [UserName] 字段没有你在 txtUserName.Text 控件中输入的记录。
这时 adoRs.RecordCount <= 0 了。
2、如果你在 txtUserName.Text 控件中输入的记录是存在的,说明数据表打开方式不正确,不能得到 adoRs.RecordCount 的值。
adoRs.ActiveConnection = adoCon
    adoRs.Open "select * from [User] where [UserName]='" + txtUserName.Text + "'"
应该修改为:
    adoRs.Open "select * from [User] where [UserName]='" & txtUserName.Text & "'", adoCon, 3, 2
3、也可以将 If adoRs.RecordCount > 0 Then 语句修改为:
    If Not adoRs.EOF  Then

请不要选我!!!
2016-10-31 15:14
wjq09
Rank: 2
等 级:论坛游民
帖 子:69
专家分:20
注 册:2011-1-2
收藏
得分:0 
回复 8楼 ZHRXJR
谢谢,照你说的第二点我试了运行结果正确了,但我还是不明白之前错在哪了,你能详细说明一下吗
2016-10-31 16:19
ZHRXJR
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:125
帖 子:1034
专家分:5519
注 册:2016-5-10
收藏
得分:0 
回复 9楼 wjq09
    adoRs.Open "select * from [User] where [UserName]='" & txtUserName.Text & "'", adoCon, 3, 2
语句中,adoCon 后面的 3 与 2 是数据表的打开方式。

记录集对象adoRs的Open方法有一些参数,为了好理解,用中文代替
记录集对象.Open [SQL查询连接字符串],  [数据库对象], [数据查询类型] , [查询时的锁定方式]
其中:
A、[SQL查询连接字符串] 是一个字符串,一般形式为:"Select * From 数据表名称 Where 字段名='字符'",用双引号, Where 字段名='字符' 是查询筛选条件;
B、[数据库对象] 是连接数据库的对象,比如我们前面声明的adoCon,但前提必须是数据库对象已经连接数据库了(这里必须区分数据库和数据表的概念,不能混淆);
C、[数据查询类型]  是打算让记录集对象使用什么类型查询数据表,为了简单,这里只使用值来说明:0-只读,只能向后移动;1-读写,可以自由移动,更新后不能立即显示新记录;2-读写,可以自由移动,更新后可以立即显示新记录;3-只读,可以自由移动;
D、[查询时的锁定方式] 是记录集读写在查询时对记录的锁定方式,为了简单,这里只使用值来说明:1-只读锁定,只能打开只读记录;2-悲观锁定,正在编辑的记录会被锁定;3-乐观锁定,只有调用了记录集对象的UpDate方法后才锁定。

如果要得到记录集对象的 RecordCount 的值,数据查询类型的值必须是3,即只读,可以自由移动;查询时的锁定方式的值应该是2或3,即悲观锁定,正在编辑的记录会被锁定 或 乐观锁定,只有调用了记录集对象的UpDate方法后才锁定。
对于记录集对象直接调用数据库对象 adoRs.ActiveConnection = adoCon 其数据查询类型是1,即读写,可以自由移动,更新后不能立即显示新记录,查询时的锁定方式是1,即只读锁定,只能打开只读记录。
因此得不到记录集对象的 RecordCount 的值。

[此贴子已经被作者于2016-11-1 11:17编辑过]


请不要选我!!!
2016-11-01 10:16
快速回复:帮我看看这段代码问题出在哪,一个登录窗体
数据加载中...
 
   



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

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