Condividi tramite


Esempi di espressioni nel Generatore report di Power BI

SI APPLICA A: Power BI Report Builder Power BI Desktop

Le espressioni sono usate di frequente nei report impaginati di Power BI Report Builder per controllare il contenuto e l'aspetto del report. Le espressioni vengono scritte in Microsoft Visual Basic e possono includere funzioni predefinite, codice personalizzato, variabili di gruppo e di report e variabili definite dall'utente. Le espressioni iniziano con un segno di uguale (=).

Questo articolo fornisce esempi di espressioni che possono essere usate per le attività comuni in un report.

Per altre informazioni su espressioni semplici e complesse, su dove è possibile usare le espressioni e sui tipi di riferimenti che è possibile includere in un'espressione, vedere Espressioni nel Power BI 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 xref:System.Convert e xref:System.Math. È possibile aggiungere i riferimenti alle funzioni nel codice personalizzato. È anche possibile usare classi del framework Microsoft .NET, tra cui xref:System.Text.RegularExpressions.

Funzioni di Visual Basic

È possibile utilizzare funzioni di Visual Basic per modificare i dati visualizzati in 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 Membri della libreria di runtime di Visual Basic su MSDN.

Il .NET Framework fornisce molte opzioni di formato personalizzato, ad esempio per formati di data specifici. Per altre informazioni, vedere Formattazione di tipi.

Funzioni matematiche

  • La funzione Round risulta utile per l'arrotondamento dei numeri al numero intero più vicino. L'espressione seguente arrotonda da 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. Ad esempio, per arrotondare 1,3 al multiplo più vicino di 0.2, ovvero 1,4, usare 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()  
    
  • Usare la funzione DateInterval per estrarre una parte specifica di una data. Ecco alcuni parametri DateInterval validi:

    • DateInterval.Second
    • DateInterval.Minute
    • DateInterval.Hour
    • DateInterval.Weekday
    • DateInterval.Day
    • DateInterval.DayOfYear
    • DateInterval.WeekOfYear
    • DateInterval.Month
    • DateInterval.Quarter
    • DateInterval.Year

    Ad esempio, questa espressione mostrerà il numero della settimana nell'anno corrente per la data corrente:

    =DatePart(DateInterval.WeekOfYear, 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 raggruppare le date o visualizzare l'anno come etichetta per 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 funzione Month 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, modificare "12/18/2022" in "Settimana di dicembre 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 formatta il valore SellStartDate nel formato MMM-AA. Il campo SellStartDate è un tipo di dati datetime.

    =FORMAT(Fields!SellStartDate.Value, "MMM-yy")  
    
  • L'espressione seguente formatta il valore SellStartDate nel 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 funzione Now 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.

    =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 Date. L'espressione seguente restituisce l'anno per il primo valore del 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 di data che rappresenta un anno, un mese e un giorno specificati, 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

  • È possibile combinare più campi utilizzando operatori di concatenamento 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, per applicare la formattazione è consigliabile usare la proprietà di formattazione della casella di testo, anziché la funzione Format all'interno della casella di testo.

  • Le funzioni Right, Lene InStr sono utili per ottenere sottostringhe, ad esempio per ottenere il solo nome utente dalla stringa DOMAIN\username . 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 usando membri della classe xref:System.String del .NET Framework invece di 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)  
    

    Nell'esempio seguente 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 funzioni Regex dal .NET Framework xref:System.Text.RegularExpressions sono utili per modificare il formato di stringhe esistenti, ad esempio per formattare un numero di telefono. L'espressione seguente usa la funzione Replace per modificare il formato di un numero telefonico di 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 il valore di Fields!Phone.Value non contenga spazi aggiuntivi e sia di tipo xref:System.String.

Ricerca

  • Specificando un campo chiave è possibile usare 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 usare 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 il set di dati PhoneList contenga un identificatore 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 della persona specificata da ContactID:

    =Join(LookupSet(Fields!ContactID.Value, Fields!PersonID.Value, Fields!PhoneNumber.Value, "PhoneList"),",")  
    

Funzioni di conversione

È possibile utilizzare le funzioni di Visual Basic per convertire un campo da un tipo di dati a un altro. 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, in modo da confrontarla con un tipo di dati money di Transact-SQL nel campo Valore per 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 decisionali

  • La funzione IIF restituisce uno dei due valori a seconda che l'espressione sia true o meno. Nell'espressione seguente viene utilizzata la funzione di IIF per restituire un valore booleano di True se il valore di LineTotal supera 100. In caso contrario, viene restituito False:

    =IIF(Fields!LineTotal.Value > 100, True, False)  
    
  • Usare più funzioni IIF (chiamate anche "IIF annidati") per restituire uno dei tre valori a seconda del valore di PctComplete. 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 funzione Switch è utile quando sono presenti tre o più condizioni da testare. La funzione Switch 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.

  • Testare il valore del campo ImportantDate e restituire "Red" se è più di una settimana precedente e "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")  
    
  • Testare il valore del campo PhoneNumber e restituire "No Value" se è null (Nothing in Visual Basic); in caso contrario, restituisce 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 campo Department e restituire un nome di 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)  
    
  • 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.

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 nel gruppo o nell'area dati Ordine:

    =Sum(Fields!LineTotal.Value, "Order")  
    
  • È possibile utilizzare la funzione Sum anche per i calcoli di aggregazione condizionali. Ad esempio, se un set di dati include un campo denominato Stato con i valori possibili Non avviato, Avviato, Completato, l'espressione seguente, inserita in un'intestazione di gruppo, calcola la somma aggregata solo per il valore Completato:

    =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, Può essere utile anche per attività più complesse, ad esempio l'inserimento di interruzioni di pagina in base al numero di righe. Per altre informazioni, vedere interruzioni di pagina in questo articolo.

    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

Quando si progetta un report, è possibile visualizzare il nome del report e il numero di pagina nel piè di pagina del report. è 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. Nell'esempio si presuppone 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, posizionata in una casella di testo sul lato destro dell'intestazione di pagina, fornisce 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. Nell'esempio si presuppone un'area dati contenente una casella di testo denominata Cost.

  • L'espressione seguente, inserita nell'intestazione o nel piè di pagina, fornisce la somma dei valori nella casella di testo Cost per la 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 è possibile inserire un'interruzione di pagina alla fine di un numero specificato di righe anziché, oltre a, in gruppi o elementi del report. Creare un gruppo che contiene i gruppi o i record di dettaglio desiderati, aggiungere un'interruzione di pagina al gruppo e quindi aggiungere un'espressione di raggruppamento per raggruppare in base a un numero specificato di righe.

  • 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 per il numero di righe per pagina, creare un parametro denominato RowsPerPage e basare l'espressione di raggruppamento sul parametro, come illustrato nell'espressione seguente:

    =Ceiling(RowNumber(Nothing)/Parameters!RowsPerPage.Value)  
    

Proprietà

Le espressioni non vengono usate solo per visualizzare i dati nelle 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 in corso

  • L'espressione seguente, usata nella proprietà Color di una casella di testo, modifica il colore del testo in base al 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, usata nella proprietà BackgroundColor di un elemento del report in un'area dati, alterna il colore di sfondo di ogni riga tra verde chiaro e bianco:

    =Iif(RowNumber(Nothing) Mod 2, "PaleGreen", "White")  
    

    Se si usa un'espressione per un ambito specificato, 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.

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, usata per la visibilità iniziale delle righe di dettaglio in un gruppo, visualizza le righe di dettaglio per tutte le vendite che superano il 90% nel campo PctQuota:

    =IIF(Fields!PctQuota.Value>.9, False, True)  
    
  • L'espressione seguente, 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 proprietà Hidden di una colonna, visualizza 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)  
    

È 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, usata come azione in una casella di testo, genera un URL personalizzato che specifica il campo del set di dati EmployeeID come parametro URL.

    ="https://adventure-works/MyInfo?ID=" & Fields!EmployeeID.Value  
    
  • L'espressione seguente controlla in base a specifiche condizioni se aggiungere un URL in una casella di testo. Questa espressione dipende da un parametro denominato IncludeURLs che consente a un utente di decidere se includere GLI URL attivi in un report. Questa espressione viene impostata come azione per una casella di testo. Impostando il parametro su False e quindi visualizzando il report, è possibile esportare il report Microsoft Excel senza collegamenti ipertestuali.

    =IIF(Parameters!IncludeURLs.Value,"https://adventure-works.com/productcatalog",Nothing)  
    

Nota

I report impaginati di Power BI non supportano l'uso di JavaScript all'interno di un'espressione Vai a URL.

Dati di 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 nella barra degli strumenti e il lettore del report non può modificare il valore predefinito. È possibile usare 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 usare codice personalizzato incorporato in un report.

Uso di 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.

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. La funzione IIF è particolarmente sensibile a questo comportamento perché, a differenza di un'istruzione If-Then-Else, viene valutata ogni parte dell'istruzione IIF (incluse le chiamate di funzione) prima di essere passata alla routine che verifica il valore true o false. L'istruzione =IIF(Fields!Sales.Value is NOTHING, 0, Fields!Sales.Value) genera #Error nel report sottoposto a rendering 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. Può essere usato per calcolare la differenza tra due valori successivi e consente di gestire il caso limite del primo confronto (quando non è presente alcun valore precedente) e i casi in cui 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  
    

    L'espressione seguente illustra come chiamare questo codice personalizzato da una casella di testo per il contenitore ColumnGroupByYear (gruppo o area dati).

    =Code.GetDeltaPercentage(Previous(Sum(Fields!Sales.Value),"ColumnGroupByYear"), Sum(Fields!Sales.Value))  
    

    Questo codice consente di evitare eccezioni in fase di esecuzione. È ora possibile usare un'espressione come =IIF(Me.Value < 0, "red", "black") nella proprietà Color della casella di testo per controllare in modo condizionale il testo visualizzato in base ai valori maggiori o minori di 0.

Passaggi successivi