Access交流中心

北京 | 上海 | 天津 | 重庆 | 广州 | 深圳 | 珠海 | 汕头 | 佛山 | 中山 | 东莞 | 南京 | 苏州 | 无锡 | 常州 | 南通 | 扬州 | 徐州 | 杭州 | 温州 | 宁波 | 台州 | 福州 | 厦门 | 泉州 | 龙岩 | 合肥 | 芜湖 | 成都 | 遂宁 | 长沙 | 株洲 | 湘潭 | 武汉 | 南昌 | 济南 | 青岛 | 烟台 | 潍坊 | 淄博 | 济宁 | 太原 | 郑州 | 石家庄 | 保定 | 唐山 | 西安 | 大连 | 沈阳 | 长春 | 昆明 | 兰州 | 哈尔滨 | 佳木斯 | 南宁 | 桂林 | 海口 | 贵阳 | 西宁 | 乌鲁木齐 | 包头 |

请问为何 RS.open 语句不起作用??

孙亚峰  发表于:2011-03-12 19:46:34  
复制

  源代码是这样的:无法执行到  msgbox"1" 这行,请问是何原因?

 

Private Sub Command4_Click()

Dim Rs As Object
Set Rs = CreateObject("adodb.recordset")

Rs.Open "Select * from user", CurrentProject.Connection, 1, 1

 

MsgBox "1"

 

 

Dim username As String
Dim userpass As String

Text0.SetFocus

username = Text0.Text
userpass = Text2.Text

If IsNull(username) Or IsNull(userpass) Then
MsgBox "用户名或密码不能为空,请重新输入!", vbOKOnly + vbInformation, "错误信息"

Else
If username <> Rs("username") Or userpass <> Rs("password") Then
MsgBox "用户名或密码不正确,请重新输入!", vbOKOnly + vbInformation, "错误信息"

Text0.SetFocus
Text0.Text = ""
Text2.SetFocus
Text2.Value = ""
Text0.SetFocus

Else

Rs.Close
Rs.Open "login_list", conn, adopendynamic, adlockoptimistic
Rs.AddNew
Rs!username = username
Rs!login = Now()
Rs!logout = CDate(0)
Rs.Update
Rs.Close
DoCmd.Close
DoCmd.OpenForm "main"


End If

End If

End Sub

 

Top
煮江品茶 发表于:2011-03-12 19:54:39

Dim Rs As Object
Set Rs = CreateObject("adodb.recordset")

Rs.Open "Select * from user", CurrentProject.Connection, 1, 1

改成:

dim Rs as new ADODB.recordset

Rs.Open "Select * from user", CurrentProject.Connection, 1, 1



孙亚峰 发表于:2011-03-12 19:58:08
最初就是按照您的写法写的,同样不起作用,才改成像现在的写法的。

煮江品茶 发表于:2011-03-12 20:01:56
上传实例

孙亚峰 发表于:2011-03-12 20:51:04

点击下载此附件

 

实例以上传,请指教....



孙亚峰 发表于:2011-03-12 21:58:02
版主请现身~~~

罗衣惹轻尘 发表于:2011-03-13 12:05:49
2007版本以上,等版主解决了~~~

煮江品茶 发表于:2011-03-13 13:02:24
2003以上的不玩

孙亚峰 发表于:2011-03-13 14:18:38
总版主也不玩,那这个问题无解了吗?

罗衣惹轻尘 发表于:2011-03-13 23:27:24
问题当然并非无解,只要您有时间把它转换成2003版本的,去看的人可能会多些。

孙亚峰 发表于:2011-03-13 23:41:27

点击下载此附件

 

 

2003版本实例,请各位前辈指教,谢谢~



煮江品茶 发表于:2011-03-14 08:42:25

Rs.Open "Select * from [user]", CurrentProject.Connection, 1, 1

 

user为系统保留字,需要用[]括起来。



罗衣惹轻尘 发表于:2011-03-14 11:48:41

我都是用Dlookup来做的~~~觉得这样代码简单些。不知道老汉版主如何认为呢?罗衣试了下,还是有些问题,修改后如下:

Private Sub Command4_Click()

Dim Rs As New ADODB.Recordset
Dim cnn As New ADODB.Connection
Rs.Open "Select * from [user]", CurrentProject.Connection, 1, 1

Dim username As String
Dim userpass As String

Text0.SetFocus

username = Text0.Text
userpass = Text2.Value

If IsNull(username) Or IsNull(userpass) Then
MsgBox "用户名或密码不能为空,请重新输入!", vbOKOnly + vbInformation, "错误信息"

ElseIf username <> Rs("username") Or userpass <> Rs("password") Then
MsgBox "用户名或密码不正确,请重新输入!", vbOKOnly + vbInformation, "错误信息"

Text0.SetFocus
Text0.Text = ""
Text2.SetFocus
Text2.Value = ""
Text0.SetFocus

Else

Rs.Close
Rs.Open "login_list", CurrentProject.Connection, adOpenKeyset, adlockoptimistic
Rs.AddNew
Rs!username = username
Rs!login = Now()
Rs!logout = CDate(0)
Rs.Update
Rs.Close
DoCmd.Close
DoCmd.OpenForm "frm_test"

End If

End Sub



煮江品茶 发表于:2011-03-14 16:50:40

用Dcount比Dlookup可能更合适些,比如可写成:

dim n as long
dim ssql as string
dim strwh as string
strwh="username & userpass='" & nz(me.text0.value,"") & nz(me.text2.value,"") & "'"
n=dcount("*","[user]",strwh)
if n=0 then
   MsgBox "用户名或密码错误!"
else
   ssql="INSERT INTO login_list ( username,login,logout ) VALUES ("
   ssql=ssql & me.Text0,value & ",#" & Now() & "#,#" &  CDate(0) & "#)"
   CurrentDb.Execute ssql
   DoCmd.Close
   DoCmd.OpenForm "frm_test"
end if



孙亚峰 发表于:2011-03-14 21:11:43
谢谢两位不吝指教,但是,两段代码我放进去执行后,还是无任何反应,问题依旧存在,请再给看看~!

煮江品茶 发表于:2011-03-15 08:30:17
总记录:15篇  页次:1/1 9 1 :