zoukankan      html  css  js  c++  java
  • 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
    --……其它处理的
    
    --将数据写入结果表,存储过程中不做查询
    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
  • 相关阅读:
    从零搭建一个IdentityServer——资源与访问控制
    职 工 养 老 保 险 转 移—陕西省外转入
    EurekaUser-Redis
    EurekaUser-返回类型和全局异常
    C# 入门实战系列文章
    Python入门实战系列文章
    Python基础之Scrapy简介
    Python办公自动化之文件合并
    Python基础之shutil及zipfile模块
    Python基础之os模块简介
  • 原文地址:https://www.cnblogs.com/fm168/p/5593425.html
Copyright © 2011-2022 走看看