设为首页收藏本站Access中国

Office中国论坛/Access中国论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

返回列表 发新帖
查看: 1303|回复: 3
打印 上一主题 下一主题

[其它] access2007 vba一问

[复制链接]
跳转到指定楼层
1#
发表于 2009-3-24 02:53:32 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
根据某本书改写的代码,在Login的表单有1确定[cmdenter]按钮,原意是按按扭后登入,未果,access说什么未定义的......
麻烦各位大大帮忙小弟,不胜感激 Orz


Public Function OpenRS(strSql As String, rs As ADODB.Recordset)
Set rs = New ADODB.Recordset
rs.Open strSql, CurrentProject.Connection, adOpenKeyset, adLockOptimistic
End Function

Public Sub Execute(strSql As String)
DoCmd.RunSQL strSql
End Sub

Private Sub cmdenter_Click()
Dim strusername, strpassword As String
Dim flag As Integer
Dim rs As ADODB.Recordset
flag = 0
'从“用户”表里读取用户名和密码
OpenRS ("SELECT * FROM User_account"), rs
'循环判断用户名是否存在,密码是否正确
Do Until rs.EOF
strusername = rs("User_name")
strpassword = rs("Password")
If UCase(Me.txtusername.Value) <> UCase(strusername) Then
rs.MoveNext
'若相等,说明用户名存在,可以跳出循环
Else
flag = 1
Exit Do
End If
Loop
'flag=0 说明用户名不存在,进行处理
'设置文本框的内容为空,“确定”键不可用,焦点设在txtusername
If flag = 0 Then
MsgBox "没有这个用户名,请重新输入"
Me.txtpassword.Value = ""
Me.txtusername.Value = ""
Me.txtusername.SetFocus
cmdenter.Enabled = False
Exit Sub
'若flag=1 说明所输入的用户名存在,进一步比较密码是否正确
'若密码出错,设置txtusername的内容不变,txtpassword的内容为空,
'若密码出错,“确定”键不可用,并把焦点设在txtpassword
Else
If UCase(Me.txtpassword.Value) <> UCase(strpassword) Then
MsgBox "密码错误,请重新输入"
Me.txtpassword.Value = ""
Me.txtpassword.SetFocus
cmdenter.Enabled = False
Exit Sub
End If
End If
'用户名和密码都正确,打开“主界面”窗体
DoCmd.Close
DoCmd.OpenForm "Order_form_temp"
End Sub
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 分享淘帖 订阅订阅
2#
发表于 2009-3-24 06:21:48 | 只看该作者
引用ado试试
3#
发表于 2009-3-24 07:59:27 | 只看该作者

access说什么未定义的......

建议贴出ACCESS的报错信息,否则别人只能猜了。

问题说明越详细,回答也会越准确!参见如何提问。提问的智慧


******************
*  一切皆有可能  *
******************

.
ACMAIN - Access论坛回贴准则(个人).
.

.
QQ群 48866293 / 12035577 / 7440532 / 13666209
http://www.office-cn.net/vvb/ .
http://www.accessbbs.cn/bbs/index.php .
http://www.accessoft.com/bbs/index.asp .
http://www.access-programmers.co.uk/forums .
.
http://www.office-cn.net/home/space.php?uid=141646 .
4#
 楼主| 发表于 2009-3-24 11:18:19 | 只看该作者
谢谢各位的回复, 让小弟补充一下问题

当使用上方所有的程式码时, 不能打开Login表单, 错误信息如下


当将最前面的一部分程式码拿走后, 可以打开Login表单, 但也发生错误
拿走的程式码:
Public Function OpenRS(strSql As String, rs As ADODB.Recordset)
Set rs = New ADODB.Recordset
rs.Open strSql, CurrentProject.Connection, adOpenKeyset, adLockOptimistic
End Function

Public Sub Execute(strSql As String)
DoCmd.RunSQL strSql
End Sub

错误信息如下:


但是当小弟将后段程式码(由Private Sub cmdenter_Click() ...开始)
中的一部分换成这样后, 程式码正常发挥作用
Private Sub cmdenter_Click()
Dim strusername, strpassword As String
Dim flag As Integer
Dim rs As Dao.Recordset
'从“用户”表里读取用户名和密码
Set rs = CurrentDb.OpenRecordset("User_account")
flag = 0
'循环判断用户名是否存在,密码是否正确
Do Until rs.EOF
...

大概就是这样了 ...
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-5-20 04:54 , Processed in 0.091676 second(s), 27 queries .

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

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