Compartir a través de


ReportExecutionService.Render Método

Definición

Procesa un informe específico y lo representa en el formato especificado.

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()

Parámetros

Format
String

Formato en el que se representará el informe. Este argumento se corresponde con una extensión de representación. Entre las extensiones admitidas se incluyen XML, NULL, CSV, IMAGE, PDF, HTML4.0, HTML3.2, MHTML, EXCEL y Word. La lista de extensiones admitidas se puede obtener llamando al método ListRenderingExtensions().

DeviceInfo
String

Cadena XML que contiene el contenido específico del dispositivo que requiere la extensión de representación especificada en el Format parámetro . Las opciones de DeviceInfo se deben pasar como elementos internos de un elemento XML DeviceInfo. Para obtener más información sobre la configuración de la información del dispositivo para formatos de salida específicos, vea Pasar la configuración de información del dispositivo a las extensiones de representación.

Extension
String

[salida] Extensión de archivo que corresponde al flujo de salida.

MimeType
String

[salida] Tipo MIME del informe representado.

Encoding
String

[salida] Codificación utilizada cuando el servidor de informes representa el contenido del informe.

Warnings
Warning[]

[out] Matriz de objetos Warning que describen las advertencias ocurridas durante el procesamiento del informe.

StreamIds
String[]

[salida] Identificadores del flujo. Estos identificadores se pasan al método RenderStream(String, String, String, String, String). Puede utilizarlos para representar los recursos externos (imágenes, etc.) que están asociados a un informe determinado.

Si se usa la extensión de representación image, el método genera una matriz vacía en StreamIds.

Devoluciones

Byte[]

Matriz Byte[] del informe en el formato especificado.

Ejemplos

Para compilar el ejemplo de código siguiente, debe hacer referencia al Reporting Services WSDL e importar determinados espacios de nombres. Para obtener más información, vea Compilar y ejecutar ejemplos de código. En el ejemplo de código siguiente se representa un informe en MHTML y se guarda como un archivo .mht en el disco.

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);  
        }  

    }  
}  

Comentarios

En la siguiente tabla se muestra la información de encabezado y de permisos de esta operación.

Uso del encabezado SOAP (In) TrustedUserHeaderValue

(In) ExecutionHeaderValue

(Out) ServerInfoHeaderValue
Permisos necesarios en modo nativo En el informe principal y todos los subinformes: ReadProperties AND ExecuteAndView
Permisos necesarios en modo de SharePoint En el informe principal y todos los subinformes: <xref:Microsoft.SharePoint.SPBasePermissions.ViewListItems>

Render representa un informe procesado asociado a la ejecución del informe identificada en el ExecutionInfo encabezado . Si no existe ninguna instantánea temporal para el informe procesado en el estado de ejecución, este método ejecutará el informe (si se cumplen todos los requisitos de credenciales y parámetros), lo que dará lugar a que se cree una instantánea temporal para el estado de ejecución. Si se vuelve a procesar el informe porque los valores de parámetros que no son de consulta han cambiado, se crea una nueva instantánea temporal. Para obtener más información sobre el estado de ejecución, consulte Identificación del estado de ejecución.

Si las opciones de ejecución se establecen en caché o instantánea de ejecución, la llamada a Render puede usar una instantánea existente.

Si el informe se establece en caché y los valores de parámetro y las credenciales proporcionados coinciden, la copia almacenada en caché de la instantánea se puede cargar en lugar de procesar realmente el informe.

Si no se cumplen los requisitos de credenciales y parámetros, este método devolverá un error.

Las llamadas posteriores a Render se pueden usar para capturar páginas adicionales del informe si la extensión de representación admite la especificación de varias páginas.

Una limitación del método Render es que no se puede transmitir la salida, por lo que todo el archivo debe estar en memoria.

Consulte Identificación del estado de ejecución para obtener una explicación del ciclo de vida de ejecución, que incluye una descripción de los pasos necesarios para cargar y representar un informe.

Se aplica a