Condividi tramite


Utilizzo di insiemi Global nelle espressioni (Reporting Services)

Data aggiornamento: 14 aprile 2006

In Reporting Services sono disponibili gli insiemi globali seguenti, a cui è possibile fare riferimento nelle espressioni: DataSources, DataSets, Fields, Globals, Parameters, ReportItems e User. Per fare riferimento a un insieme in un'espressione, è possibile utilizzare la sintassi standard di Visual Basic per un elemento di un insieme. Nell'elenco seguente sono inclusi esempi della suddetta sintassi:

  • Collection!ObjectName.Property Oppure Collection!ObjectName("Property")
    =Fields!Sales.Value
    =Fields!Sales("Value")
  • Collection("ObjectName").Property
    =Fields("Sales").Value
  • Collection("Member")
    =User("Language")
  • Collection.Member
    =User.Language

Riepilogo degli insiemi globali

Nella tabella seguente vengono descritti tutti gli insiemi globali e viene indicato quando è possibile fare riferimento agli insiemi in un'espressione. Ogni insieme globale viene illustrato in un argomento separato di seguito in questa sezione.

Insieme globale Esempio Descrizione

Fields

=Fields!Sales.Value

Rappresenta l'insieme di campi del set di dati disponibili per il report. Disponibile dopo il recupero dei dati da un'origine dei dati in un set di dati.

ReportItems

=ReportItems("Textbox1").Value

Rappresenta l'insieme di caselle di testo per l'elemento del report, ad esempio le caselle di testo contenute in un'area dati tabella, un'intestazione pagina o un piè di pagina. Disponibile durante l'elaborazione di report.

Globals

=Globals.ReportName

Rappresenta le variabili globali utili per i report, quali il nome del report o il numero di pagina. Sempre disponibile.

Parameters

=Parameters("ReportMonth").Value

-oppure-

=Parameters!ReportYear.Value

Rappresenta l'insieme dei parametri del report, che possono essere a valore singolo o multivalore. Non disponibile prima del completamento dell'inizializzazione dell'elaborazione. Quando si creano parametri query, questi vengono automaticamente aggiunti all'insieme dei parametri del report.

User

=User.UserID

-oppure-

User.Language

Rappresenta un insieme di dati relativi all'utente che esegue il report, ad esempio la lingua o l'ID utente. Sempre disponibile. User!UserID viene utilizzato di frequente per filtrare i risultati nei report.

DataSources

=DataSources("AdventureWorks").Type

Rappresenta l'insieme di origini dei dati a cui viene fatto riferimento nel corpo di un report. Non include origini dei dati utilizzate solo nelle intestazioni pagina o nei piè di pagina. Non disponibile nell'anteprima locale.

DataSets

=DataSets("TopEmployees").CommandText

Rappresenta l'insieme di set di dati a cui si fa riferimento nel corpo della definizione del report. Non include origini dei dati utilizzate solo nelle intestazioni pagina o nei piè di pagina. Non disponibile nell'anteprima locale.

I membri degli insiemi Globals e Users restituiscono delle varianti. Se si desidera utilizzare una variabile globale in un'espressione che richiede un tipo di dati specifico, è innanzitutto necessario eseguire il cast della variabile, Per convertire, ad esempio, la variante relativa alla data e all'ora di esecuzione in un formato di data, utilizzare CDate(Globals!ExecutionTime). Per ulteriori esempi, vedere Esempi di espressioni in Reporting Services.

Campi

Ogni set di dati di un report include un insieme Fields che contiene i campi che vengono visualizzati quando si espande un nodo del set di dati nella finestra Set di dati. L'insieme Fields viene in genere utilizzato per visualizzare dati nelle caselle di testo in un report, ma può essere utilizzato anche in altri elementi, proprietà e funzioni del report. È necessario che i nomi dei campi siano univoci in un insieme, ma lo stesso nome di campo può esistere in insiemi diversi.

Alcune estensioni per l'elaborazione dati consentono di determinare automaticamente l'insieme di campi dalla query definita per un set di dati. Facendo clic sul pulsante Aggiorna campi sulla barra degli strumenti, le modifiche vengono salvate nella definizione del report e la finestra Set di dati viene aggiornata per visualizzare tali modifiche. Per modificare le definizioni dei campi, in visualizzazione Dati in Progettazione report selezionare il set di dati per aprire la finestra di dialogo Set di dati e quindi fare clic sulla scheda Campi. Per aggiungere un campo calcolato, fare clic con il pulsante destro del mouse nella finestra Set di dati per aprire la finestra di dialogo Aggiungi nuovo campo, in cui è possibile digitare un nome. Fare quindi clic su Campo calcolato e immettere l'espressione.

Durante l'elaborazione del report, man mano che ogni elemento del report viene elaborato, l'insieme Fields correlato con l'elemento del report corrente viene associato ai dati di origine sottostanti. I dati restituiti per un campo specifico possono essere costituiti da un singolo valore o da un valore diverso per ogni riga del set di dati durante l'elaborazione del report. Il fatto che vengano restituiti più valori o un valore solo è determinato dal tipo di elemento del report che contiene il riferimento di campo. I riferimenti da un'area dati, ad esempio una tabella, una matrice, un elenco o un grafico, restituiscono un valore per ogni riga del set di dati. I riferimenti che non fanno parte di un'area dati restituiscono un singolo valore.

Quando si utilizza una funzione di report di aggregazione per elaborare l'insieme di campi di un set di dati, è necessario includere un parametro scope che specifichi il set di dati. Per verificare l'associazione di un elemento del report con un set di dati, selezionare l'elemento del report e visualizzarne le proprietà. Per ulteriori informazioni sulle funzioni di report e il parametro scope, vedere Utilizzo di funzioni di report nelle espressioni (Reporting Services).

Per impostazione predefinita, gli elementi dell'insieme Fields hanno due proprietà, ovvero Value e IsMissing. Quando si trascina un campo dalla finestra Set di dati in un elemento del report nel layout, i contenuti dell'elemento del report vengono impostati sul valore della proprietà Value per impostazione predefinita. Per un'area dati, il valore di ogni riga del set di dati viene impostato su =Fields!FieldName.Value. I contenuti di un elemento del report che non sono costituiti da un'area dati vengono impostati su un valore singolo, ad esempio =First(Fields!FieldName.Value).

La proprietà IsMissing indica se un campo definito per un set di dati è incluso nei campi recuperati dall'origine dei dati. Questo campo può essere testato in un'espressione di campo utilizzando Visual Basic. La proprietà Value per i campi mancanti è Null (Nothing in Visual Basic). L'esempio seguente, se posizionato nella casella di testo dell'elemento del report in cui si desidera visualizzare i dati del campo, illustra come testare un campo mancante.

=IIF(Fields!FieldName.IsMissing, "Field was not returned by query", Fields!FieldName.Value))

Poiché la funzione IIF di Visual Basic valuta tutti gli elementi di un'istruzione prima di restituire il risultato, i riferimenti a un campo mancante potrebbero provocare errori di elaborazione. Nell'esempio seguente viene illustrato come eseguire chiamate di funzione di Visual Basic che fanno riferimento a un campo che potrebbe non essere presente.

=IIF(Sum(Fields!FieldName.Value) IS NOTHING, 0, Sum(Fields!FieldName.Value))

Quando si utilizza l'editor di espressioni per generare un'espressione che fa riferimento a un campo, è possibile selezionare l'insieme Fields nel primo riquadro e visualizzare l'elenco di campi disponibili nell'ultimo riquadro. Nella figura seguente viene illustrato il campo FirstName per un set di dati denominato Employees.

Finestra di dialogo Modifica espressione con Intellisense

Si noti l'elenco di proprietà disponibile nella finestra di IntelliSense. Tale elenco include le proprietà predefinite Value e IsMissing. Le restanti proprietà sono proprietà di campo estese predefinite supportate da altre estensioni per l'elaborazione dati.

Proprietà di campo estese

Le proprietà di campo estese sono proprietà aggiuntive definite in un campo dall'estensione per l'elaborazione dati. Un subset delle proprietà di campo estese è costituito da proprietà predefinite. Le proprietà predefinite sono proprietà di campo utilizzate comunemente. Due esempi tipici sono rappresentati dal campo Key e dal campo UniqueName. Queste proprietà predefinite sono incluse nell'elenco di IntelliSense ed è possibile farvi riferimento utilizzando la sintassi degli insiemi Fields!FieldName.Property. Un'estensione per l'elaborazione dati può sfruttare le proprietà predefinite tramite l'ottimizzazione delle query che includono questa sintassi.

È inoltre possibile fare riferimento ad altre proprietà di campo estese supportate da un'estensione per l'elaborazione dati specifica. Queste proprietà non sono visualizzate nella finestra Espressioni, ma possono essere determinate esplorando un'origine dei dati tramite un'estensione per l'elaborazione dati e la finestra Progettazione query associata. È possibile fare riferimento alle proprietà di campo estese utilizzando la sintassi degli insiemi Fields!FieldName("Property").

Se un provider di dati non supporta le proprietà di campo estese oppure se il campo non viene trovato quando la query viene eseguita, il valore della proprietà è null (Nothing in Visual Basic) per le proprietà di tipo String e Object, e zero (0) per le proprietà di tipo Integer.

Se un'estensione per i dati prevede proprietà di campo personalizzate, tali proprietà saranno visibili nell'elenco a discesa Editor espressioni per tutti i campi del set di dati, a prescindere dal fatto che un campo supporti o meno la proprietà in questione. Se si aggiunge un riferimento a una proprietà non supportata per un determinato campo, tale riferimento restituirà null (Nothing in Visual Basic). Per esempi di provider che supportano le proprietà di campo estese, vedere Definizione di set di dati del report per dati multidimensionali e di stima di data mining di Analysis Services e Definizione di set di dati del report per dati multidimensionali da un sistema SAP NetWeaver BI.

Globals

L'insieme Globals contiene le variabili globali per il report. Nella tabella seguente vengono descritti i membri dell'insieme Globals.

Membro Tipo Descrizione

ExecutionTime

DateTime

Data e ora di inizio dell'esecuzione del report.

PageNumber

Integer

Numero di pagina corrente. Può essere utilizzato soltanto in intestazioni e piè di pagina.

ReportFolder

String

Percorso completo della cartella contenente il report. Non include l'URL del server di report.

ReportName

String

Nome del report archiviato nel database del server di report.

ReportServerUrl

String

URL del server di report in cui il report è in esecuzione.

TotalPages

Integer

Numero totale di pagine nel report. Può essere utilizzato soltanto in intestazioni e piè di pagina.

Di seguito sono riportati alcuni esempi di variabili globali:

  • L'espressione seguente, inserita in una casella di testo nel piè di pagina di un report, restituisce il numero di pagina e le pagine totali del report:
    =Globals.PageNumber & " of " & Globals.TotalPages
  • Questa espressione restituisce il nome e l'ora di esecuzione del report. Per la formattazione dell'ora viene utilizzata la stringa di formattazione di Microsoft .NET Framework per la data breve:
    =Globals.ReportName & ", dated " & Format(Globals.ExecutionTime, "d")

Parametri

L'insieme Parameters contiene gli oggetti parametri di report disponibili nel report. I parametri possono essere passati alle query, utilizzati nei filtri o in altre funzioni che modificano l'aspetto e il contenuto del report in base al parametro. Quando si definiscono parametri query, questi vengono automaticamente aggiunti all'insieme dei parametri del report. Nella tabella seguente vengono descritte le proprietà definite su un Parameter: Count, IsMultiValue, Value e Label.

Proprietà Descrizione

Count

Valore integer che indica il numero di parametri inclusi nell'insieme.

IsMultiValue

Valore booleano che identifica questo parametro come associato a un set di valori.

Value

Valore del parametro. Per un parametro multivalore, Value restituisce una matrice di oggetti.

Label

Etichetta descrittiva per il parametro. Se non viene specificata alcuna etichetta, il valore della proprietà Label corrisponderà a quello della proprietà Value. Se allo stesso Value è associata più di una Label , verrà utilizzata la prima Label rilevata. Per un parametro multivalore, Label restituisce una matrice di oggetti.

È possibile accedere ai parametri tramite la sintassi delle proprietà o la sintassi degli insiemi. Nell'espressione seguente viene illustrato come accedere a ogni membro dell'insieme Parameters. Inoltre, se l'espressione viene inserita in una casella di testo di un elemento del report, visualizza il contenuto del parametro ProductSubCategory.

="IsMultiValue: " & Parameters!ProductSubCategory.IsMultiValue.ToString() 
& " Count:" & Parameters!ProductSubCategory.Count & " Values: " 
& Join(Parameters!ProductSubCategory.Value,", ") & " Labels: " 
& Join(Parameters!ProductSubCategory.Label,", ")

Per ulteriori informazioni, vedere Utilizzo di parametri in Reporting Services.

ReportItems

L'insieme ReportItems contiene tutte le caselle di testo disponibili nel report. Per gli elementi nell'insieme ReportItems è disponibile solo la proprietà Value. È possibile utilizzare il valore di un elemento ReportItems per visualizzare o calcolare i dati di un altro campo del report. Per accedere al valore della casella di testo corrente, è possibile utilizzare il valore globale predefinito di Visual Basic Me.Value o, più semplicemente, Value. Nelle funzioni report come First e nelle funzioni di aggregazione utilizzare, tuttavia, la sintassi completa.

Ad esempio:

  • Questa espressione, inserita in una casella di testo, visualizza il valore di una casella di testo denominata ReportItem.
    =ReportItems("Textbox1").Value
  • Questa espressione, inserita nella proprietà Color di una casella di testo ReportItem, visualizza il testo in nero quando il valore è > 0 e in rosso in tutti gli altri casi:
    =iif(Me.Value > 0,"Black","Red")
  • Questa espressione, inserita in una casella di testo nell'intestazione pagina o nel piè di pagina, visualizza il primo valore per pagina del report visualizzabile, per una casella di testo denominata LastName:
    =First(ReportItems("LastName").Value)

User

L'insieme User contiene i dati relativi all'utente che esegue il report. È possibile utilizzare questo insieme per filtrare i dati visualizzati in un report, per mostrare, ad esempio, solo quelli dell'utente corrente o visualizzare l'ID utente nel titolo del report. L'espressione seguente, inserita in una casella di testo, combina testo statico con dati utente variabili:

=Globals!ReportName & " for " & User!UserID

Nella tabella seguente vengono descritti i membri dell'insieme User.

Membro Tipo Descrizione

Language

String

Lingua dell'utente che esegue il report. Ad esempio en-US.

UserID

String

ID dell'utente che esegue il report. Se si utilizza l'autenticazione di Windows, questo valore corrisponde all'account di dominio dell'utente corrente. Il valore è determinato dall'estensione di protezione di Reporting Services, che può utilizzare l'autenticazione di Windows o quella personalizzata.

Nei report che includono la variabile User!UserID è talvolta possibile che non vengano visualizzati i dati specifici dell'utente che sta visualizzando il report. Il problema si presenta quando si verificano le condizioni seguenti:

  • Il report deve essere uno snapshot dell'esecuzione del report o uno snapshot della cronologia del report.
  • È necessario accedere al report a livello di programmazione, mediante i metodi SOAP o l'indirizzo URL del report.

Quando si verifica questo problema le informazioni del profilo utente incluse nello snapshot del report sono basate su uno degli elementi seguenti:

  • L'identità dell'utente che ha creato lo snapshot del report.
  • L'account con cui viene eseguito il server di report, se lo snapshot viene creato dal server di report come operazione pianificata.
ms157274.note(it-it,SQL.90).gifImportante:
L'impossibilità di aggiornare lo snapshot di un report basato sulle informazioni di un profilo utente provoca la generazione di dati non corretti e introduce un problema di protezione, se lo snapshot include dati sensibili o riservati.

Gli errori di profilo utente si verificano solo per gli snapshot del report aperti mediante chiamate SOAP o attraverso l'indirizzo URL dello snapshot. User!UserID funziona perfettamente per i report eseguiti su richiesta e per tutti gli snapshot dei report aperti da Gestione report. Per ulteriori informazioni sulle modalità con cui gli snapshot del report vengono chiamati da metodi di servizio Web e dall'accesso con URL, vedere Using a URL to Access Report Server Items e Identifying Execution State.

DataSources

L'insieme DataSources rappresenta le origini dei dati a cui si fa riferimento nella definizione del report pubblicata. In modalità anteprima i valori che si ottengono per queste proprietà possono essere diversi da quelli che si ottengono quando si distribuisce e visualizza un report pubblicato.

Nella tabella seguente vengono descritte le variabili dell'insieme DataSources.

Variabile Tipo Descrizione

DataSourceReference

String

Percorso completo dell'origine dei dati sul server di report. Ad esempio /DataSources/AdventureWorks..

Type

String

Tipo di provider di dati per l'origine dei dati. Ad esempio SQL.

DataSets

L'insieme DataSets rappresenta i set di dati a cui si fa riferimento nella definizione del report. Questo insieme globale viene raramente utilizzato direttamente nei report, ma è disponibile per i progettisti di report per accedere al comando query utilizzato per recuperare i dati da un'origine dei dati per ogni set di dati.

Nella tabella seguente vengono descritti i membri dell'insieme DataSets.

Membro Tipo Descrizione

CommandText

String

Per le origini dei dati database, si tratta della query utilizzata per recuperare dati dall'origine dei dati. Se la query è un'espressione, si tratta dell'espressione valutata.

RewrittenCommandText

String

Valore CommandText espanso del provider di dati. Viene in genere utilizzato per i report con parametri query mappati a parametri report. Il provider di dati imposta questa proprietà quando espande i riferimenti ai parametri di testo di comando nei valori costanti selezionati per i parametri report mappati.

Vedere anche

Attività

Procedura: Aggiunta di un'espressione (Progettazione report)

Concetti

Informazioni sul layout e il rendering dei report
Concetti fondamentali della progettazione dei report

Guida in linea e informazioni

Assistenza su SQL Server 2005

Cronologia modifiche

Versione Cronologia

14 aprile 2006

Contenuto modificato:
  • Ampliamento dei contenuti relativi all'insieme Fields.

5 dicembre 2005

Nuovo contenuto:
  • Aggiunta degli insiemi Datasets e DataSources.
Contenuto modificato:
  • Modifica degli esempi di sintassi globale.