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
展开
 我来答
网海1书生
科技发烧友

2015-02-13 · 擅长软件设计、WEB应用开发、小程序
网海1书生
采纳数:12311 获赞数:26226

向TA提问 私信TA
展开全部
你要注意,每一个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之前,而且它们可以不成对。

但是最好还是使用第一种方法,即每打开一次记录集,用完后都一定要记得关闭,这样的话就是放到哪里都不会出错了!
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式