Condividi tramite


Riferimenti a codice personalizzato e ad assembly in espressioni in Progettazione report (SSRS)

È possibile aggiungere riferimenti a codice personalizzato incorporato in un report o ad assembly personalizzati compilati e salvati nel computer in uso e distribuiti nel server di report. Utilizzare codice incorporato per costanti personalizzate, funzioni complesse o funzioni utilizzate più volte in un singolo report. Utilizzare gli assembly di codice personalizzati per mantenere il codice in un'unica posizione e condividerne l'utilizzo in più report. Il codice personalizzato può includere nuove costanti, variabili, funzioni o subroutine personalizzate. È possibile includere riferimenti di sola lettura a raccolte predefinite come ad esempio Parameters. Non è tuttavia possibile passare alle funzioni personalizzate set di valori di dati. In particolare, non sono supportate le aggregazioni personalizzate.

Nota sulla sicurezzaNota sulla sicurezza

Per i calcoli che dipendono dal tempo, valutati una volta sola in fase di esecuzione e di cui si desidera mantenere inalterato il valore durante tutta l'elaborazione del report, considerare se utilizzare una variabile di report o una variabile di gruppo. Per ulteriori informazioni, vedere Riferimenti a raccolte di variabili di report e di gruppo (Generatore report e SSRS).

Progettazione report è l'ambiente di creazione preferito da utilizzare per l'aggiunta di codice personalizzato a un report. Generatore report supporta l'elaborazione di report che dispongono di espressioni valide o in cui sono inclusi riferimenti agli assembly personalizzati in un server di report. Generatore report non consente di aggiungere un riferimento a un assembly personalizzato.

[!NOTA]

Tenere presente che durante un aggiornamento di un server di report, i report che dipendono dagli assembly personalizzati potrebbero richiedere passaggi aggiuntivi per il completamento dell'aggiornamento. Per ulteriori informazioni, vedere Utilizzare Preparazione aggiornamento per preparare gli aggiornamenti.

[!NOTA]

È possibile creare e modificare definizioni del report (con estensione rdl) in Generatore report e in Progettazione report di SQL Server Data Tools. Ogni ambiente di creazione offre modalità differenti per creare, aprire e salvare report ed elementi correlati. Per ulteriori informazioni, vedere Progettazione di report tramite Progettazione report e Generatore report (SSRS) nel Web all'indirizzo microsoft.com.

Contenuto dell'articolo

Utilizzo di codice personalizzato in Generatore report

Inclusione di riferimenti a funzioni utilizzate di frequente

Inclusione di riferimenti a funzioni utilizzate meno di frequente

Inclusione di riferimenti ad assembly esterni

Inclusione di codice incorporato

Inclusione di riferimenti ai parametri da codice

Inclusione di riferimenti al codice da assembly personalizzati

Passaggio di raccolte predefinite in assembly personalizzati

Utilizzo di codice personalizzato in Generatore report

In Generatore report è possibile aprire un report da un server di report in cui sono inclusi riferimenti agli assembly personalizzati. Ad esempio, è possibile modificare report creati e distribuiti tramite Progettazione report in SQL Server Data Tools (SSDT). Gli assembly personalizzati devono essere distribuiti nel server di report.

Non è possibile effettuare le operazioni seguenti:

  1. Aggiungere riferimenti o istanze del membro della classe a un report.

  2. Visualizzare in anteprima un report con i riferimenti agli assembly personalizzati in modalità locale.

Icona freccia utilizzata con il collegamento Torna all'inizioTorna all'inizio

Inclusione di riferimenti a funzioni utilizzate di frequente

Utilizzare la finestra di dialogo Espressione per visualizzare un elenco per categoria di funzioni comuni predefinite di Reporting Services. Quando si espande Funzioni comuni e fa clic su una categoria, nel riquadro Elemento viene visualizzato l'elenco di funzioni da includere in un'espressione. Le funzioni comuni includono classi degli spazi dei nomi .NET Framework System.Math e System.Convert e funzioni della libreria run-time di Visual Basic. Per praticità, è possibile visualizzare le funzioni utilizzate più di frequente nella finestra di dialogo Espressione, in cui sono elencate per categoria: Testo, Data e ora, Matematiche, Ispezione, Flusso programma, Aggregazione, Finanziarie, Conversione e Varie. Le funzioni utilizzate meno di frequente non sono riportate nell'elenco, ma possono comunque essere utilizzate in un'espressione.

Per utilizzare una funzione predefinita, fare doppio clic sul relativo nome nel riquadro Elemento. Nel riquadro Descrizione viene visualizzata una descrizione della funzione e nel riquadro Esempio viene visualizzato un esempio della chiamata di funzione. Nel riquadro del codice, quando si digita il nome della funzione seguito da una parentesi aperta (, tramite IntelliSense vengono visualizzate tutte le sintassi valide per la chiamata di funzione. Ad esempio per calcolare il valore massimo per un campo denominato Quantity in una tabella, aggiungere l'espressione semplice =Max( nel riquadro del codice, quindi utilizzare gli smart tag per visualizzare tutte le possibili sintassi valide per la chiamata alla funzione. Per completare questo esempio, digitare =Max(Fields!Quantity.Value).

Per ulteriori informazioni su ogni funzione, vedere System.Math, System.Convert e la pagina relativa ai membri delle librerie di runtime di Visual Basic in MSDN.

Icona freccia utilizzata con il collegamento Torna all'inizioTorna all'inizio

Inclusione di riferimenti a funzioni utilizzate meno di frequente

Per includere un riferimento ad altri spazi dei nomi CLR utilizzati meno di frequente, è necessario utilizzare un riferimento completo, ad esempio System.Text.StringBuilder. IntelliSense non è supportato nel riquadro del codice della finestra di dialogo Espressione per queste funzioni utilizzate meno di frequente.

Per ulteriori informazioni, vedere la pagina relativa ai membri delle librerie di runtime di Visual Basic in MSDN.

Inclusione di riferimenti ad assembly esterni

Per includere un riferimento a una classe in un assembly esterno, è necessario identificare l'assembly per il componente Elaborazione report. Utilizzare la pagina Riferimenti della finestra di dialogo Proprietà report per specificare il nome completo dell'assembly da aggiungere al report. Nell'espressione è necessario utilizzare il nome completo per la classe nell'assembly. Le classi di un assembly esterno non vengono visualizzate nella finestra di dialogo Espressione; è necessario fornire il relativo nome corretto. Un nome completo include lo spazio dei nomi, il nome della classe e il nome del membro.

Icona freccia utilizzata con il collegamento Torna all'inizioTorna all'inizio

Inclusione di codice incorporato

Per aggiungere codice incorporato a un report, utilizzare la scheda Codice della finestra di dialogo Proprietà report. Il blocco di codice creato può contenere più metodi. È necessario che i metodi del codice incorporato siano scritti in Microsoft Visual Basic e basati su istanze. Tramite l'elaboratore di report vengono aggiunti automaticamente i riferimenti per gli spazi dei nomi System.Convert e System.Math. Utilizzare la pagina Riferimenti della finestra di dialogo Proprietà report per aggiungere altri riferimenti ad assembly. Per ulteriori informazioni, vedere Aggiungere un riferimento a un assembly in un report (SSRS).

I metodi nel codice incorporato sono disponibili tramite un membro Code definito a livello globale. Per accedere ai metodi, fare riferimento al membro Code e al nome del metodo. L'esempio seguente consente di chiamare il metodo ToUSD per la conversione del valore del campo StandardCost in un valore in dollari:

=Code.ToUSD(Fields!StandardCost.Value)

Per fare riferimento a raccolte predefinite nel codice personalizzato, includere un riferimento all'oggetto Report predefinito:

=Report.Parameters!Param1.Value

Negli esempi seguenti viene illustrato come definire alcune variabili e costanti personalizzate.

Public Const MyNote = "Authored by Bob"
Public Const NCopies As Int32 = 2
Public Dim  MyVersion As String = "123.456"
Public Dim MyDoubleVersion As Double = 123.456

Sebbene le variabili e le costanti personalizzate non siano presenti nella categoria Costanti nella finestra di dialogo Espressioni, in cui vengono visualizzate solo costanti predefinite, è possibile farvi riferimento da qualsiasi espressione, come illustrato negli esempi seguenti. In un'espressione una costante personalizzata viene considerata come un elemento Variant.

=Code.MyNote
=Code.NCopies
=Code.MyVersion
=Code.MyDoubleVersion

Nell'esempio seguente sono inclusi sia il riferimento al codice sia l'implementazione del codice della funzione FixSpelling che consente la sostituzione del testo "Bicycle" per tutte le occorrenze del testo "Bike" nel campo SubCategory.

=Code.FixSpelling(Fields!SubCategory.Value)

Il codice seguente, se incorporato nel blocco di codice di una definizione del report, indica un'implementazione del metodo FixSpelling. In questo esempio viene illustrato come utilizzare un riferimento completo alla classe StringBuilder di Microsoft .NET Framework.

Public Function FixSpelling(ByVal s As String) As String
   Dim strBuilder As New System.Text.StringBuilder(s)
   If s.Contains("Bike") Then
      strBuilder.Replace("Bike", "Bicycle")
      Return strBuilder.ToString()
      Else : Return s
   End If
End Function

Per ulteriori informazioni sulle raccolte di oggetti predefiniti e sull'inizializzazione, vedere Riferimenti alle raccolte predefinite Globals e Users (Generatore report e SSRS) e Inizializzazione di oggetti assembly personalizzati.

Icona freccia utilizzata con il collegamento Torna all'inizioTorna all'inizio

Inclusione di riferimenti ai parametri da codice

È possibile fare riferimento alla raccolta globale di parametri tramite codice personalizzato in un blocco di codice della definizione del report oppure in un assembly personalizzato specificato dall'utente. La raccolta di parametri è di sola lettura e non include iteratori pubblici. Non è possibile utilizzare un costrutto For Each di Visual Basic per esaminare la raccolta parametro per parametro. È necessario conoscere il nome del parametro definito nella definizione del report per potervi fare riferimento nel codice personalizzato. È tuttavia possibile scorrere tutti i valori di un parametro multivalore.

Nella tabella seguente sono inclusi esempi di riferimenti alla raccolta predefinita Parameters da codice personalizzato:

Descrizione

Riferimento nell'espressione

Definizione del codice personalizzato

Passaggio di un'intera raccolta globale di parametri al codice personalizzato.

Questa funzione restituisce il valore di un parametro di report MyParameter specifico.

=Code.DisplayAParameterValue(Parameters)

Public Function DisplayAParameterValue(

ByVal parameters as Parameters) as Object

Return parameters("MyParameter").Value

End Function

Passaggio di un singolo parametro al codice personalizzato.

In questo esempio viene restituito il valore del parametro passato. Se il parametro è un parametro multivalore, la stringa restituita è una concatenazione di tutti i valori.

=Code.ShowParametersValues(Parameters!DayOfTheWeek)

Public Function ShowParameterValues(ByVal parameter as Parameter)
 as String
   Dim s as String 
   If parameter.IsMultiValue then
      s = "Multivalue: " 
      For i as integer = 0 to parameter.Count-1
         s = s + CStr(parameter.Value(i)) + " " 
      Next
   Else
      s = "Single value: " + CStr(parameter.Value)
   End If
   Return s
End Function

Icona freccia utilizzata con il collegamento Torna all'inizioTorna all'inizio

Inclusione di riferimenti al codice da assembly personalizzati

Per utilizzare assembly personalizzati in un report, è innanzitutto necessario creare l'assembly, renderlo disponibile in Progettazione report, aggiungere un riferimento all'assembly nel report e quindi utilizzare un'espressione nel report per fare riferimento ai metodi contenuti in tale assembly. Quando il report viene distribuito al server di report, è necessario distribuire anche l'assembly personalizzato al server di report.

Per informazioni su come creare un assembly personalizzato e renderlo disponibile per Reporting Services, vedere Utilizzo di assembly personalizzati con i report.

Per fare riferimento al codice personalizzato in un'espressione, è necessario chiamare il membro di una classe nell'assembly. La modalità di esecuzione di tale operazione dipende dal tipo di metodo, ovvero statico o basato su istanze. I metodi statici all'interno di un assembly personalizzato sono disponibili globalmente all'interno del report. È possibile accedere ai metodi statici nelle espressioni specificando lo spazio dei nomi, la classe e il nome del metodo. Nell'esempio seguente viene chiamato il metodo ToGBP, che consente di convertire il valore del campo StandardCost da dollari a sterline:

=CurrencyConversion.DollarCurrencyConversion.ToGBP(Fields!StandardCost.Value)

I metodi basati su istanze sono disponibili tramite un membro Code definito a livello globale. Per accedere ai metodi, fare riferimento al membro Code, aggiungendo l'istanza e il nome del metodo. Nell'esempio seguente viene chiamato il metodo di istanza ToEUR, che consente di convertire il valore del campo StandardCost da dollari a euro:

=Code.m_myDollarCoversion.ToEUR(Fields!StandardCost.Value)

[!NOTA]

In Progettazione report un assembly personalizzato viene caricato una volta e non viene scaricato finché non si chiude Visual Studio. Se si visualizza in anteprima un report, si apportano modifiche a un assembly personalizzato utilizzato nel report e quindi si visualizza di nuovo il report in anteprima, le modifiche non compariranno nella seconda anteprima. Per ricaricare l'assembly, chiudere e riaprire Visual Studio, quindi visualizzare l'anteprima del report.

Per ulteriori informazioni sull'accesso al codice, vedere Accesso agli assembly personalizzati tramite espressioni.

Icona freccia utilizzata con il collegamento Torna all'inizioTorna all'inizio

Passaggio di raccolte predefinite in assembly personalizzati

Se si desidera passare raccolte predefinite, ad esempio la raccolta Globals o Parameters, in un assembly personalizzato per l'elaborazione, è necessario aggiungere nel progetto di codice un riferimento all'assembly che definisce le raccolte predefinite e accede allo spazio dei nomi corretto. A seconda del fatto che l'assembly personalizzato venga sviluppato per un report eseguito in un server di report (report del server) o un report eseguito localmente in un'applicazione .NET (report locale), l'assembly a cui è necessario fare riferimento è diverso. Per informazioni dettagliate, vedere di seguito.

  • Spazio dei nomi: Microsoft.ReportingServices.ReportProcessing.ReportObjectModel

  • Assembly (report locale): Microsoft.ReportingServices.ProcessingObjectModel.dll

  • Assembly (report del server): Microsoft.ReportViewer.ProcessingObjectModel.dll

Poiché il contenuto delle raccolte Fields e ReportItems può cambiare dinamicamente in fase di esecuzione, non è consigliabile mantenere i riferimenti tra diverse chiamate nell'assembly personalizzato (ad esempio in una variabile membro). Lo stesso consiglio si applica in genere a tutte le raccolte predefinite.

Vedere anche

Attivitá

Aggiungere codice a un report (SSRS)

Aggiungere un riferimento a un assembly in un report (SSRS)

Riferimento

Esempi di espressioni (Generatore report e SSRS)

Altre risorse

Utilizzo di assembly personalizzati con i report

Esercitazioni su Reporting Services (SSRS)

Esempi di report (Generatore report e SSRS)