后台数据库为mssqlserver2000,XP的操作系统.
存储过程为:
      alter proc zjyslrfindkmmc @zfkmkmbm varchar(20)
as
begin
    declare @t table(code varchar(20),namea varchar(50),Pcode varchar(20),path varchar(200))
        
    insert into @t select 科目编码,科目名称,上级科目编码,right('---'+科目编码,4) from Tabsubjects where 上级科目编码=@zfkmkmbm
    
    if @@rowcount<>0
     begin
       while @@rowcount<>0
        begin
        insert into @t 
        select b.科目编码,b.科目名称,b.上级科目编码,a.path+right('---'+b.科目编码,4) 
        from @t a,dbo.Tabsubjects b 
        where a.code=b.上级科目编码 and not exists(select 1 from @t where code=b.科目编码)
        end
       select * from dbo.zjyslr where 科目名称 in (select namea as 科目名称 from @t)
      end
   else
     select * from dbo.zjyslr where 科目名称 in(select 科目名称 from dbo.Tabsubjects where 科目编码=@zfkmkmbm)
end
在SQLSERVER里运行存储过程可以查询出记录集,但在VB前台却得不到,报错为 对象关闭.

解决方案 »

  1.   

    在SQLSERVER里运行存储过程可以查询出记录集,但在VB前台却得不到,报错为   对象关闭.-------------
    前台代码有问题,,,
      

  2.   

    前台代码是这样的啊:应该不会有什么错吧
    Function zjyslrfindkmmccount(zfkmkmbmcount As String) As ADODB.Recordset
    On Error GoTo line                      
    Set cmd = New ADODB.Command
        cmd.ActiveConnection = cn
        cmd.CommandType = adCmdStoredProc
        cmd.CommandText = "zjyslrfindkmmccount"
        cmd.Parameters.Append cmd.CreateParameter("@zfkmkmbmcount", adVarChar, adParamInput, 20, zfkmkmbmcount)
       Set zjyslrfindkmmccount = cmd.Execute
        Set cmd = Nothing
    Exit Function
    line:
    MsgBox "服务器可能没打开", , "提示"
    Set cmd = Nothing
    End Function
      

  3.   

    Try: alter   proc   zjyslrfindkmmc   @zfkmkmbm   varchar(20) 
    as 
    begin  set nocount on                --加这句        declare   @t   table(code   varchar(20),namea   varchar(50),Pcode   varchar(20),path   varchar(200)) 
                    
            insert   into   @t   select   科目编码,科目名称,上级科目编码,right('---'+科目编码,4)   from   Tabsubjects   where   上级科目编码=@zfkmkmbm 
            
            if   @@rowcount <> 0 
              begin 
                  while   @@rowcount <> 0 
                    begin 
                    insert   into   @t   
                    select   b.科目编码,b.科目名称,b.上级科目编码,a.path+right('---'+b.科目编码,4)   
                    from   @t   a,dbo.Tabsubjects   b   
                    where   a.code=b.上级科目编码   and   not   exists(select   1   from   @t   where   code=b.科目编码) 
                    end 
                  select   *   from   dbo.zjyslr   where   科目名称   in   (select   namea   as   科目名称   from   @t) 
                end 
          else 
              select   *   from   dbo.zjyslr   where   科目名称   in(select   科目名称   from   dbo.Tabsubjects   where   科目编码=@zfkmkmbm) 
    end 
      

  4.   

     加set nocount on 也许可以
      

  5.   

    cmd.ActiveConnection   =   cn cn没有打开