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

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 > 0 Then

end if
时间: 2024-08-06 01:04:09

vb 中recordset提示对象关闭时不允许操作的相关文章

VB中的Dictionary对象

VB中的Dictionary对象 核心归纳:1.更换键名,用obj.key("xx")="newxx"2.更换键值或访问指定键: (1)重设键值:obj.item("xx")="newxx", (2)取得键值:obj.item("xx")="newxx" 中的KEY键“xx”未设定时,会在对象的后面增加一个键值对.3.获得条目数:obj.count (从1开始)4.增加键值对:obj.a

WP8.1中C++的winodws运行时组件位移操作的差异

最近学习WP8.1应用开发,想把C语言的SM3国密算法移植到手机app中.由于把C语言的代码转换成C#代码工作量较大,因此只能用winodws运行时组件来实现. SM3国密算法是一种HASH算法,具体详情请自行百度. 结果测试发现手机上SM3算法计算出来的结果和电脑上运行的结果不同!经过我一点点调试发现是位移操作惹的祸,代码中有如下宏定义: #define SHL(x,n) (((x) & 0xFFFFFFFF) << n) #define ROTL(x,n) (SHL((x),n)

3.Word 2016中屏幕提示翻译的使用方法

屏幕提示翻译是Word 2016一个很有特点的功能,在文档中,用户并不需要开启"信息检索"窗格,可以直接使用屏幕提示来获得译文,同时还能够获得该单词的语音朗读.下面介绍Word 2016中屏幕提示翻译的具体操作方法. 操作步骤 1.启动Word 2016并打开文档,在"审阅"选项卡的"语音"组中单击"翻译"按钮,在打开的下拉列表中选择"选择转换语言"选项,如图1所示.2.打开"翻译语言选项&quo

Mac中(parallels desktop)pd虚拟机关闭时如何访问硬盘?

对于使用mac电脑还不是很熟练的小伙伴来讲,安装虚拟机是必备!parallels desktop就是一款非常不错的虚拟机工具,那么Mac中pd虚拟机关闭时如何访问硬盘?即使虚拟机是关闭的,我们依然可以访问我们硬盘的内容,如果你也不知道具体如何操作的话,就一起来看看吧! <ignore_js_op> Mac中pd虚拟机关闭时访问硬盘步骤:第一步:在mac电脑中启动Parallels Desktop应用 第二步:右击Dock中的Parallels Desktop图标,然后点击"控制中心&

在OCX初始化时获取其在网页中的DOM对象

OCX初始化的时候会调用SetClientSite,会传入IOleClientSite对象. 1 CComQIPtr<IOleControlSite, &IID_IOleControlSite> spSite(pClientSite); 2 CComDispatchDriver ecDisp; 3 spSite->GetExtendedControl(&ecDisp); 如上代码,根据IOleClientSite对象,我们可以得到IOleControlSite对象:再通过

增加、删除类文件或者在一个类中增加、删除方法时,是不能够热部署到服务上的。这时候需要停止服务器重新部署后再启动,就不会出现上面的提示了。

Hot Code Replace Failed 2010-11-05 10:11listquiry | 浏览 14226 次 Some code changes cannot be hot swapped into a running virtual machine, such as changing method names or introducing errors into running code.The current target virtual machine {jboss4Ser

XML在java或.NET中转为Json的数组或对象数据时的处理

XML在java和.NET中转为Json数据时会出现这样一个问题,当节点中只有一个节点数据时是转换为对象,有多个节点则是转为数组,为了应对这个问题我们需要在解析的时候进行如下的处理,不然就会报异常: 数据1:数组格式 "Field": [                    {                        "@name": "APPROVE",                        "@title"

java中对象多态时成员变量,普通成员函数及静态成员函数的调用情况

/* 样例1: class Parent{ int num = 3; } class Child extends Parent{ int num = 4; } */ /* 样例2: class Parent{ } class Child extends Parent{ int num = 4; } */ /* 样例3: class Parent{ void show(){ System.out.println("Parent Show!"); } } class Child exten

Qt窗体关闭时,如何自动销毁窗体类对象

Qt窗体关闭时,如何自动销毁窗体类对象 要对你的窗口设置WA_DeleteOnClose属性,默认的情况下关闭窗口仅仅意味着隐藏它 ImgWindow1->setAttribute(Qt::WA_DeleteOnClose,  true);