CREATE PROCEDURE test AS
...
declare @sqlt1 varchar(6000)
select @sqlt1='SELECT 
Sum(tempTable' + @sqlcur +'.加工金额) AS [Sum Of 加工金额], 
Sum(tempTable' + @sqlcur +'.重量) AS [Sum Of 重量], 
Sum(tempTable' + @sqlcur +'.发注金额) AS [Sum Of发注金额]
FROM tempTable' + @sqlcur
exec (@sqlt1)在vb中运行下面代码:
...
rs.open "test",adocn         'adocn is connection string
if rs.recordcount=0 then
在执行到最后一句话时,提示错误“rs已经关闭”。是不是因为我的存储过程中的select中含有变量@sqlcur,我该如何解决这个问题?
谢谢了先!

解决方案 »

  1.   

    @sqlcur是什么东东?
    传入的参数么?
    对应的1,2,3然后查询对应的表table1,table2,table3之类  ??
      

  2.   

    rs.open "test",adocn
    你看看是不是"test"问题
      

  3.   

    if rs.recordcount=0 then
    --〉
    if not rs.eof then
       if rs.recordcount=0 then  ...
    end if
      

  4.   

    @sqlcur 是自定义的变量,经过计算得出相应的值。
    关于@sqlcur的实际代码如下:
    declare @sqlcur varchar(1000)
    exec outputtemptable @sqlcur output
    通过调用子存储过程作为输出参数得到,每次得到的@sqlcur的值都可能不一样。
      

  5.   

    你重新定义rs
    set rs=new recordset
      

  6.   

    你是通过字符串组合的的SQL语句 所有当字符串相加时你要把其中的变量也转换成
    字符串其它地方是不是有语法问题你自己去想这种写法我是写得最多的,相信我呀!CREATE PROCEDURE test AS
    ...
    declare @sqlt1 varchar(6000)
    select @sqlt1='SELECT 
    Sum(tempTable' + convert(nvarchar,@sqlcur) +'.加工金额) AS [Sum Of 加工金额], 
    Sum(tempTable' + convert(nvarchar,@sqlcur) +'.重量) AS [Sum Of 重量], 
    Sum(tempTable' + convert(nvarchar,@sqlcur) +'.发注金额) AS [Sum Of发注金额]
    FROM tempTable' + convert(nvarchar,@sqlcur)
    exec (@sqlt)
      

  7.   

    上面的变量最好还加上去空格函数!rtrim(@sqlcur)
      

  8.   

    to:hansha我试了,但还不行,在帮我想一想啊。
      

  9.   

    CREATE PROCEDURE test ASset nocount on
    调用其他的存储过程得到@sqlcur
    set nocount offdeclare @sqlt1 varchar(6000)select @sqlcur=ltrim(isnull(@sqlcur,''))select @sqlt1='SELECT 
    Sum(tempTable' + @sqlcur +'.加工金额) AS [Sum Of 加工金额], 
    Sum(tempTable' + @sqlcur +'.重量) AS [Sum Of 重量], 
    Sum(tempTable' + @sqlcur +'.发注金额) AS [Sum Of发注金额]
    FROM tempTable' + @sqlcur
    exec (@sqlt1)
      

  10.   

    另外rs.open "test",adocn 前加上
    rs.CursorLocation = adUseClient