vb 中recordset提示对象关闭时不允许操作
2024-10-19 04:34:50
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
--……其它处理的 --将数据写入结果表,存储过程中不做查询
2、VBA中执行完存储过程后,再单独执行查询结果表
sql = "exec rk_sp_huizong " & FItemID Set rs = ExecSql(sql) sql="select * from [结果表]"
set rs= ExecSql(sql) '下面再做判断就不会提示对象关闭时不允许操作了
If rs.RecordCount > Then end if
最新文章
- 涨知识Style
- java实现BitMap
- MyEclipse自动生成hibernate实体类和配置文件攻略
- cocos2dx 3.x(精灵的碰撞检测,点击移动与拖动精灵)
- 实现Server.UrlEncode和Server.UrlDecode功能的js代码
- SQL Server 2012 中 Update FROM子句
- 桌面上嵌入窗口(桌面日历)原理探索(将该窗口的Owner设置成桌面的Shell 窗口,可使用SetWindowLong更改窗口的GWL_HWNDPARENT,还要使用SetWindowPos设置Z-Order)
- 20.org.hibernate.StaleStateException: Batch update returned unexpected row count from update [0]; actual row count: 0; expected: 1
- 设置windows密码只存在NTLM-Hash下
- Android 涂鸦最佳实践
- 玲珑杯 Round #11 (1001 1004 1007)
- SkipList跳表基本原理
- Linux入门(17)——Ubuntu16.04显示内存CPU网速等(System Monitor)
- 【SSH系列】---Hibernate的基本映射
- angular-nvd3初体验
- 解决InetAddress.isReachable(timeout)在windows xp始终返回false的bug
- python学习心得--编码格式篇
- SpringBoot启动banner更改
- HDU 2049 不容易系列之(4)——考新郎 (错排+组合)
- elasticsearch系列六:聚合分析(聚合分析简介、指标聚合、桶聚合)