Linguaggio

ReportExecutionService.Render Metodo

Definizione

Elabora un report specifico e lo visualizza nel formato specificato.

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

Parametri

Format
String

Il formato in cui rendere il rapporto. Questo argomento si corrisponde a un'estensione di rendering. Le estensioni supportate includono XML, NULL, CSV, IMAGE, PDF, HTML4.0, HTML3.2, MHTML, Excel e Word. Un elenco di estensioni supportate può essere ottenuto chiamando il ListRenderingExtensions() metodo.

DeviceInfo
String

Una stringa XML che contiene il contenuto specifico del dispositivo richiesto dall'estensione di rendering specificata nel Format parametro. Le impostazioni di DeviceInfo devono essere passate come elementi interni di un elemento XML di DeviceInfo. Per maggiori informazioni sulle impostazioni di informazione dei dispositivi per formati di output specifici, vedi Passare le impostazioni di informazione del dispositivo alle estensioni di rendering.

Extension
String

[fuori] L'estensione del file corrispondente al flusso di output.

MimeType
String

[fuori] Il tipo MIME del report renderizzato.

Encoding
String

[fuori] La codifica utilizzata quando il server del report visualizza il contenuto del report.

Warnings
Warning[]

[fuori] Un array di Warning oggetti che descrive eventuali avvisi avvenuti durante l'elaborazione del report.

StreamIds
String[]

[fuori] Gli identificatori del flusso. Questi ID vengono passati al RenderStream(String, String, String, String, String) metodo. Puoi usarli per renderizzare le risorse esterne (immagini, ecc.) associate a un determinato report.

Se viene utilizzata l'estensione di rendering IMAGE, il metodo produce un array vuoto in StreamIds.

Valori restituiti

Byte[]

Un array Byte[] del report nel formato specificato.

Esempio

Per compilare il seguente esempio di codice, devi fare riferimento al WSDL di Reporting Services e importare determinati namespace. Per maggiori informazioni, vedi Compiling and Conducting Code Examples. Il seguente esempio di codice visualizza un report in MHTML e lo salva come file .mht su 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);  
        }  

    }  
}  

Commenti

La tabella sottostante mostra informazioni sull'intestazione e sui permessi di questa operazione.

Utilizzo dell'intestazione SOAP (Dentro) TrustedUserHeaderValue

(Dentro) ExecutionHeaderValue

(Fuori) ServerInfoHeaderValue
Permessi richiesti per la modalità nativa Nel rapporto principale e in tutti i sottorapporti: ReadProperties E ExecuteAndView
Permessi richiesti in modalità SharePoint Nel rapporto principale e in tutti i sottorapporti: <xref:Microsoft.SharePoint.SPBasePermissions.ViewListItems>

Render Visualizza un report elaborato associato all'esecuzione del report identificata nell'intestazione ExecutionInfo . Se non esiste uno snapshot temporaneo per il report elaborato nello stato di esecuzione, questo metodo eseguirà il report (se tutti i requisiti di credenziali e parametri sono soddisfatti), causando la creazione di uno snapshot temporaneo per lo stato di esecuzione. Se il report viene rielaborato perché i valori non di query sono cambiati, viene creato un nuovo snapshot temporaneo. Per ulteriori informazioni sullo stato di esecuzione, vedi Identificazione dello stato di esecuzione.

Se le opzioni di esecuzione sono impostate su cache o snapshot di esecuzione, la chiamata può Render utilizzare uno snapshot esistente.

Se il report è impostato in cache e i valori dei parametri e le credenziali forniti corrispondono, la copia cache dello snapshot può essere caricata invece di elaborare effettivamente il report.

Se i requisiti di credenziali e parametri non vengono soddisfatti, questo metodo restituirà un errore.

Le chiamate successive possono Render essere utilizzate per recuperare ulteriori pagine del report se l'estensione di rendering supporta la specificazione di più pagine.

Un limitativo del metodo Render è che l'output non può essere trasmesso in streaming, quindi l'intero file deve essere in memoria.

Si veda Identificare lo stato di esecuzione per una discussione sul ciclo di vita dell'esecuzione, che include una descrizione dei passaggi necessari per caricare e rendere un report.

Si applica a