Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Le espressioni vengono utilizzate di frequente nei report per controllare il contenuto e l'aspetto del report. Le espressioni vengono scritte in Microsoft Visual Basic e possono usare funzioni predefinite, codice personalizzato, variabili di report e di gruppo e variabili definite dall'utente. Le espressioni iniziano con un segno di uguale (=). Per altre informazioni sull'editor espressioni e sui tipi di riferimenti che è possibile includere, vedere Uso delle espressioni nei report (Generatore report e SSRS) e Aggiungere un'espressione (Generatore report e SSRS).
Importante
Quando RDL Sandboxing è abilitato, al momento della pubblicazione del report nel testo dell'espressione è possibile utilizzare solo determinati tipi e membri. Per altre informazioni, vedere Enable and Disable RDL Sandboxing.
In questo argomento vengono forniti alcuni esempi di espressioni che è possibile utilizzare per attività comuni in un report.
Funzioni di Visual Basic Esempi di funzioni di data, stringa, conversione e condizionali di Visual Basic.
Funzioni di report Esempi relativi a funzioni di aggregazione e altre funzioni di report predefinite.
Aspetto dei dati del report Esempi relativi alla modifica dell'aspetto di un report.
Proprietà Esempi relativi all'impostazione delle proprietà degli elementi del report per il controllo del formato o della visibilità.
Parametri Esempi relativi all'utilizzo di parametri in un'espressione.
Codice personalizzato Esempi di codice personalizzato incorporato.
Per esempi di espressioni per utilizzi specifici, vedere gli argomenti seguenti:
Esempi di espressioni di raggruppamento (Generatore report e SSRS)
Riferimenti a raccolte di variabili di report e di gruppo (Generatore report e SSRS)
Per altre informazioni sulle espressioni semplici e complesse, per sapere dove è possibile usare le espressioni e quali tipi di riferimenti è possibile includere in un'espressione, vedere gli argomenti contenuti in Espressioni (Generatore report e SSRS). Per altre informazioni sul contesto in cui le espressioni vengono valutate per calcolare le aggregazioni, vedere Ambito di espressioni per totali, aggregazioni e raccolte predefinite (Generatore report e SSRS).
Per ulteriori informazioni su come scrivere espressioni in cui vengono utilizzati molti operatori e funzioni che si utilizzano anche per esempi di espressione in questo argomento, ma nel contesto di scrittura di un report, vedere Tutorial: Introducing Expressions.
Nell'editor espressioni è inclusa una vista gerarchica delle funzioni predefinite. Quando si seleziona la funzione, nel riquadro Valori viene visualizzato un esempio di codice. Per altre informazioni, vedere la finestra di dialogo Espressione o la finestra di dialogo Espressione (Report Builder).
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 usano funzioni dalla libreria di runtime di Microsoft Visual Basic e dagli spazi dei nomi Convert e Math. È possibile aggiungere riferimenti a funzioni da altri assembly o da codice personalizzato. È anche possibile usare le classi di Microsoft .NET Framework, tra cui System.Text.RegularExpressions.
Funzioni di Visual Basic
È possibile usare le funzioni di Visual Basic per manipolare i dati visualizzati nelle caselle di testo o usati per parametri, proprietà o altre aree del report. In questa sezione vengono forniti esempi che illustrano alcune di queste funzioni. Per altre informazioni, vedere la pagina relativa ai membri delle librerie di runtime di Visual Basic in MSDN.
.NET Framework offre numerose opzioni di formato personalizzato, ad esempio per formati di data specifici. Per ulteriori informazioni, vedere Formattazione dei tipi di dati in MSDN.
Funzioni matematiche
- La funzione
Round
risulta utile per l'arrotondamento dei numeri al numero intero più vicino. L'espressione seguente comporta un arrotondamento del valore 1.3 a 1:
= Round(1.3)
È anche possibile scrivere un'espressione per arrotondare un valore a un multiplo specificato, come avviene con la funzione MRound
di Excel. Moltiplicare il valore di un fattore che crea un numero intero, arrotondare il numero e dividere il risultato per lo stesso fattore. Per arrotondare ad esempio 1.3 al multiplo più vicino di .2 (1.4), utilizzare l'espressione seguente:
= Round(1.3*5)/5
Funzioni di data
- La funzione
Today
fornisce 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 successiva di sei mesi alla data di un parametro denominato StartDate.
=DateAdd(DateInterval.Month, 6, Parameters!StartDate.Value)
- La funzione
Year
visualizza l'anno per una determinata data. È 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 di vendita. Per modificare le date è possibile utilizzare anche la funzioneMonth
e altre funzioni. Per altre informazioni, vedere la documentazione di Visual Basic.
=Year(Fields!OrderDate.Value)
- È possibile combinare le funzioni in un'espressione per personalizzare il formato. L'espressione seguente cambia il formato di una data da mese-giorno-anno in mese-settimana-numero settimana, ad esempio 12/23/2009 in dicembre settimana 3:
=Format(Fields!MyDate.Value, "MMMM") & " Week " &
(Int(DateDiff("d", DateSerial(Year(Fields!MyDate.Value),
Month(Fields!MyDate.Value),1), Fields!FullDateAlternateKey.Value)/7)+1).ToString
Se utilizzata come campo calcolato in un set di dati, questa espressione consente di aggregare i valori di un grafico in base alla settimana in ogni mese.
- L'espressione seguente applica al valore SellStartDate il formato MMM-AA. Il campo SellStartDate è un tipo di dati datetime.
=FORMAT(Fields!SellStartDate.Value, "MMM-yy")
- L'espressione seguente applica al valore SellStartDate il formato gg/MM/aaaa. Il campo SellStartDate è un tipo di dati datetime.
=FORMAT(Fields!SellStartDate.Value, "dd/MM/yyyy")
- La funzione
CDate
converte il valore in una data. La funzioneNow
restituisce un valore di data che contiene la data e l'ora correnti in base al sistema.DateDiff
restituisce un valore Long che specifica il numero di intervalli di tempo tra due valori di data.
Nell'esempio seguente viene visualizzata la data di inizio dell'anno in corso
=DateAdd(DateInterval.Year,DateDiff(DateInterval.Year,CDate("01/01/1900"),Now()),CDate("01/01/1900"))
- Nell'esempio seguente viene visualizzata la data di inizio del mese precedente basato sul mese corrente.
=DateAdd(DateInterval.Month,DateDiff(DateInterval.Month,CDate("01/01/1900"),Now())-1,CDate("01/01/1900"))
- L'espressione seguente genera gli anni di intervallo tra SellStartDate e LastReceiptDate. Questi campi si trovano in due set di dati diversi, DataSet1 e DataSet2. La funzione di aggregazione First (Generatore report e SSRS) restituisce il primo valore di SellStartDate in DataSet1 e il primo valore di LastReceiptDate in DataSet2.
=DATEDIFF("yyyy", First(Fields!SellStartDate.Value, "DataSet1"), First(Fields!LastReceiptDate.Value, "DataSet2"))
- La funzione
DatePart
restituisce un valore Integer contenente il componente specificato di un determinato valore Data. L'espressione seguente restituisce l'anno del primo valore di SellStartDate in DataSet1. L'ambito del set di dati è specificato poiché il report include più set di dati.
=Datepart("yyyy", First(Fields!SellStartDate.Value, "DataSet1"))
- La funzione
DateSerial
restituisce un valore Data che rappresenta un anno, un mese, un giorno specificato, con le informazioni sull'ora impostate su mezzanotte. Nell'esempio seguente viene visualizzata la data di fine del mese precedente, basato sul mese corrente.
=DateSerial(Year(Now()), Month(Now()), "1").AddDays(-1)
- Le espressioni seguenti mostrano diverse date, in base a un valore di parametro di data selezionato dall'utente.
Descrizione esempio | Esempio |
---|---|
Ieri | =DateSerial(Year(Parameters!TodaysDate.Value),Month(Parameters!TodaysDate.Value),Day(Parameters!TodaysDate.Value)-1) |
Due giorni fa | =DateSerial(Year(Parameters!TodaysDate.Value),Month(Parameters!TodaysDate.Value),Day(Parameters!TodaysDate.Value)-2) |
Un mese fa | =DateSerial(Year(Parameters!TodaysDate.Value),Month(Parameters!TodaysDate.Value)-1,Day(Parameters!TodaysDate.Value)) |
Due mesi fa | =DateSerial(Year(Parameters!TodaysDate.Value),Month(Parameters!TodaysDate.Value)-2,Day(Parameters!TodaysDate.Value)) |
Un anno fa | =DateSerial(Year(Parameters!TodaysDate.Value)-1,Month(Parameters!TodaysDate.Value),Day(Parameters!TodaysDate.Value)) |
Due anni fa | =DateSerial(Year(Parameters!TodaysDate.Value)-2,Month(Parameters!TodaysDate.Value),Day(Parameters!TodaysDate.Value)) |
Funzioni di stringa
- Combinare più campi usando operatori di concatenazione e costanti di Visual Basic. L'espressione seguente restituisce due campi, ognuno su una riga distinta 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 e 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, è necessario utilizzare la proprietà Format della casella di testo per applicare la formattazione anziché la Format
funzione all'interno della casella di testo.
- Le
Right
funzioni ,Len
eInStr
sono utili per restituire una sottostringa, ad esempio, tagliandoil nome utenteDI DOMINIO\ solo con il nome utente. 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 di quella precedente, usando i membri della classe String di .NET Framework anziché le 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 usata la
Join
funzione per concatenare i valori selezionati del parametro MySelection in una singola stringa che può essere impostata come espressione per il valore di una casella di testo in un elemento del report:
= Join(Parameters!MySelection.Value)
Nell'esempio riportato di seguito viene eseguita la stessa operazione dell'esempio precedente e viene visualizzata una stringa di testo prima dell'elenco dei valori selezionati.
="Report for " & JOIN(Parameters!MySelection.Value, " & ")
- Le
Regex
funzioni di .NET Framework System.Text.RegularExpressions sono utili per modificare il formato delle stringhe esistenti, ad esempio la formattazione di un numero di telefono. L'espressione seguente usa laReplace
funzione per modificare il formato di un numero di telefono a dieci cifre in un campo da "nnn-nnn-nnnn" a "(nnn) nnn-nnnn":
=System.Text.RegularExpressions.Regex.Replace(Fields!Phone.Value, "(\d{3})[ -.]*(\d{3})[ -.]*(\d{4})", "($1) $2-$3")
Nota
Verificare che nel valore di Fields!Phone.Value non siano contenuti spazi aggiuntivi e che sia di tipo String.
Ricerca
- Specificando un campo chiave è possibile utilizzare la funzione
Lookup
per recuperare un valore da un set di dati per una relazione uno-a-uno, ad esempio, una coppia chiave-valore. Nell'espressione seguente viene visualizzato il nome prodotto da un set di dati ("Product"), in base all'identificatore del prodotto con cui eseguire la corrispondenza:
=Lookup(Fields!PID.Value, Fields!ProductID.Value, Fields!ProductName.Value, "Product")
LookupSet
- Specificando un campo chiave è possibile utilizzare la funzione
LookupSet
per recuperare un set di valori da un set di dati per una relazione uno-a-molti. Ad esempio una persona può disporre di più numeri di telefono. Nell'esempio seguente, si supponga che nel set di dati PhoneList sia contenuto un identificatore della persona e un numero di telefono in ogni riga. TramiteLookupSet
viene restituita una matrice di valori. L'espressione seguente combina i valori restituiti in un'unica stringa e visualizza l'elenco di numeri di telefono per la persona specificata da ContactID:
=Join(LookupSet(Fields!ContactID.Value, Fields!PersonID.Value, Fields!PhoneNumber.Value, "PhoneList"),",")
Funzioni di conversione
È possibile usare le funzioni di Visual Basic per convertire un campo di un tipo di dati in un tipo di dati diverso. Le funzioni di conversione possono essere utilizzate per convertire il tipo di dati predefinito di un campo nel tipo di dati necessario per i calcoli oppure per combinare testo.
- L'espressione seguente converte la costante 500 nel tipo Decimal per poterla confrontare con un tipo di dati money di Transact-SQL nel campo del valore di un'espressione di filtro.
=CDec(500)
- L'espressione seguente visualizza il numero di valori selezionati per il parametro multivalore MySelection.
=CStr(Parameters!MySelection.Count)
Funzioni condizionali
- La funzione
Iif
restituisce uno di due valori a seconda che l'espressione sia True o False. Nell'espressione seguente viene utilizzata la funzioneIif
per restituire un valore booleanoTrue
se il valoreLineTotal
è maggiore di 100. In caso contrario, viene restituitoFalse
:
=IIF(Fields!LineTotal.Value > 100, True, False)
- È possibile utilizzare più funzioni
IIF
, note anche come funzioni IIF nidificate, per restituire uno di tre valori possibili a seconda del valore diPctComplete
. L'espressione seguente può essere inserita nel colore di riempimento di una casella di testo per modificare il colore di sfondo in base al valore della casella di testo.
=IIF(Fields!PctComplete.Value >= 10, "Green", IIF(Fields!PctComplete.Value >= 1, "Blue", "Red"))
I valori maggiori o uguali a 10 vengono visualizzati con uno sfondo verde, quelli compresi tra 1 e 9 con uno sfondo blu e quelli minori di 1 con uno sfondo rosso.
- Per ottenere la stessa funzionalità, è anche possibile utilizzare la funzione
Switch
. La funzioneSwitch
risulta utile quando è necessario testare tre o più condizioni. La funzioneSwitch
restituisce il valore associato alla prima espressione in una serie che restituisce True:
=Switch(Fields!PctComplete.Value >= 10, "Green", Fields!PctComplete.Value >= 1, "Blue", Fields!PctComplete.Value = 1, "Yellow", Fields!PctComplete.Value <= 0, "Red",)
I valori maggiori o uguali a 10 vengono visualizzati con uno sfondo verde, quelli compresi tra 1 e 9 con uno sfondo blu, quelli uguali a 1 con uno sfondo giallo e quelli minori o uguali a 0 con uno sfondo rosso.
- Viene verificato il valore del campo
ImportantDate
e viene restituito "Red" se è antecedente a una settimana e "Blue" in caso contrario. 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")
- Testare il valore del
PhoneNumber
campo e restituire "Nessun valore" se ènull
(Nothing
in Visual Basic); in caso contrario, restituire il valore del numero di telefono. 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)
- Testare il valore del
Department
campo e restituire un nome del sottoreport o unnull
(Nothing
in Visual Basic). Questa espressione può essere utilizzata per i sottoreport drill-through condizionali.
=IIF(Fields!Department.Value = "Development", "EmployeeReport", Nothing)
- Viene verificato se il valore di un campo è Null. Questa espressione può essere utilizzata per controllare la proprietà
Hidden
di un elemento immagine del report. Nell'esempio seguente l'immagine specificata dal campo [LargePhoto] viene visualizzata solo se il valore del campo non è Null.
=IIF(IsNothing(Fields!LargePhoto.Value),True,False)
- La funzione
MonthName
restituisce il valore di stringa contenente il nome del mese specificato. Nell'esempio seguente viene visualizzato ND nel campo Mese quando il campo contiene il valore 0.
IIF(Fields!Month.Value=0,"NA",MonthName(IIF(Fields!Month.Value=0,1,Fields!Month.Value)))
Funzioni di report
In un'espressione è possibile aggiungere un riferimento a funzioni per i report aggiuntive tramite le quali vengono modificati i dati di un report. In questa sezione vengono forniti esempi di due funzioni per i report. Per altre informazioni sulle funzioni di report ed esempi, vedere Riferimento a funzioni di aggregazione (Generatore report e SSRS).
Sum
- La funzione
Sum
consente di calcolare il totale dei valori di un gruppo o di un'area dati. Può risultare utile nell'intestazione o nel piè di pagina di un gruppo. L'espressione seguente visualizza la somma dei dati del gruppo o dell'area dati Order:
=Sum(Fields!LineTotal.Value, "Order")
- È possibile utilizzare la funzione
Sum
anche per i calcoli di aggregazione condizionali. Se ad esempio un set di dati include un campo denominato State, con i valori possibili Not Started, Started e Finished, l'espressione seguente, se inserita nell'intestazione di un gruppo, calcola la somma aggregata solo per il valore Finished:
=Sum(IIF(Fields!State.Value = "Finished", 1, 0))
RowNumber
- 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'ambito specificato per RowNumber
controlla quando inizia la rinumerazione. La parola chiave Nothing
indica che il conteggio inizierà dalla prima riga dell'area dati più esterna. Per iniziare il conteggio all'interno di aree dati nidificate, utilizzare il nome dell'area dati. Per iniziare il conteggio in un gruppo, utilizzare il nome del gruppo.
=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. L'ora è formattata con la stringa di formattazione per la data breve di .NET Framework:
=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
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, se 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)
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. Inoltre, nelle espressioni di intestazione e piè di pagina è possibile fare riferimento al nome della casella di testo, ma non all'espressione di dati effettiva al suo interno.
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, creare un gruppo che contiene i gruppi o i record di dettaglio desiderati, aggiungere un'interruzione di pagina al gruppo, 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.
=Ceiling(RowNumber(Nothing)/25)
Per consentire all'utente di impostare un valore relativo al numero di righe per pagina, creare un parametro denominato RowsPerPage
su cui basare l'espressione di raggruppamento, come illustrato nell'espressione seguente:
=Ceiling(RowNumber(Nothing)/Parameters!RowsPerPage.Value)
Per altre informazioni sull'impostazione di interruzioni di pagina per un gruppo, vedere Aggiunta di un'interruzione di pagina (Generatore report e SSRS).
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
- L'espressione seguente, se usata 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")
È anche possibile usare la variabile oggetto di Visual Basic Me
. Questa variabile consente di fare riferimento in un altro modo al valore di una casella di testo.
=Iif(Me.Value < 0, "Red", "Black")
- L'espressione seguente, se usata 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 un ambito specifico, potrebbe essere necessario indicare il set di dati per la funzione di aggregazione.
=Iif(RowNumber("Employees") Mod 2, "PaleGreen", "White")
Nota
I colori disponibili provengono dall'enumerazione KnownColor di .NET Framework.
Colori del grafico
Per specificare i colori per un grafico con forme, è possibile utilizzare codice personalizzato per controllare l'ordine in base al quale viene eseguito il mapping dei colori ai valori dei punti dati. In questo modo è possibile utilizzare colori coerenti per più grafici con gli stessi gruppi di categorie. Per altre informazioni, vedere Specifica di colori coerenti in più grafici con forme (Generatore report e SSRS).
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, se impostata nella proprietà Hidden di una tabella, visualizza la tabella solo se contiene più di 12 righe:
=IIF(CountRows()>12,false,true)
- L'espressione seguente, se impostata nella
Hidden
proprietà di una colonna, mostra la colonna solo se il campo esiste nel set di dati del report dopo il recupero dei dati dall'origine dati:
=IIF(Fields!Column_1.IsMissing, true, false)
URL
È possibile personalizzare gli URL utilizzando i dati del report e inoltre controllare in base a condizioni specifiche se gli URL vengono aggiunti come azione per una casella di testo.
- L'espressione seguente, se utilizzata come azione per una casella di testo, genera un URL personalizzato in cui è specificato il campo del set di dati
EmployeeID
come parametro.
="http://adventure-works/MyInfo?ID=" & Fields!EmployeeID.Value
Per altre informazioni, vedere Aggiunta di un collegamento ipertestuale a un URL (Generatore report e SSRS).
- L'espressione seguente controlla in base a specifiche condizioni se aggiungere un URL in una casella di testo. L'espressione dipende da un parametro denominato
IncludeURLs
che consente all'utente di decidere se includere o meno URL attivi in un report. Questa espressione viene impostata come azione per una casella di testo. Se si imposta il parametro su False e quindi si visualizza il report, è possibile esportare il report in Microsoft Excel senza collegamenti ipertestuali.
=IIF(Parameters!IncludeURLs.Value,"http://adventure-works.com/productcatalog",Nothing)
Dati del 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. Ad esempio, è possibile 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
- Per fare riferimento a un parametro incluso in un parametro di query, un'espressione di filtro, una casella di testo o un'altra area del report, utilizzare la raccolta globale
Parameters
. In questo esempio si presuppone che il parametro sia denominato Department:
=Parameters!Department.Value
- I parametri possono essere creati in un report ma impostati come nascosti. Quando il report viene eseguito nel server di report, il parametro non viene visualizzato sulla barra degli strumenti e il lettore del report non può modificare il valore predefinito. È possibile utilizzare un parametro nascosto impostato su un valore predefinito come costante personalizzata. È possibile utilizzare questo valore in qualsiasi espressione, anche in un'espressione di campo. L'espressione seguente identifica il campo specificato dal valore del parametro predefinito per il parametro denominato ParameterField:
=Fields(Parameters!ParameterField.Value).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 altre informazioni sul codice personalizzato, vedere Riferimenti a codice personalizzato e ad assembly in espressioni in Progettazione report (SSRS).
Utilizzo delle variabili di gruppo per l'aggregazione personalizzata
È possibile inizializzare il valore di una variabile di gruppo locale all'interno di un particolare ambito del gruppo e quindi includere un riferimento a tale variabile nelle espressioni. Una delle modalità di utilizzo di una variabile di gruppo con codice personalizzato consiste nell'implementare un'aggregazione personalizzata. Per ulteriori informazioni, vedere Using Group Variables in Reporting Services 2008 for Custom Aggregation.
Per altre informazioni sulle variabili, vedere Riferimenti a raccolte di variabili di report e di gruppo (Generatore report e SSRS).
Eliminazione di valori Null o zero in fase di esecuzione
Alcuni valori di un'espressione possono restituire un valore Null o non definito in fase di elaborazione del report. In questo modo possono verificarsi errori di run-time che generano la visualizzazione di #Errore nella casella di testo anziché dell'espressione valutata. Questo comportamento influisce in modo particolare sulla funzione IIF
in quanto, a differenza di un'istruzione If-Then-Else, ogni parte dell'istruzione IIF
(incluse le chiamate a funzioni) viene valutata prima di essere passata alla routine che verifica se il risultato è true
o false
. L'istruzione =IIF(Fields!Sales.Value is NOTHING, 0, Fields!Sales.Value)
genera #Errore nel report visualizzabile se Fields!Sales.Value
è NOTHING.
Per evitare questa condizione, utilizzare una delle strategie seguenti:
- Impostare il numeratore su 0 e il denominatore su 1 se il valore per il campo B è 0 o non definito; in caso contrario, impostare il numeratore sul valore per il campo A e il denominatore sul valore per il campo B.
=IIF(Field!B.Value=0, 0, Field!A.Value / IIF(Field!B.Value =0, 1, Field!B.Value))
- Utilizzare una funzione di codice personalizzata per restituire il valore per l'espressione. Nell'esempio seguente viene restituita la differenza in percentuale tra un valore corrente e uno precedente. Questa opzione può essere usata per calcolare la differenza tra due valori successivi e gestisce la maiuscola del primo confronto (quando non è presente alcun valore precedente) e case se il valore precedente o il valore corrente è
null
(Nothing
in Visual Basic).
Public Function GetDeltaPercentage(ByVal PreviousValue, ByVal CurrentValue) As Object
If IsNothing(PreviousValue) OR IsNothing(CurrentValue) Then
Return Nothing
Else if PreviousValue = 0 OR CurrentValue = 0 Then
Return Nothing
Else
Return (CurrentValue - PreviousValue) / CurrentValue
End If
End Function
Nell'espressione seguente viene mostrato come chiamare questo codice personalizzato da una casella di testo, per il contenitore "ColumnGroupByYear" (area dati o gruppo).
=Code.GetDeltaPercentage(Previous(Sum(Fields!Sales.Value),"ColumnGroupByYear"), Sum(Fields!Sales.Value))
In questo modo si evitano eccezioni in fase di esecuzione ed è ora possibile utilizzare un'espressione come =IIF(Me.Value < 0, "red", "black")
nella proprietà Color
della casella di testo a seconda se i valori sono maggiori o minori di 0.