注册 登录
编程论坛 VB6论坛

新手求组~一直提示recordset 对象关闭时不允许操作

粉丝别 发布于 2014-01-16 19:21, 3459 次点击
我想做个登陆界面,是这样写的
Private Sub Command1_Click()
Dim cnn As New ADODB.Connection
Dim rs1 As New ADODB.Recordset
Dim cmd As New
cnn.ConnectionString = ("provider=SQLOLEDB.1;Persist Security Info=False;Integrated Security=SSPI;CATALOG=车辆管理正式版;")
cnn.Open
Set rs1.ActiveConnection = cnn
rs1.Open ("use 车辆管理正式版 select * from zhanghu where 用户名='" & Text1.Text & "' and 密码='" & Text2.Text & "'")
If rs1.EOF = True Then
 MsgBox "用户名或密码错误!", vbInformation, "警告"
Text1.Text = ""
 Text2.Text = ""
 Else
 Unload Me
 MsgBox "登录成功"
Form2.Show
End If
rs1.Close
End Sub


每次到If rs1.EOF = True Then
那里就会出错。。。到底是怎么回事,请大家帮我看下,谢谢了
11 回复
#2
韶志2014-01-16 19:58
直接这样写就行了吧      If rs1.EOF Then
#3
粉丝别2014-01-16 20:04
回复 2楼 韶志
还是不行哦,改了没用,谢谢了~~~
#4
lowxiong2014-01-16 20:29
应该是你的ConnectionString有问题,你使用了Integrated Security=SSPI方式连接sql数据库,很有可能你的sql server未设置支持默认的windows用户登录,只支持数据库用户登录,所以连接数据库不成功,导致recordset根本没打开。
#5
粉丝别2014-01-16 20:36
回复 3楼 粉丝别
你好,我的SQL server是设置的windows账户登录。
我试试换成sql账号密码登录看行不行
#6
粉丝别2014-01-16 20:43
改了还是不行,
If cnn.State = adStateOpen Then
MsgBox "打开数据库"
我的这句都能执行,都能弹出"打开数据库"的窗口。。。菜鸟求大家帮忙。。。
#7
lowxiong2014-01-16 20:56
那就是你的sql语句有问题,我通常的写法是
dim rs1 as new recordset
dim sql as string
sql="select * from zhanghu where 用户名='" & Text1.Text & "' and 密码='" & Text2.Text & "'"
rs1.open sql,cnn,3,3
if rs1.state=0 then
  msgbox "记录集打开失败"
  exit sub
else
  if not rs1.eof then
    msgbox "登录成功"
  else
    msgbox "登录失败"
  endif
  rs1.close
endif
#8
粉丝别2014-01-16 21:04


Private Sub Command1_Click()
Dim cnn As New ADODB.Connection
 Dim rs1 As New ADODB.Recordset
 Dim cmd As New
 cnn.ConnectionString = "provider=SQLOLEDB.1;Persist Security Info=False;Integrated Security=SSPI;CATALOG=曾杰的车辆管理正式版;"
cnn.Open
 Set rs1.ActiveConnection = cnn
 If cnn.State = adStateOpen Then
MsgBox "打开数据库"
End If
 rs1.Open ("use 曾杰的车辆管理正式版 select * from zhanghu where 用户名='" & Text1.Text & "' and 密码='" & Text2.Text & "'")
  If cnn.State = adStateOpen Then
MsgBox "打开数据库"
End If
 If rs1.EOF = True Then
 MsgBox "用户名或密码错误!", vbInformation, "警告"
Text1.Text = ""
 Text2.Text = ""
 Else
 Unload Me
 MsgBox "登录成功"
Form2.Show
 End If
 rs1.Close
 End Sub


我改成这样,两次“打开数据库”的弹出窗口都能看到,但还是提示对象关闭。。。
#9
alike2014-01-17 10:29
两次“打开数据库”的弹出窗口能看到只能说明连接是通的,但你的记录集没有打开,所以提示对象关闭,看一下SQL语句是否出错,试一下rs1.Open "use 曾杰的车辆管理正式版 select * from zhanghu where 用户名='" & Text1.Text & "' and 密码=" & Text2.Text & "",cnn,3,3
#10
风吹过b2014-01-17 11:50
提示recordset 对象关闭时不允许操作

这是数据库没打开。
你确认 cnn 打开了,那么就只能是 打开表失败。

按9楼的方法试着打开看看。
我没用过你1楼代码里那种打开方法,那种打开方法 感觉没有指定 游标类型等
#11
vbvcr512014-01-17 23:31
看看cnn.sate连接状态值是否是1,1的话表示连接了,否则没有连接上。
#12
Artless2014-01-18 11:02
以下是引用vbvcr51在2014-1-17 23:31:48的发言:

看看cnn.sate连接状态值是否是1,1的话表示连接了,否则没有连接上。

以下是引用粉丝别在2014-1-16 20:43:17的发言:

改了还是不行,
If cnn.State = adStateOpen Then
MsgBox "打开数据库"
我的这句都能执行,都能弹出"打开数据库"的窗口。。。菜鸟求大家帮忙。。。

rs1.Open ("use 车辆管理正式版 select * from zhanghu where 用户名='" & Text1.Text & "' and 密码='" & Text2.Text & "'")
rs1没打开

[ 本帖最后由 Artless 于 2014-1-18 11:23 编辑 ]
1