none
如何用SQL Server报表服务器 (SSRS) Web服务的API传递一个多值的参数? RRS feed

  • 常规讨论

  • 解决方案

    在Microsoft SQL Server报表服务中(SSRS),为了通过报表服务的Web服务传递一个多值的参数,您需要定义和多值参数的值个数相同的参数值对象,然后传递到报表中。这些参数值对象的名称属性必须指定一样的参数名称。
    例如,在您的报表中有一个多值的参数并且命名为”产品子类别”,现在您想传递参数值1,2和3,您需要创建一个长度为3的参数值数组,并指定每一个具有相同命名属性的值。
    以下是一个完成的例子,仅供参考:
    SRReportExecution2005.ReportExecutionServiceSoapClient rs = new SRReportExecution2005.ReportExecutionServiceSoapClient();
    rs.ClientCredentials.Windows.AllowedImpersonationLevel = System.Security.Principal.TokenImpersonationLevel.Impersonation;
    // Render arguments
    byte[] result = null;
    string reportPath = "/AdventureWorks 2008 Sample Reports/Product Line Sales 2008";
    string format = "MHTML";
    string historyID = null;
    string devInfo = @"<DeviceInfo><Toolbar>False</Toolbar></DeviceInfo>";
    // Prepare report parameter.
    ParameterValue[] parameters = new ParameterValue[3];
    parameters[0].Name = "ProductCategory";
    parameters[0].Value = "1";
    parameters[1].Name = "ProductSubcategory";
    parameters[1].Value = "2"; // June
    parameters[2].Name = "ProductSubcategory";
    parameters[2].Value = "3";
    DataSourceCredentials[] credentials = null;
    string showHideToggle = null;
    string encoding;
    string mimeType;
    string extension;
    Warning[] warnings = null;
    ParameterValue[] reportHistoryParameters = null;
    string[] streamIDs = null;
    ExecutionInfo2 execInfo2 = new ExecutionInfo2();
    ExecutionHeader execHeader = new ExecutionHeader();
    ServerInfoHeader svrinfoHeader;
    execHeader = rs.LoadReport2(null, reportPath, historyID, out svrinfoHeader, out execInfo2);
    rs.SetExecutionParameters2(execHeader, null, parameters, "en-us", out execInfo2);
    String SessionId = execInfo2.ExecutionID.ToString();
    try
    {
    rs.Render(execHeader, null, format, devInfo, out result, out extension, out mimeType, out encoding, out warnings, out streamIDs);
    }
    catch (Exception exp)
    {
    //Throw the exception.
    throw (exp);
    }

    参考:
    ReportExecution2005 Namespace: http://msdn.microsoft.com/en-us/library/reportexecution2005.aspx


    适用于:
    SQL Server报表服务2005版本
    SQL Server报表服务2008版本
    SQL Server报表服务2008 R2版本

    2011年12月8日 1:18
    版主

全部回复