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
  • 相关阅读:
    mapreduce框架详解【转载】
    Hadoop的基本命令【转载】
    mininet实验 设置带宽之简单性能测试
    Opendarlight Carbon 安装
    mininet实验 测量路径损耗率
    Controller与Switch建立连接
    OpenFlow协议
    Controller控制器
    进击的SDN
    SDN前瞻 传统网络的缺陷
  • 原文地址:https://www.cnblogs.com/fm168/p/5593425.html
Copyright © 2011-2022 走看看