Esempi di espressioni in Reporting Services
Alcune espressioni vengono utilizzate di frequente nei report. Si tratta di espressioni che consentono di modificare l'aspetto dei dati e le proprietà degli elementi dei report, nonché di determinare la modalità di recupero dei dati. In questo argomento vengono descritte alcune espressioni che è possibile utilizzare per eseguire attività comuni in un report. Per ulteriori informazioni, vedere Creazione di espressioni in Reporting Services.
Funzioni
Molte espressioni incluse in un report contengono funzioni. Con queste funzioni è possibile formattare dati, applicare logica e accedere ai metadati del report. È possibile scrivere espressioni che utilizzano funzioni della libreria run-time di Visual Basic e degli spazi dei nomi System.Convert e System.Math. È possibile aggiungere riferimenti a funzioni da altri assembly o da codice personalizzato. È inoltre possibile utilizzare le classi di Microsoft .NET Framework, tra cui System.Text.RegularExpressions. Per ulteriori informazioni sulle funzioni di Visual Basic supportate nelle espressioni, vedere la sezione relativa alla libreria run-time di Visual Basic nel sito Web msdn.microsoft.com.
Funzioni di Visual Basic
È possibile utilizzare le funzioni di Microsoft Visual Basic per modificare i dati visualizzati nelle caselle di testo o utilizzati per parametri, proprietà o altre aree del report. In questa sezione vengono forniti esempi che illustrano alcune di queste funzioni. Per ulteriori informazioni sulle funzioni di Visual Basic, consultare la documentazione di Visual Basic.
Funzioni di data
È possibile utilizzare funzioni di Visual Basic per visualizzare la data nel report.
L'espressione seguente contiene la funzione Today, che restituisce la data corrente. Questa espressione può essere utilizzata in una casella di testo per visualizzare la data nel report oppure in un parametro per filtrare i dati in base alla data corrente.
=Today()
La funzione DateAdd è utile per fornire un intervallo di date in base a un solo parametro. L'espressione seguente restituisce una data che segue di sei mesi la data di un parametro denominato StartDate.
=DateAdd(DateInterval.Month, 6, Parameters!StartDate.Value)
L'espressione seguente contiene la funzione Year, che visualizza l'anno per una data specifica. È possibile utilizzare questa espressione per raggruppare date oppure per visualizzare l'anno come etichetta di un set di date. Questa espressione restituisce l'anno per un gruppo specifico di date di ordini. Per modificare le date è possibile utilizzare anche la funzione Month e altre funzioni. Per ulteriori informazioni, vedere la documentazione di Visual Basic .NET.
=Year(Fields!OrderDate.Value)
Funzioni per i valori stringa
È possibile utilizzare le funzioni di Visual Basic per modificare le stringhe dei report.
È possibile combinare più campi utilizzando operatori di concatenamento e costanti di Visual Basic. L'espressione seguente restituisce due campi, ognuno su una riga separata nella stessa casella di testo.
=Fields!FirstName.Value & vbCrLf & Fields!LastName.Value
È possibile formattare date e numeri in una stringa tramite la funzione Format. L'espressione seguente visualizza il valore dei parametri StartDate ed EndDate nel formato di data estesa.
=Format(Parameters!StartDate.Value, "D") & " through " & Format(Parameters!EndDate.Value, "D")
Se la casella di testo contiene solo una data o un numero, per applicare la formattazione è consigliabile utilizzare la proprietà Format della casella di testo, anziché la funzione Format nella casella di testo.
Le funzioni Right, Len e InStr sono utili per ottenere sottostringhe, ad esempio per ottenere il solo nome utente dalla stringa DOMINIO\nomeutente. L'espressione seguente restituisce la parte della stringa a destra del carattere barra rovesciata (\) da un parametro denominato User:
=Right(Parameters!User.Value, Len(Parameters!User.Value) - InStr(Parameters!User.Value, "\"))
L'espressione seguente restituisce lo stesso valore dell'espressione precedente, ma utilizza membri della classe String di .NET Framework anziché funzioni di Visual Basic:
=Parameters!User.Value.Substring(Parameters!User.Value.IndexOf("\")+1, Parameters!User.Value.Length-Parameters!User.Value.IndexOf("\")-1)
È possibile visualizzare i valori selezionati di un parametro multivalore. Nell'esempio seguente viene utilizzata la funzione Join per concatenare i valori selezionati del parametro MySelection in un'unica stringa che può essere impostata come espressione per il valore di una casella di testo in un elemento del report.
= Join(Parameters!MySelection.Value)
Se la casella di testo contiene solo una data o un numero, per applicare la formattazione è consigliabile utilizzare la proprietà Format della casella di testo, anziché la funzione Format nella casella di testo.
Le funzioni Regex della classe System.Text.RegularExpressions di .NET Framework sono utili per modificare il formato di stringhe esistenti, ad esempio per formattare un numero di telefono. Nell'espressione seguente viene utilizzata la funzione Replace per modificare il formato di un numero di telefono a dieci cifre dalla forma nnn-nnn-nnnn alla forma (nnn) nnn-nnnn:
=System.Text.RegularExpressions.Regex.Replace(Fields!Phone.Value, "(\d{3})[ -.]*(\d{3})[ -.]*(\d{4})", "($1) $2-$3")
Funzioni di conversione
È possibile utilizzare le funzioni di Visual Basic per convertire i tipi di dati in base alle necessità del report.
È possibile utilizzare le funzioni di Visual Basic per convertire i tipi di dati in base alle necessità. Le funzioni di conversione vengono spesso utilizzate per eliminare o formattare i messaggi di tipo #Errore in un report. L'espressione seguente consente di visualizzare il numero di valori selezionati per il parametro multivalore MySelection.
=CStr(Parameters!MySelection.Count)
Funzioni condizionali
È possibile utilizzare funzioni di Visual Basic per valutare un valore di input e restituire un altro valore a seconda del risultato.
La funzione Iif restituisce uno di due valori a seconda del fatto che l'espressione sia vera o falsa. L'espressione seguente utilizza la funzione Iif per restituire un valore booleano True se il valore LineTotal è maggiore di 100. In caso contrario, restituisce False:
=Iif(Fields!LineTotal.Value > 100, True, False)
L'espressione seguente utilizza più funzioni Iif, denominate anche funzioni lif nidificate, per restituire uno fra tre valori possibili in base al valore di PctComplete.
=Iif(Fields!PctComplete.Value >= .8, "Green", Iif(Fields!PctComplete.Value >= .5, "Amber", "Red"))
Anche l'espressione seguente restituisce uno fra tre valori possibili in base al valore di PctComplete, ma utilizza la funzione Switch, che restituisce il valore associato alla prima espressione di una serie che restituisce True:
=Switch(Fields!PctComplete.Value >= .8, "Green", Fields!PctComplete.Value >= .5, "Amber", Fields!PctComplete.Value < .5, "Red")
L'espressione seguente testa il valore del campo ImportantDate e restituisce "Red" se è passata più di una settimana, in caso contrario "Blue". Questa espressione può essere utilizzata per controllare la proprietà Color di una casella di testo in un elemento del report.
=IIF(DateDiff("d",Fields!ImportantDate.Value, Now())>7,"Red","Blue")
L'espressione seguente testa il valore di un campo PhoneNumber per verificare se è null (Nothing in Visual Basic) e restituisce "No Value" anziché il valore Null. Questa espressione può essere utilizzata per controllare il valore di una casella di testo in un elemento del report.
=IIF(Fields!PhoneNumber.Value Is Nothing,"No Value",Fields!PhoneNumber.Value)
L'espressione seguente verifica il valore del campo Department e restituisce il nome di un sottoreport o null (Nothing in Visual Basic). Questa espressione può essere utilizzata per i sottoreport drill-through condizionali.
=Iif(Fields!Department.Value = "Development", "EmployeeReport", Nothing)
L'espressione seguente verifica se un campo di valore è Null. Questa espressione può essere utilizzata per controllare la proprietà Hidden di un elemento immagine del report.
=Iif(IsNothing(Fields!LargePhoto.Value),True,False)
Funzioni per i report
In Reporting Services sono disponibili ulteriori funzioni che possono essere utilizzate per modificare i dati in un report. In questa sezione vengono forniti esempi di due funzioni per i report. Per ulteriori informazioni sulle funzioni per i report ed esempi, vedere Utilizzo di funzioni di report nelle espressioni (Reporting Services).
La funzione Sum può calcolare il totale dei valori di un raggruppamento o di un'area dati. Questa funzione può essere utile nell'intestazione o nel piè di pagina di un gruppo di tabella. L'espressione seguente visualizza la somma dei dati del raggruppamento o area dati Order:
=Sum(Fields!LineTotal.Value, "Order")
Un'espressione contenente la funzione RowNumber, se utilizzata in una casella di testo in un'area dati, visualizza il numero di riga di ogni istanza della casella di testo in cui compare l'espressione. Questa funzione può essere utile per numerare le righe di una tabella, ma anche per attività più complesse, ad esempio per l'inserimento di interruzioni di pagina in base al numero di righe. Per ulteriori informazioni, vedere "Interruzioni di pagina" di seguito in questo argomento.
L'espressione seguente visualizza il numero di riga a partire dalla prima riga dell'area dati più esterna fino all'ultima. La parola chiave Nothing indica che il conteggio inizierà dalla prima riga dell'area dati più esterna. Per iniziare il conteggio nelle aree dati figlio, utilizzare il nome dell'area dati.=RowNumber(Nothing)
Aspetto dei dati del report
È possibile utilizzare le espressioni per modificare l'aspetto dei dati in un report. È possibile, ad esempio, visualizzare i valori di due campi in una sola casella di testo, visualizzare informazioni sul report o intervenire sulla modalità di inserimento delle interruzioni di pagina nel report.
Intestazioni di pagina e piè di pagina
Se si desidera che nel piè di pagina del report vengano visualizzati il nome del report e il numero di pagina, è possibile utilizzare le espressioni seguenti:
L'espressione seguente restituisce il nome del report e la data di esecuzione. Può essere inserita in una casella di testo nel piè di pagina del report oppure nel corpo del report. Per la formattazione dell'ora viene utilizzata la stringa di formattazione di .NET Framework per la data breve:
=Globals.ReportName & ", dated " & Format(Globals.ExecutionTime, "d")
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
È inoltre possibile utilizzare espressioni nell'intestazione o nel piè di pagina per fare riferimento a elementi presenti nel corpo del report. Negli esempi seguenti viene illustrato come visualizzare il primo e l'ultimo valore di una pagina nell'intestazione di pagina. Si suppone che sia presente un'area dati contenente una casella di testo denominata LastName.
L'espressione seguente, inserita in una casella di testo a sinistra dell'intestazione di pagina, restituisce il primo valore della casella di testo LastName nella pagina:
=First(ReportItems("LastName").Value)
L'espressione seguente, inserita in una casella di testo a destra dell'intestazione di pagina, restituisce l'ultimo valore della casella di testo LastName nella pagina:
=Last(ReportItems("LastName").Value)
È possibile applicare funzioni di aggregazione a un riferimento a un elemento del report in un'intestazione o in un piè di pagina, tuttavia non è possibile applicare una funzione di aggregazione a un riferimento a un elemento del report nel corpo del report. Nell'esempio seguente viene illustrato come visualizzare un totale di pagina. Si suppone che sia presente un'area dati contenente una casella di testo denominata Cost.
L'espressione seguente, inserita nell'intestazione o nel piè di pagina, restituisce la somma dei valori presenti nella casella di testo Cost nella pagina:
=Sum(ReportItems("Cost").Value)
[!NOTA] In un'intestazione o piè di pagina è possibile fare riferimento a un solo elemento del report in ogni espressione.
Interruzioni di pagina
In alcuni report può essere necessario inserire un'interruzione di pagina alla fine di un numero di righe specificato anziché alla fine di gruppi o elementi del report oppure in aggiunta a questi. A tale scopo è necessario creare un gruppo in un'area dati, normalmente all'esterno dell'area dettagli, aggiungere un'interruzione di pagina al gruppo e quindi aggiungere un'espressione di raggruppamento per eseguire il raggruppamento in base al numero di righe specificato.
L'espressione seguente, se inserita nell'espressione di raggruppamento, assegna un numero a ogni set di 25 righe. Se si definisce un'interruzione di pagina per il gruppo, si ottiene un'interruzione di pagina ogni 25 righe.
=Int((RowNumber(Nothing)-1)/25)
Proprietà
Le espressioni non vengono utilizzate solo per visualizzare dati in caselle di testo. Possono essere utilizzate anche per modificare la modalità di applicazione delle proprietà agli elementi del report. È possibile modificare le informazioni sullo stile di un elemento del report oppure modificarne la visibilità.
Formattazione
È possibile utilizzare le espressioni per modificare l'aspetto degli elementi di un report.
L'espressione seguente, se utilizzata nella proprietà Color di una casella di testo, cambia il colore del testo a seconda del valore del campo Profit:
=Iif(Fields!Profit.Value < 0, "Red", "Black")
L'espressione seguente, se utilizzata nella proprietà BackgroundColor di un elemento del report in un'area dati, alterna il verde chiaro e il bianco come colore di sfondo di ogni riga:
=Iif(RowNumber(Nothing) Mod 2, "PaleGreen", "White")
Se si utilizza un'espressione per uno scopo specifico, potrebbe essere necessario indicare il set di dati per la funzione di aggregazione.
=Iif(RowNumber("Employees") Mod 2, "PaleGreen", "White")
Visibilità
È possibile visualizzare e nascondere elementi in un report utilizzando le proprietà di visibilità per gli elementi del report. In un'area dati, ad esempio una tabella, è possibile nascondere inizialmente le righe di dettaglio in base al valore di un'espressione.
L'espressione seguente, se utilizzata per la visibilità iniziale delle righe di dettaglio in un gruppo, visualizza le righe di dettaglio per tutte le vendite con un valore superiore al 90 percento nel campo PctQuota:
=Iif(Fields!PctQuota.Value>.9, False, True)
L'espressione seguente, quando impostata nella proprietà Visibility, Hidden di una tabella, mostra la tabella solo se questa contiene più di dodici righe:
=IIF(CountRows()>12,true,false)
Dati dei report
È possibile utilizzare le espressioni per modificare i dati utilizzati nei report. È possibile fare riferimento a parametri e ad altre informazioni dei report, nonché modificare la query utilizzata per recuperare i dati per il report.
Parametri
È possibile utilizzare espressioni in un parametro per modificare il valore predefinito del parametro. È possibile, ad esempio, utilizzare un parametro per filtrare i dati relativi a un utente specifico sulla base dell'ID utente utilizzato per eseguire il report.
L'espressione seguente, se utilizzata come valore predefinito di un parametro, recupera l'ID utente della persona che esegue il report:
=User!UserID
È possibile utilizzare l'espressione seguente per fare riferimento al parametro incluso in un parametro di query, un'espressione di filtro, una casella di testo o altre aree del report. In questo esempio si suppone che il parametro sia denominato User:
=Parameters!User.Value
Codice personalizzato
È possibile utilizzare codice personalizzato in un report. Il codice personalizzato può essere incorporato in un report o archiviato in un assembly personalizzato utilizzato nel report. Per ulteriori informazioni sul codice personalizzato, vedere Utilizzo di riferimenti a codice personalizzato nelle espressioni (Reporting Services).
L'esempio seguente consente di richiamare il metodo incorporato ToUSD per la conversione del valore del campo StandardCost in un valore in dollari:
=Code.ToUSD(Fields!StandardCost.Value)
Nell'esempio seguente viene illustrato come definire alcune variabili e costanti personalizzate.
[Visual Basic]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 visualizzazione delle costanti dell'editor di espressioni, in cui sono presenti solo le costanti predefinite, è possibile aggiungere un riferimento a esse da qualsiasi espressione, come illustrato negli esempi seguenti. Questi elementi vengono trattati come dati di tipo Variant.
[Visual Basic]=Code.MyNote =Code.NCopies =Code.MyVersion =Code.MyDoubleVersion
Nell'esempio seguente viene chiamato il metodo incorporato FixSpelling, che sostituisce
Bicycle
per tutte le occorrenze del testoBike
in SubCategory.Value.=Code.FixSpelling(Fields!SubCategory.Value)
Il codice seguente, quando è incorporato in una definizione del report, mostra un'implementazione del metodo FixSpelling. Alla prima esecuzione di questo codice personalizzato, un oggetto MessageBox visualizza il testo sostituito. In questo esempio viene illustrato come fare riferimento alla classe .NET Framework StringBuilder e alla classe System.Windows.Forms.MessageBox. È necessario aggiungere un riferimento alle proprietà del report per System.Windows.Forms. Per ulteriori informazioni, vedere Procedura: Aggiunta di codice a un report (Progettazione report) e Procedura: Aggiunta di un riferimento a un assembly in un report (Progettazione report).
[Visual Basic]Dim firstTime As Boolean = True 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") If firstTime Then System.Windows.Forms.MessageBox.Show(strBuilder.ToString()) ' or MsgBox(strBuilder.ToString()) firstTime = False End If Return strBuilder.ToString() Else : Return s End If End Function
Vedere anche
Concetti
Utilizzo di funzioni di report nelle espressioni (Reporting Services)
Guida in linea e informazioni
Cronologia modifiche
Versione | Cronologia |
---|---|
14 aprile 2006 |
|
5 dicembre 2005 |
|