CREATE PROCEDURE test ASdeclare @sqlcur varchar(1000)
--通过调用子存储过程作为输出参数得到,每次得到的@sqlcur的值都可能不一样。
exec outputtemptable @sqlcur output    ...
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中运行下面代码:
...
Dim rs As New ADODB.Recordset
rs.CursorType = adOpenDynamic
rs.CursorLocation = adUseClient
If rs.State = 1 Then rs.Close
rs.open "test",adocn         'adocn is connection string
if rs.recordcount=0 then
在执行到最后一句话时,提示错误“rs已经关闭”。是不是因为我的存储过程中的select中含有变量@sqlcur,我该如何解决这个问题?

解决方案 »

  1.   

    在 rs.open "test",adocn  前面加上
    set rs = new adodb.Recordset
      

  2.   


    将你的得到的adocn代码写出来
      

  3.   

    adocn在哪定义的?
    把它的定义和    Dim rs As New ADODB.Recordset  放一起
    你试试
      

  4.   

    adoCn.Open "Provider=SQLOLEDB.1;Persist Security Info=False;User ID=sa;password = VOYAGER;Initial Catalog=ProductManagement;Data Source=192.168.0.46"
      

  5.   

    --存储过程问题:
    CREATE PROCEDURE test AS
    set nocount on  --加上此句
    declare @sqlcur varchar(1000)
    --通过调用子存储过程作为输出参数得到,每次得到的@sqlcur的值都可能不一样。
    exec outputtemptable @sqlcur output    ...
    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)
    set nocount off  --加上此句