Поделиться через


ReportExecutionService.Render Метод

Определение

Обрабатывает указанный отчет и готовит его к просмотру в заданном формате.

public:
 cli::array <System::Byte> ^ Render(System::String ^ Format, System::String ^ DeviceInfo, [Runtime::InteropServices::Out] System::String ^ % Extension, [Runtime::InteropServices::Out] System::String ^ % MimeType, [Runtime::InteropServices::Out] System::String ^ % Encoding, [Runtime::InteropServices::Out] cli::array <ReportExecution2005::Warning ^> ^ % Warnings, [Runtime::InteropServices::Out] cli::array <System::String ^> ^ % StreamIds);
public byte[] Render (string Format, string DeviceInfo, out string Extension, out string MimeType, out string Encoding, out ReportExecution2005.Warning[] Warnings, out string[] StreamIds);
member this.Render : string * string * string * string * string * Warning[] * String[] -> byte[]
Public Function Render (Format As String, DeviceInfo As String, ByRef Extension As String, ByRef MimeType As String, ByRef Encoding As String, ByRef Warnings As Warning(), ByRef StreamIds As String()) As Byte()

Параметры

Format
String

Формат, в котором отчет готовится к просмотру. Этот аргумент соответствует модулю подготовки отчетов. Поддерживаются следующие модули: XML, NULL, CSV, IMAGE, PDF, HTML4.0, HTML3.2, MHTML, EXCEL и Word. Список поддерживаемых модулей можно получить, вызвав метод ListRenderingExtensions().

DeviceInfo
String

XML-строка, содержащая содержимое конкретного устройства, необходимое модулем подготовки отчетов, указанным в параметре Format . Параметры DeviceInfo должны передаваться как внутренние элементы XML-элемента DeviceInfo. Дополнительные сведения о параметрах сведений об устройстве для определенных форматов вывода см. в разделе Передача параметров сведений об устройстве в модули подготовки отчетов.

Extension
String

[out] Расширение файла, соответствующее выходному потоку.

MimeType
String

[out] Тип MIME готового к просмотру отчета.

Encoding
String

[out] Кодировка, которая используется сервером отчетов при подготовке содержимого отчета к просмотру.

Warnings
Warning[]

[out] Массив объектов Warning, который описывает все предупреждения, полученные во время обработки отчета.

StreamIds
String[]

[out] Идентификаторы потока. Эти идентификаторы передаются в метод RenderStream(String, String, String, String, String). Их можно использовать для подготовки к просмотру внешних ресурсов (например, изображений), которые связаны с заданным отчетом.

Если используется модуль подготовки отчетов IMAGE, метод выводит пустой массив в StreamIds.

Возвращаемое значение

Byte[]

Массив Byte[] отчета в указанном формате.

Примеры

Чтобы скомпилировать следующий пример кода, необходимо ссылаться на Reporting Services WSDL и импортировать определенные пространства имен. Дополнительные сведения см. в разделе Примеры компиляции и выполнения кода. В следующем примере кода отчет отрисовывается в MHTML и сохраняется в виде MHT-файла на диск.

Imports System  
Imports System.IO  
Imports System.Web.Services.Protocols  
Imports myNamespace.MyReferenceName  

Class Sample  
    Public Shared Sub Main()  
        Dim rs As New ReportExecutionService()  
        rs.Credentials = System.Net.CredentialCache.DefaultCredentials  
        rs.Url = "http://myserver/reportserver/ReportExecution2005.asmx"  

        ' Render arguments  
        Dim result As Byte() = Nothing  
        Dim reportPath As String = "/AdventureWorks Sample Reports/Employee Sales Summary "  
        Dim format As String = "MHTML"  
        Dim historyID As String = Nothing  
        Dim devInfo As String = "<DeviceInfo><Toolbar>False</Toolbar></DeviceInfo>"  

        ' Prepare report parameter.  
        Dim parameters(2) As ParameterValue  

        parameters(0) = New ParameterValue()  
        parameters(0).Name = "EmpID"  
        parameters(0).Value = "288"  
        parameters(1) = New ParameterValue()  
        parameters(1).Name = "ReportMonth"  
        parameters(1).Value = "6" ' June  
        parameters(2) = New ParameterValue()  
        parameters(2).Name = "ReportYear"  
        parameters(2).Value = "2004"  

        Dim credentials As DataSourceCredentials() = Nothing  
        Dim showHideToggle As String = Nothing  
        Dim encoding As String = ""  
        Dim mimeType As String = ""  
        Dim warnings As Warning() = Nothing  
        Dim reportHistoryParameters As ParameterValue() = Nothing  
        Dim streamIDs As String() = Nothing  

        Dim execInfo As New ExecutionInfo  
        Dim execHeader As New ExecutionHeader()  
        Dim SessionId As String  
        Dim extension As String = ""  

        rs.ExecutionHeaderValue = execHeader  

        execInfo = rs.LoadReport(reportPath, historyID)  

        rs.SetExecutionParameters(parameters, "en-us")  

        SessionId = rs.ExecutionHeaderValue.ExecutionID  
        Console.WriteLine("SessionID: {0}", rs.ExecutionHeaderValue.ExecutionID)  

        Try  
            result = rs.Render(format, devInfo, extension, _  
               encoding, mimeType, warnings, streamIDs)  

            execInfo = rs.GetExecutionInfo()  

            Console.WriteLine("Execution date and time: {0}", execInfo.ExecutionDateTime)  

        Catch e As SoapException  
            Console.WriteLine(e.Detail.OuterXml)  
        End Try  

        ' Write the contents of the report to an MHTML file.  
        Try  
            Dim stream As FileStream = File.Create("report.mht", result.Length)  
            Console.WriteLine("File created.")  
            stream.Write(result, 0, result.Length)  
            Console.WriteLine("Result written to the file.")  
            stream.Close()  
        Catch e As Exception  
            Console.WriteLine(e.Message)  
        End Try  
    End Sub 'Main  
End Class  
using System;  
using System.IO;  
using System.Web.Services.Protocols;  
using myNamespace.MyReferenceName;  

class Sample  
{  
    static void Main(string[] args)  
    {  
        ReportExecutionService rs = new ReportExecutionService();  
        rs.Credentials = System.Net.CredentialCache.DefaultCredentials;  
        rs.Url = "http://myserver/reportserver/ReportExecution2005.asmx";  

        // Render arguments  
        byte[] result = null;  
        string reportPath = "/AdventureWorks Sample Reports/Employee Sales Summary";  
        string format = "MHTML";  
        string historyID = null;  
        string devInfo = @"<DeviceInfo><Toolbar>False</Toolbar></DeviceInfo>";  

        // Prepare report parameter.  
        ParameterValue[] parameters = new ParameterValue[3];  
        parameters[0] = new ParameterValue();  
        parameters[0].Name = "EmpID";  
        parameters[0].Value = "288";  
        parameters[1] = new ParameterValue();  
        parameters[1].Name = "ReportMonth";  
        parameters[1].Value = "6"; // June  
        parameters[2] = new ParameterValue();  
        parameters[2].Name = "ReportYear";  
        parameters[2].Value = "2004";  

        DataSourceCredentials[] credentials = null;  
        string showHideToggle = null;  
        string encoding;  
        string mimeType;  
        string extension;  
        Warning[] warnings = null;  
        ParameterValue[] reportHistoryParameters = null;  
        string[] streamIDs = null;  

        ExecutionInfo execInfo = new ExecutionInfo();  
        ExecutionHeader execHeader = new ExecutionHeader();  

        rs.ExecutionHeaderValue = execHeader;  

        execInfo = rs.LoadReport(reportPath, historyID);  

        rs.SetExecutionParameters(parameters, "en-us");   
        String SessionId = rs.ExecutionHeaderValue.ExecutionID;  

        Console.WriteLine("SessionID: {0}", rs.ExecutionHeaderValue.ExecutionID);  

        try  
        {  
            result = rs.Render(format, devInfo, out extension, out encoding, out mimeType, out warnings, out streamIDs);  

            execInfo = rs.GetExecutionInfo();  

            Console.WriteLine("Execution date and time: {0}", execInfo.ExecutionDateTime);  

        }  
        catch (SoapException e)  
        {  
            Console.WriteLine(e.Detail.OuterXml);  
        }  
        // Write the contents of the report to an MHTML file.  
        try  
        {  
            FileStream stream = File.Create("report.mht", result.Length);  
            Console.WriteLine("File created.");  
            stream.Write(result, 0, result.Length);  
            Console.WriteLine("Result written to the file.");  
            stream.Close();  
        }  
        catch (Exception e)  
        {  
            Console.WriteLine(e.Message);  
        }  

    }  
}  

Комментарии

В следующей таблице показаны сведения о заголовках и разрешениях для этой операции.

Использование заголовка SOAP (In) TrustedUserHeaderValue

(In) ExecutionHeaderValue

(Out) ServerInfoHeaderValue
Необходимые разрешения в собственном режиме На main отчет и все вложенные отчеты: ReadProperties ANDExecuteAndView
Необходимые разрешения в режиме Интеграции с SharePoint На main отчет и все вложенные отчеты:<xref:Microsoft.SharePoint.SPBasePermissions.ViewListItems>

Render подготавливает обработанный отчет, связанный с выполнением отчета, указанным в заголовке ExecutionInfo . Если для обработанного отчета в состоянии выполнения нет временных snapshot, этот метод выполнит отчет (если выполнены все требования к учетным данным и параметрам), что приведет к созданию временного snapshot для состояния выполнения. Если отчет обрабатывается повторно из-за изменения значений параметров, не относящихся к запросу, создается новый временный snapshot. Дополнительные сведения о состоянии выполнения см. в разделе Определение состояния выполнения.

Если для параметров выполнения задано кэширование или snapshot выполнения, вызов Render может использовать существующую snapshot.

Если для отчета задано кэширование, а указанные значения параметров и учетные данные совпадают, кэшированную копию snapshot можно загрузить вместо фактической обработки отчета.

Если требования к учетным данным и параметрам не выполнены, этот метод возвращает ошибку.

Последующие вызовы можно Render использовать для получения дополнительных страниц отчета, если модуль подготовки отчетов поддерживает указание нескольких страниц.

Ограничение метода Render заключается в том, что выходные данные не могут быть потоковой передачей, поэтому весь файл должен находиться в памяти.

Сведения о жизненном цикле выполнения, в том числе описание шагов, необходимых для загрузки и подготовки отчета, см. в разделе Определение состояния выполнения .

Применяется к