码迷,mamicode.com
首页 > 其他好文 > 详细

vb 中recordset提示对象关闭时不允许操作

时间:2016-06-17 12:28:30      阅读:123      评论:0      收藏:0      [点我收藏+]

标签:

vb中执行查询后,一般要判断是否为空,只要执行的查询执行了select,都可以用rs.eof 或者 rs.recordcount来判断,

但是,如果执行的sql中加了逻辑判断,导致没有执行任何select语句,则用rs.eof 或者rs.crcordcount来判断,系统就会提示

对象关闭时无法操作。

eg1:

 

delare @a int
set @a=1
if @a=0
   select @a

说明:如果是执行该脚本,用rs.eof进行判断时,系统就会报对象关闭错误,因为没有执行任何select查询,没有返回任何内容。  

eg2:

select *
into #itemno3
from seorder a
    inner join seorderentry b on a.finterid = b.finterid
    
where fbillno = @fbillno
--……其它处理的

select * from #itemno3

说明:上面这段如果是执行该脚本,用rs.eof进行判断时,系统也会报对象关闭错误,因为开始没有执行任何select查询,没有返回任何内容。

 

解决办法:

1、存储过程里将最终的结果写入表中

技术分享
if exists (select 1 from sysobjects where xtype = U and name = itemno3)
    drop table itemno3
select *
into itemno3
from seorder a
    inner join seorderentry b on a.finterid = b.finterid
    
where fbillno = @fbillno
--……其它处理的

--将数据写入结果表,存储过程中不做查询
View Code

 

2、VBA中执行完存储过程后,再单独执行查询结果表

 sql = "exec rk_sp_huizong  " & FItemID
    
    Set rs = ExecSql(sql)
    
sql="select * from [结果表]"
set rs= ExecSql(sql)

下面再做判断就不会提示对象关闭时不允许操作了
 If rs.RecordCount > 0 Then

end if

 

vb 中recordset提示对象关闭时不允许操作

标签:

原文地址:http://www.cnblogs.com/fm168/p/5593425.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!