VB代码前面不加rs.close提示:对象打开时不允许操作,加上rs.close后,再点击又提示对象关闭时不允许操作 10
vb你就是不让我操作了是吧!气死我了!这是一个提取数据库数据的按钮,提取后数据显示到DATAGRID中,反复点击此按钮则提示数据集rs打开时不允许操作,为了实现反复点击此...
vb你就是不让我操作了是吧!气死我了!
这是一个提取数据库数据的按钮,提取后数据显示到DATAGRID中,反复点击此按钮则提示数据集rs打开时不允许操作,为了实现反复点击此按钮提取数据,前面加上rs.close结果又提示对象关闭时不允许操作具体按钮代码如下:
rs.Open "select max(id) from user", conn, adOpenStatic, adLockReadOnly
'对重新赋值
strsql = “......”
If rs.RecordCount > 0 Then
'关了rs重新开
rs.Close
rs.CursorLocation = adUseClient
rs.Open strsql, conn, adOpenStatic, adLockReadOnly
Set DataGrid1.DataSource = rs
DataGrid1.Refresh
end if 展开
这是一个提取数据库数据的按钮,提取后数据显示到DATAGRID中,反复点击此按钮则提示数据集rs打开时不允许操作,为了实现反复点击此按钮提取数据,前面加上rs.close结果又提示对象关闭时不允许操作具体按钮代码如下:
rs.Open "select max(id) from user", conn, adOpenStatic, adLockReadOnly
'对重新赋值
strsql = “......”
If rs.RecordCount > 0 Then
'关了rs重新开
rs.Close
rs.CursorLocation = adUseClient
rs.Open strsql, conn, adOpenStatic, adLockReadOnly
Set DataGrid1.DataSource = rs
DataGrid1.Refresh
end if 展开
1个回答
展开全部
你要注意,每一个rs.open就要有一个对应的rs.close,否则的话就会出现rs打开后没有关闭的情况,这样下次再打开就会提示“rs打开时不允许操作”。你的代码中就是有两个rs.Open,但rs.Close却只有一个。但是,如果在rs.open之前加上rs.close,那么当程序第一次运行时因为rs尚未打开,就会提示“对象关闭时不允许操作”。
应该在end if的下面加入rs.close,即
end if
rs.Close
还有一种解决办法,就是在rs.Close之前先判断一下rs是否已打开,是就执行close,不是就不执行,即:
If rs.State = 1 Then rs.Close
rs.Open ......
这样的话就允许rs.Close放在rs.Open之前,而且它们可以不成对。
但是最好还是使用第一种方法,即每打开一次记录集,用完后都一定要记得关闭,这样的话就是放到哪里都不会出错了!
应该在end if的下面加入rs.close,即
end if
rs.Close
还有一种解决办法,就是在rs.Close之前先判断一下rs是否已打开,是就执行close,不是就不执行,即:
If rs.State = 1 Then rs.Close
rs.Open ......
这样的话就允许rs.Close放在rs.Open之前,而且它们可以不成对。
但是最好还是使用第一种方法,即每打开一次记录集,用完后都一定要记得关闭,这样的话就是放到哪里都不会出错了!
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询