在Sql Server中执行正常,在ActiveReport中用ado.source={call 过程} & 参数,无返回值。不知道为什么会这样,这样的执行在ActiveReport能正常执行吗?自带的例子没有详细说明带参数的过程如何执行

解决方案 »

  1.   

    你的存储过程返回的是一个Recordset吗?那你有没有在存储过程中的AS语句后加上set nocount on一句呢?
    另外,如果需要从存储过程返回一个Recordset并赋给ActiveReport,那么最好先引用一个ADODB.Recordset,然后用set activereport.datacontrol.recordset=myRecrodset语句传递记录集。
      

  2.   

    如果你非直接在ActiveReport中执行存储过程的话,那么语句的写法是这样的:
    ActiveReport.DataControl.Source= "Execute [存储过程名] 参数1,参数2,参数3"
    在这里,如果参数是Character型,那在要参数要用单引号引起来。
      

  3.   

    CREATE Procedure SP_GetNewOrderID
    @sOrderType char(2),                 
    @sNewOrderID varchar(16) output        
    As
    ...
    VB工程中的函数:
    Public Function GetNewOrderID(ByVal OrderType As String) As String
        Dim conn As New Connection
        Dim cmd As New Command
        Dim NewOrderID As String
        Dim param As New Parameter
        Dim retval As Variant
       
        conn.Open GetConnStr()
        
        cmd.ActiveConnection = conn    cmd.CommandText = "SP_GetNewOrderID"    cmd.CommandType = adCmdStoredProc    '返回值    'Set param = cmd.CreateParameter("retval", adInteger, adParamReturnValue, 4)    'cmd.Parameters.Append param    '输入参数 ,OrderType为传入该函数的参数    Set param = cmd.CreateParameter("sOrderType", adChar, adParamInput, 2, OrderType)    cmd.Parameters.Append param    '输出参数    Set param = cmd.CreateParameter("sNewOrderID", adChar, adParamOutput, 16)    cmd.Parameters.Append param    Set retval = cmd.Execute()
        
        NewOrderID = cmd.Parameters("sNewOrderID").Value
        
        GetNewOrderID = NewOrderID
    end function