Condividi tramite


Utilizzo di riferimenti alla raccolta di campi del set di dati nelle espressioni (Generatore report 2.0)

In ogni set di dati di un report è contenuta una raccolta Fields. La raccolta Fields rappresenta il set di campi specificati dalla query del set di dati più qualsiasi campo calcolato aggiuntivo creato dall'utente. Dopo la creazione di un set di dati, la raccolta di campi viene visualizzata nel riquadro Dati report.

In un'espressione un riferimento di campo semplice viene visualizzato nell'area di progettazione come un'espressione semplice. Quando ad esempio si trascina il campo Sales dal riquadro Dati report in una cella della tabella nell'area di progettazione, in Reporting Services viene visualizzato [Sales], che rappresenta l'espressione =Fields!Sales.Value sottostante impostata nella proprietà Value della casella di testo. Durante l'esecuzione del report, questa espressione viene valutata in Elaborazione report e i dati effettivi vengono visualizzati dall'origine dati nella casella di testo nella cella della tabella. Per ulteriori informazioni, vedere Informazioni sulle espressioni semplici e complesse (Generatore report 2.0) e Utilizzo di campi in un set di dati del report (Generatore di report 2.0).

Visualizzazione della raccolta di campi per un set di dati

Per visualizzare i singoli valori per una raccolta di campi, trascinare ogni campo in una riga di dettaglio della tabella ed eseguire il report. I riferimenti dalla riga di dettaglio di un'area dati tabella o elenco consentono di visualizzare un valore per ogni riga del set di dati.

Per visualizzare i valori di riepilogo per un campo, trascinare ogni campo numerico nell'area dati di una matrice. La funzione di aggregazione predefinita per la riga del totale è Sum, ad esempio =Sum(Fields!Sales.Value). È possibile modificare la funzione predefinita per calcolare totali diversi. Per ulteriori informazioni, vedere Utilizzo delle funzioni predefinite di report e aggregazione nelle espressioni (Generatore report 2.0).

Per visualizzare valori di riepilogo per una raccolta di campi in una casella di testo direttamente nell'area di progettazione (non appartenente a un'area dati), è necessario specificare il nome del set di dati come ambito per la funzione di aggregazione. Per un set di dati denominato SalesData, ad esempio, l'espressione seguente specifica il totale di tutti i valori per il campo Sales: =Sum(Fields!Sales,"SalesData").

Quando si utilizza la finestra di dialogo Espressione per definire un riferimento di campo semplice, è possibile selezionare la raccolta Fields nel riquadro Categoria e visualizzare l'elenco di campi disponibili nel riquadro Campo. A ogni campo sono associate diverse proprietà, ad esempio Value e IsMissing. Le proprietà rimanenti sono proprietà di campo estese predefinite che possono essere disponibili per il set di dati in base al tipo dell'origine dati.

Rilevamento di valori Null per un campo del set di dati

Per rilevare un valore Null in un campo (Nothing in Visual Basic), è possibile utilizzare la funzione IsNothing. Quando è posizionata in una casella di testo in una riga dei dettagli della tabella, l'espressione seguente esegue il test del campo MiddleName. Se il valore è Null, viene sostituito il testo "No Middle Name". In caso contrario, viene sostituito il valore del campo stesso:

=IIF(IsNothing(Fields!MiddleName.Value),"No Middle Name",Fields!MiddleName.Value)

Rilevamento di campi mancanti per query dinamiche in fase di esecuzione

Per impostazione predefinita, agli elementi della raccolta Fields sono associate due proprietà, ovvero Value e IsMissing. La proprietà IsMissing indica se un campo definito per un set di dati in fase di progettazione è incluso nei campi recuperati in fase di esecuzione. La query potrebbe ad esempio chiamare una stored procedure in cui il set di risultati varia in base a un parametro di input o la query potrebbe essere SELECT * FROM <table> in cui la definizione della tabella è stata modificata.

[!NOTA]

La proprietà IsMissing consente di rilevare le modifiche apportate allo schema del set di dati tra la fase di progettazione e quella di esecuzione per qualsiasi tipo di origine dati. IsMissing non può essere utilizzata per rilevare membri vuoti in un cubo multidimensionale e non è correlata ai concetti EMPTY e NON EMPTY del linguaggio di query MDX.

È possibile eseguire il test della proprietà IsMissing con un codice personalizzato per determinare se un campo è presente nel set di risultati. Non è possibile eseguire il test relativo a tale presenza utilizzando un'espressione con una chiamata a una funzione Visual Basic, ad esempio IIF o SWITCH, poiché in Visual Basic vengono valutati tutti i parametri presenti nella chiamata alla funzione e viene restituito un errore quando viene valutato il riferimento al parametro mancante.

Esempio per il controllo della visibilità di una colonna dinamica per un campo mancante

Per impostare un'espressione che controlla la visibilità di una colonna in cui viene visualizzato un campo in un set di dati, è necessario innanzitutto definire una funzione di codice personalizzata che restituisca un valore booleano in base alla presenza o all'assenza del campo. La funzione di codice personalizzata seguente, ad esempio, restituisce true se il campo non è presente. In caso contrario, restituisce false.

Public Function IsFieldMissing(field as Field) as Boolean
 If (field.IsMissing) Then
 Return True
  Else 
  Return False
 End If
End Function

Per utilizzare questa funzione al fine di controllare la visibilità di una colonna, impostare la proprietà Hidden della colonna sull'espressione seguente:

=Code.IsFieldMissing(Fields!FieldName)

Quando il campo non esiste, la colonna è nascosta.

Esempio per il controllo del valore della casella di testo per un campo mancante

Per sostituire il testo da scrivere al posto del valore di un campo mancante, è necessario scrivere codice personalizzato che restituisca il testo da utilizzare in sostituzione di un valore di campo quando quest'ultimo non è presente. La funzione di codice personalizzata seguente restituisce ad esempio il valore del campo se il campo esiste e il messaggio specificato dall'utente come secondo parametro se il campo non esiste:

Public Function IsFieldMissingThenString(field as Field, strMessage as String) as String
 If (field.IsMissing) Then
  Return strMessage
 Else 
  Return field.Value
  End If
End Function

Per utilizzare questa funzione in una casella di testo, aggiungere l'espressione seguente alla proprietà Value:

=Code.IsFieldMissingThenString(Fields!FieldName,"Missing")

Nella casella di testo viene visualizzato il valore del campo o il testo specificato dall'utente.

Utilizzo delle proprietà di campo estese

Le proprietà di campo estese sono proprietà aggiuntive definite in un campo dall'estensione per l'elaborazione dati determinata dal tipo di origine dati per il set di dati. Tali proprietà sono predefinite o specifiche per un tipo di origine dati.

Le proprietà predefinite sono proprietà di campo utilizzate di frequente, ad esempio, Key e UniqueName. In Reporting Services viene eseguito il mapping delle proprietà disponibili nell'origine dati a tali campi predefiniti. Le proprietà predefinite vengono visualizzate nell'elenco IntelliSense presente nella finestra di dialogo Espressione. Quando si digita il nome di un campo utilizzando la sintassi della raccolta di campi, viene visualizzato un elenco a discesa di proprietà disponibili. Utilizzare la sintassi del riferimento di campo semplice per le proprietà predefinite, ad esempio, =Fields!Sales.Value.

Le proprietà specifiche per un tipo di origine dati non vengono visualizzate nella finestra di dialogo Espressione, ma possono essere determinate quando si esplora un'origine dati nella finestra Progettazione query associata. È possibile fare riferimento a qualsiasi proprietà di campo estesa utilizzando la sintassi di raccolta =Fields!FieldName("Property"). Per esempi di proprietà di campo estese, vedere Utilizzo di proprietà di campo estese per un database di Analysis Services (Generatore report 2.0). Per provider che supportano proprietà di campo estese, vedere Creazione di set di dati del report da SQL Server Analysis Services (Generatore report 2.0), Creazione di set di dati del report da un'origine dati SAP NetWeaver BI (Generatore report 2.0) e Creazione di set di dati del report da un'origine dati Hyperion Essbase (Generatore report 2.0).

Se si specifica una proprietà non supportata per un campo specifico, tale espressione restituirà null (Nothing in Visual Basic). Se un provider di dati non supporta le proprietà di campo estese o se il campo non viene trovato durante l'esecuzione della query, 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. Un'estensione per l'elaborazione dati può sfruttare le proprietà predefinite ottimizzando le query che includono tale sintassi.