Esempi di espressioni (Generatore report e SSRS)Expression Examples (Report Builder and SSRS)

Le espressioni vengono usate di frequente nei report impaginati di Reporting ServicesReporting Services per controllare il contenuto e l'aspetto del report.Expressions are used frequently in Reporting ServicesReporting Services paginated reports to control content and report appearance. Vengono scritte in MicrosoftMicrosoft Visual BasicVisual Basice possono includere funzioni predefinite, codice personalizzato, variabili di gruppo e di report e variabili definite dall'utente.Expressions are written in MicrosoftMicrosoft Visual BasicVisual Basic, and can use built-in functions, custom code, report and group variables, and user-defined variables. Le espressioni iniziano con un segno di uguale (=).Expressions begin with an equal sign (=). Per ulteriori informazioni sull'editor di espressioni e i tipi di riferimenti che è possibile includere, vedere espressione viene utilizzata in report ( Generatore report e SSRS ) , e aggiungere un'espressione ( Generatore report e SSRS ) .For more information about the expression editor and the types of references that you can include, see Expression Uses in Reports (Report Builder and SSRS), and Add an Expression (Report Builder and SSRS).

Importante

Quando RDL Sandboxing è abilitato, al momento della pubblicazione del report nel testo dell'espressione è possibile utilizzare solo determinati tipi e membri.When RDL Sandboxing is enabled, only certain types and members can be used in expression text at report publish time. Per altre informazioni, vedere Enable and Disable RDL Sandboxing.For more information, see Enable and Disable RDL Sandboxing.

In questo argomento vengono forniti alcuni esempi di espressioni che è possibile utilizzare per attività comuni in un report.This topic provides examples of expressions that can be used for common tasks in a report.

  • Funzioni di Visual Basic Esempi di funzioni di Visual BasicVisual Basic di tipo data, stringa, conversione e condizionale.Visual Basic Functions Examples for date, string, conversion and conditional Visual BasicVisual Basic functions.

  • Funzioni di report Esempi relativi a funzioni di aggregazione e altre funzioni di report predefinite.Report Functions Examples for aggregates and other built-in report functions.

  • Aspetto dei dati del report Esempi relativi alla modifica dell'aspetto di un report.Appearance of Report Data Examples for changing the appearance of a report.

  • Proprietà Esempi relativi all'impostazione delle proprietà degli elementi del report per il controllo del formato o della visibilità.Properties Examples for setting report item properties to control format or visibility.

  • Parametri Esempi relativi all'utilizzo di parametri in un'espressione.Parameters Examples for using parameters in an expression.

  • Codice personalizzato Esempi di codice personalizzato incorporato.Custom Code Examples of embedded custom code.

Per esempi di espressioni per utilizzi specifici, vedere gli argomenti seguenti:For expression examples for specific uses, see the following topics:

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).For more information about simple and complex expressions, where you can use expressions, and the types of references that you can include in an expression, see topics under Expressions (Report Builder and SSRS). Per ulteriori 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 ) .For more information about the context in which expressions are evaluated for calculating aggregates, see Expression Scope for Totals, Aggregates, and Built-in Collections (Report Builder and 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.To learn how to write expressions that use many of the functions and operators also used by expression examples in this topic, but in the context of writing a report, see Tutorial: Introducing Expressions.

FunzioniFunctions

Molte espressioni incluse in un report contengono funzioni.Many expressions in a report contain functions. Con queste funzioni è possibile formattare dati, applicare logica e accedere ai metadati del report.You can format data, apply logic, and access report metadata using these functions. È possibile scrivere espressioni che usano funzioni della libreria run-time di MicrosoftMicrosoft Visual BasicVisual Basic e degli spazi dei nomi Convert e Math .You can write expressions that use functions from the MicrosoftMicrosoft Visual BasicVisual Basic run-time library, and from the Convert and Math namespaces. È possibile aggiungere riferimenti a funzioni da altri assembly o da codice personalizzato.You can add references to functions from other assemblies or custom code. È anche possibile usare classi di MicrosoftMicrosoft .NET Framework.NET Framework, tra cui System.Text.RegularExpressions.You can also use classes from the MicrosoftMicrosoft .NET Framework.NET Framework, including System.Text.RegularExpressions.

Funzioni di Visual Basic Visual Basic Functions

È possibile utilizzare le funzioni di Visual BasicVisual Basic per modificare i dati visualizzati nelle caselle di testo o utilizzati per parametri, proprietà o altre aree del report.You can use Visual BasicVisual Basic functions to manipulate the data that is displayed in text boxes or that is used for parameters, properties, or other areas of the report. In questa sezione vengono forniti esempi che illustrano alcune di queste funzioni.This section provides examples demonstrating some of these functions. Per altre informazioni, vedere la pagina relativa ai membri delle librerie di runtime di Visual Basic in MSDN.For more information, see Visual Basic Runtime Library Members on MSDN.

In .NET Framework.NET Framework sono disponibili molte opzioni di formato personalizzato, ad esempio per formati di data specifici.The .NET Framework.NET Framework provides many custom format options, for example, for specific date formats. Per ulteriori informazioni, vedere Formattazione dei tipi di dati in MSDN.For more information, see Formatting Types on MSDN.

Funzioni matematicheMath Functions

  • La funzione Round risulta utile per l'arrotondamento dei numeri al numero intero più vicino.The Round function is useful to round numbers to the nearest integer. L'espressione seguente comporta un arrotondamento del valore 1.3 a 1:The following expression rounds a 1.3 to 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.You can also write an expression to round a value to a multiple that you specify, similar to the MRound function in Excel. Moltiplicare il valore di un fattore che crea un numero intero, arrotondare il numero e dividere il risultato per lo stesso fattore.Multiply the value by a factor that creates an integer, round the number, and then divide by the same factor. Per arrotondare ad esempio 1.3 al multiplo più vicino di .2 (1.4), utilizzare l'espressione seguente:For example, to round 1.3 to the nearest multiple of .2 (1.4), use the following expression:

    = Round(1.3*5)/5  
    

Funzioni di data Date Functions

  • La funzione Today fornisce la data corrente.The Today function provides the current date. 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.This expression can be used in a text box to display the date on the report, or in a parameter to filter data based on the current date.

    =Today()  
    
  • Utilizzare il DateInterval funzione per estrarre una parte di una data specifica.Use the DateInterval function to pull out a specific part of a date. Ecco alcuni validi DateInterval parametri:Here are some valid DateInterval parameters:

    • DateInterval. SecondDateInterval.Second
    • DateInterval. MinuteDateInterval.Minute
    • DateInterval. HourDateInterval.Hour
    • DateIntervalDateInterval.Weekday
    • DateInterval.DayDateInterval.Day
    • DateIntervalDateInterval.DayOfYear
    • DateIntervalDateInterval.WeekOfYear
    • DateInterval. MonthDateInterval.Month
    • DateIntervalDateInterval.Quarter
    • DateInterval. YearDateInterval.Year

    Ad esempio, questa espressione mostrerà il numero della settimana dell'anno corrente per la data corrente:For example, this expression will show the number of the week in the current year for today's date:

    =DatePart(DateInterval.WeekOfYear, today()) 
    
  • La funzione DateAdd è utile per fornire un intervallo di date in base a un solo parametro.The DateAdd function is useful for supplying a range of dates based on a single parameter. L'espressione seguente restituisce una data successiva di sei mesi alla data di un parametro denominato StartDate.The following expression provides a date that is six months after the date from a parameter named StartDate.

    =DateAdd(DateInterval.Month, 6, Parameters!StartDate.Value)  
    
  • La funzione Year visualizza l'anno per una determinata data.The Year function displays the year for a particular date. È possibile utilizzare questa espressione per raggruppare date oppure per visualizzare l'anno come etichetta di un set di date.You can use this to group dates together or to display the year as a label for a set of dates. Questa espressione restituisce l'anno per un gruppo specifico di date di ordini di vendita.This expression provides the year for a given group of sales order dates. Per modificare le date è possibile utilizzare anche la funzione Month e altre funzioni.The Month function and other functions can also be used to manipulate dates. Per ulteriori informazioni, vedere la documentazione di Visual BasicVisual Basic .For more information, see the Visual BasicVisual Basic documentation.

    =Year(Fields!OrderDate.Value)  
    
  • È possibile combinare le funzioni in un'espressione per personalizzare il formato.You can combine functions in an expression to customize the format. L'espressione seguente cambia il formato di una data da mese-giorno-anno in mese-settimana-numero settimana,The following expression changes the format of a date in the form month-day-year to month-week-week number. ad esempio 12/23/2009 in dicembre settimana 3:For example, 12/23/2009 to December Week 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.When used as a calculated field in a dataset, you can use this expression on a chart to aggregate values by week within each month.

  • L'espressione seguente applica al valore SellStartDate il formato MMM-AA.The following expression formats the SellStartDate value as MMM-YY. Il campo SellStartDate è un tipo di dati datetime.SellStartDate field is a datetime data type.

    =FORMAT(Fields!SellStartDate.Value, "MMM-yy")  
    
  • L'espressione seguente applica al valore SellStartDate il formato gg/MM/aaaa.The following expression formats the SellStartDate value as dd/MM/yyyy. Il campo SellStartDate è un tipo di dati datetime.The SellStartDate field is a datetime data type.

    =FORMAT(Fields!SellStartDate.Value, "dd/MM/yyyy")  
    
  • La funzione CDate converte il valore in una data.The CDate function converts the value to a date. La funzione Now restituisce un valore di data che contiene la data e l'ora correnti in base al sistema.The Now function returns a date value containing the current date and time according to your system. DateDiff restituisce un valore Long che specifica il numero di intervalli di tempo tra due valori di data.DateDiff returns a Long value specifying the number of time intervals between two Date values.

    Nell'esempio seguente viene visualizzata la data di inizio dell'anno in corsoThe following example displays the start date of the current year

    =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.The following example displays the start date for the previous month based on the current month.

    =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.The following expression generates the interval years between SellStartDate and LastReceiptDate. Questi campi si trovano in due set di dati diversi, DataSet1 e DataSet2.These fields are in two different datasets, DataSet1 and DataSet2. Il prima funzione ( Generatore report e SSRS ) , che è una funzione di aggregazione, restituisce il primo valore di SellStartDate in DataSet1 e il primo valore di LastReceiptDate in DataSet2.The First Function (Report Builder and SSRS), which is an aggregate function, returns the first value of SellStartDate in DataSet1 and the first value of 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.The DatePart function returns an Integer value containing the specified component of a given Date value.The following expression returns the year for the first value of the SellStartDate in DataSet1. L'ambito del set di dati è specificato poiché il report include più set di dati.The dataset scope is specified because there are multiple datasets in the report.

    =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.The DateSerial function returns a Date value representing a specified year, month, and day, with the time information set to midnight. Nell'esempio seguente viene visualizzata la data di fine del mese precedente, basato sul mese corrente.The following example displays the ending date for the prior month, based on the current month.

    =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.The following expressions display various dates based on a date parameter value selected by the user.

Descrizione esempioExample Description EsempioExample
IeriYesterday =DateSerial(Year(Parameters!TodaysDate.Value),Month(Parameters!TodaysDate.Value),Day(Parameters!TodaysDate.Value)-1)
Due giorni faTwo Days Ago =DateSerial(Year(Parameters!TodaysDate.Value),Month(Parameters!TodaysDate.Value),Day(Parameters!TodaysDate.Value)-2)
Un mese faOne Month Ago =DateSerial(Year(Parameters!TodaysDate.Value),Month(Parameters!TodaysDate.Value)-1,Day(Parameters!TodaysDate.Value))
Due mesi faTwo Months Ago =DateSerial(Year(Parameters!TodaysDate.Value),Month(Parameters!TodaysDate.Value)-2,Day(Parameters!TodaysDate.Value))
Un anno faOne Year Ago =DateSerial(Year(Parameters!TodaysDate.Value)-1,Month(Parameters!TodaysDate.Value),Day(Parameters!TodaysDate.Value))
Due anni faTwo Years Ago =DateSerial(Year(Parameters!TodaysDate.Value)-2,Month(Parameters!TodaysDate.Value),Day(Parameters!TodaysDate.Value))

Funzioni per i valori stringa String Functions

  • È possibile combinare più campi utilizzando operatori di concatenazione e costanti di Visual BasicVisual Basic .Combine more than one field by using concatenation operators and Visual BasicVisual Basic constants. L'espressione seguente restituisce due campi, ognuno su una riga distinta nella stessa casella di testo:The following expression returns two fields, each on a separate line in the same text box:

    =Fields!FirstName.Value & vbCrLf & Fields!LastName.Value   
    
  • È possibile formattare date e numeri in una stringa tramite la funzione Format .Format dates and numbers in a string with the Format function. L'espressione seguente visualizza il valore dei parametri StartDate e EndDate nel formato di data estesa:The following expression displays values of the StartDate and EndDate parameters in long date format:

    =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.If the text box contains only a date or number, you should use the Format property of the text box to apply formatting instead of the Format function within the text box.

  • Le funzioni Right, Lene InStr sono utili per ottenere sottostringhe, ad esempio per ottenere il solo nome utente dalla stringa DOMAIN\username .The Right, Len, and InStr functions are useful for returning a substring, for example, trimming DOMAIN\username to just the user name. L'espressione seguente restituisce la parte della stringa a destra del carattere barra rovesciata (\) da un parametro denominato User:The following expression returns the part of the string to the right of a backslash (\) character from a parameter named 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 .NET Framework.NET Framework String anziché funzioni di Visual BasicVisual Basic :The following expression results in the same value as the previous one, using members of the .NET Framework.NET Framework String class instead of Visual BasicVisual Basic functions:

    =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.Display the selected values from a multivalue parameter. 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.The following example uses the Join function to concatenate the selected values of the parameter MySelection into a single string that can be set as an expression for the value of a text box in a report item:

    = 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.The following example does the same as the above example, as well as displays a text string prior to the list of selected values.

    =”Report for “ & JOIN(Parameters!MySelection.Value, “ & “)  
    
  • In Regex della classe .NET Framework.NET Framework System.Text.RegularExpressions sono utili per modificare il formato di stringhe esistenti, ad esempio per formattare un numero di telefono.The Regex functions from the .NET Framework.NET Framework System.Text.RegularExpressions are useful for changing the format of existing strings, for example, formatting a telephone number. 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":The following expression uses the Replace function to change the format of a ten-digit telephone number in a field from "nnn-nnn-nnnn" to "(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.Verify that the value for Fields!Phone.Value has no extra spaces and is of type String.

RicercaLookup

  • 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.By specifying a key field, you can use the Lookup function to retrieve a value from a dataset for a one-to-one relationship, for example, a key-value pair. 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:The following expression displays the product name from a dataset (“Product”), given the product identifier to match on:

    =Lookup(Fields!PID.Value, Fields!ProductID.Value, Fields.ProductName.Value, "Product")  
    

LookupSetLookupSet

  • 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.By specifying a key field, you can use the LookupSet function to retrieve a set of values from a dataset for a one-to-many relationship. Ad esempio una persona può disporre di più numeri di telefono.For example, a person can have multiple telephone numbers. 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.In the following example, assume the dataset PhoneList contains a person identifier and a telephone number in each row. TramiteLookupSet viene restituita una matrice di valori.LookupSet returns an array of values. 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:The following expression combines the return values into a single string and displays the list of telephone numbers for the person specified by ContactID:

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

Funzioni di conversione Conversion Functions

È possibile utilizzare le funzioni di Visual BasicVisual Basic per convertire un campo da un tipo di dati a un altro.You can use Visual BasicVisual Basic functions to convert a field from the one data type to a different data type. 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.Conversion functions can be used to convert the default data type for a field to the data type needed for calculations or to combine text.

  • L'espressione seguente converte la costante 500 nel tipo Decimal, in modo da confrontarla con un tipo di dati money di Transact-SQLTransact-SQL nel campo Valore per un'espressione di filtro.The following expression converts the constant 500 to type Decimal in order to compare it to a Transact-SQLTransact-SQL money data type in the Value field for a filter expression.

    =CDec(500)  
    
  • L'espressione seguente visualizza il numero di valori selezionati per il parametro multivalore MySelection.The following expression displays the number of values selected for the multivalue parameter MySelection.

    =CStr(Parameters!MySelection.Count)  
    

Funzioni condizionali Decision Functions

  • La funzione Iif restituisce uno di due valori a seconda che l'espressione sia True o False.The Iif function returns one of two values depending on whether the expression is true or not. Nell'espressione seguente viene usata la funzione Iif per restituire un valore booleano True se il valore LineTotal è maggiore di 100.The following expression uses the Iif function to return a Boolean value of True if the value of LineTotal exceeds 100. In caso contrario, viene restituito False:Otherwise it returns False:

    =IIF(Fields!LineTotal.Value > 100, True, False)  
    
  • È possibile usare più funzioni IIF , note anche come funzioni IIF nidificate, per restituire uno di tre valori possibili a seconda del valore di PctComplete.Use multiple IIF functions (also known as "nested IIFs") to return one of three values depending on the value of 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.The following expression can be placed in the fill color of a text box to change the background color depending on the value in the text box.

    =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.Values greater than or equal to 10 display with a green background, between 1 and 9 display with a blue background, and less than 1 display with a red background.

  • Per ottenere la stessa funzionalità, è anche possibile utilizzare la funzione Switch .A different way to get the same functionality uses the Switch function. La funzione Switch risulta utile quando è necessario testare tre o più condizioni.The Switch function is useful when you have three or more conditions to test. La funzione Switch restituisce il valore associato alla prima espressione in una serie che restituisce True:The Switch function returns the value associated with the first expression in a series that evaluates to 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.Values greater than or equal to 10 display with a green background, between 1 and 9 display with a blue background, equal to 1 display with a yellow background, and 0 or less display with a red background.

  • Viene verificato il valore del campo ImportantDate e viene restituito "Red" se è antecedente a una settimana e "Blue" in caso contrario.Test the value of the ImportantDate field and return "Red" if it is more than a week old, and "Blue" otherwise. Questa espressione può essere utilizzata per controllare la proprietà Color di una casella di testo in un elemento del report:This expression can be used to control the Color property of a text box in a report item:

    =IIF(DateDiff("d",Fields!ImportantDate.Value, Now())>7,"Red","Blue")  
    
  • Viene verificato il valore del campo PhoneNumber e restituito "No Value" se null (Nothing in Visual BasicVisual Basic). In caso contrario, viene restituito il valore del numero di telefono.Test the value of the PhoneNumber field and return "No Value" if it is null (Nothing in Visual BasicVisual Basic); otherwise return the phone number value. Questa espressione può essere utilizzata per controllare il valore di una casella di testo in un elemento del report.This expression can be used to control the value of a text box in a report item.

    =IIF(Fields!PhoneNumber.Value Is Nothing,"No Value",Fields!PhoneNumber.Value)  
    
  • Viene verificato il valore del campo Department e viene restituito il nome di un sottoreport o null (Nothing in Visual BasicVisual Basic).Test the value of the Department field and return either a subreport name or a null (Nothing in Visual BasicVisual Basic). Questa espressione può essere utilizzata per i sottoreport drill-through condizionali.This expression can be used for conditional drillthrough subreports.

    =IIF(Fields!Department.Value = "Development", "EmployeeReport", Nothing)  
    
  • Viene verificato se il valore di un campo è Null.Test if a field value is null. Questa espressione può essere utilizzata per controllare la proprietà Hidden di un elemento immagine del report.This expression can be used to control the Hidden property of an image report item. Nell'esempio seguente l'immagine specificata dal campo [LargePhoto] viene visualizzata solo se il valore del campo non è Null.In the following example, the image specified by the field [LargePhoto] is displayed only if the value of the field is not null.

    =IIF(IsNothing(Fields!LargePhoto.Value),True,False)  
    
  • La funzione MonthName restituisce il valore di stringa contenente il nome del mese specificato.The MonthName function returns a string value containing the name of the specified month. Nell'esempio seguente viene visualizzato ND nel campo Mese quando il campo contiene il valore 0.The following example displays NA in the Month field when the field contains the value of 0.

    IIF(Fields!Month.Value=0,"NA",MonthName(IIF(Fields!Month.Value=0,1,Fields!Month.Value)))  
    

Funzioni di report Report Functions

In un'espressione è possibile aggiungere un riferimento a funzioni per i report aggiuntive tramite le quali vengono modificati i dati di un report.In an expression, you can add a reference to additional report functions that manipulate data in a report. In questa sezione vengono forniti esempi di due funzioni per i report.This section provides examples for two of these functions. Per altre informazioni sulle funzioni di report ed esempi, vedere Riferimento a funzioni di aggregazione (Generatore report e SSRS).For more information about report functions and examples, see Aggregate Functions Reference (Report Builder and SSRS).

Sum Sum

  • La funzione Sum consente di calcolare il totale dei valori di un gruppo o di un'area dati.The Sum function can total the values in a group or data region. Può risultare utile nell'intestazione o nel piè di pagina di un gruppo.This function can be useful in the header or footer of a group. L'espressione seguente visualizza la somma dei dati del gruppo o dell'area dati Order:The following expression displays the sum of data in the Order group or data region:

    =Sum(Fields!LineTotal.Value, "Order")  
    
  • È possibile utilizzare la funzione Sum anche per i calcoli di aggregazione condizionali.You can also use the Sum function for conditional aggregate calculations. 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:For example, if a dataset has a field that is named State with possible values Not Started, Started, Finished, the following expression, when placed in a group header, calculates the aggregate sum for only the value Finished:

    =Sum(IIF(Fields!State.Value = "Finished", 1, 0))  
    

RowNumber 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.The RowNumber function, when used in a text box within a data region, displays the row number for each instance of the text box in which the expression appears. Questa funzione può essere utile per numerare le righe di una tabella,This function can be useful to number rows in a table. ma anche per attività più complesse, ad esempio per l'inserimento di interruzioni di pagina in base al numero di righe.It can also be useful for more complex tasks, such as providing page breaks based on number of rows. Per ulteriori informazioni, vedere Interruzioni di pagina di seguito in questo argomento.For more information, see Page Breaks in this topic.

    L'ambito specificato per RowNumber controlla quando inizia la rinumerazione.The scope you specify for RowNumber controls when renumbering begins. La parola chiave Nothing indica che il conteggio inizierà dalla prima riga dell'area dati più esterna.The Nothing keyword indicates that the function will start counting at the first row in the outermost data region. Per iniziare il conteggio all'interno di aree dati nidificate, utilizzare il nome dell'area dati.To start counting within nested data regions, use the name of the data region. Per iniziare il conteggio in un gruppo, utilizzare il nome del gruppo.To start counting within a group, use the name of the group.

    =RowNumber(Nothing)  
    

Aspetto dei dati del report Appearance of Report Data

È possibile utilizzare le espressioni per modificare l'aspetto dei dati in un report.You can use expressions to manipulate how data appears on a 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.For example, you can display the values of two fields in a single text box, display information about the report, or affect how page breaks are inserted in the report.

Intestazioni di pagina e piè di pagina Page Headers and Footers

Se si desidera che nel piè di pagina del report vengano visualizzati il nome del report e il numero di pagina,When designing a report, you may want to display the name of the report and page number in the report footer. è possibile utilizzare le espressioni seguenti:To do this, you can use the following expressions:

  • L'espressione seguente restituisce il nome del report e la data di esecuzione.The following expression provides the name of the report and the time it was run. Può essere inserita in una casella di testo nel piè di pagina del report oppure nel corpo del report.It can be placed in a text box in the report footer or in the body of the report. Per la formattazione dell'ora viene utilizzata la stringa di formattazione di .NET Framework.NET Framework per la data breve:The time is formatted with the .NET Framework.NET Framework formatting string for short date:

    =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:The following expression, placed in a text box in the footer of a report, provides page number and total pages in the 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.The following examples describe how to display the first and last values from a page in the page header, similar to what you might find in a directory listing. Si suppone che sia presente un'area dati contenente una casella di testo denominata LastName.The example assumes a data region that contains a text box named 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:The following expression, placed in a text box on the left side of the page header, provides the first value of the LastName text box on the page:

    =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:The following expression, placed in a text box on the right side of the page header, provides the last value of the LastName text box on the page:

    =Last(ReportItems("LastName").Value)  
    

    Nell'esempio seguente viene illustrato come visualizzare un totale di pagina.The following example describes how to display a page total. Si suppone che sia presente un'area dati contenente una casella di testo denominata Cost.The example assumes a data region that contains a text box named 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:The following expression, placed in the page header or footer, provides the sum of the values in the Cost text box for the page:

    =Sum(ReportItems("Cost").Value)  
    

Nota

In un'intestazione o piè di pagina è possibile fare riferimento a un solo elemento del report in ogni espressione.You can refer to only one report item per expression in a page header or footer. 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.Also, you can refer to the text box name, but not the actual data expression within the text box, in page header and footer expressions.

Interruzioni di pagina Page Breaks

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.In some reports, you may want to place a page break at the end of a specified number of rows instead of, or in addition to, on groups or report items. 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.To do this, create a group that contains the groups or detail records you want, add a page break to the group, and then add a group expression to group by a specified number of rows.

  • L'espressione seguente, se inserita nell'espressione di raggruppamento, assegna un numero a ogni set di 25 righe.The following expression, when placed in the group expression, assigns a number to each set of 25 rows. Se si definisce un'interruzione di pagina per il gruppo, si ottiene un'interruzione di pagina ogni 25 righe.When a page break is defined for the group, this expression results in a page break every 25 rows.

    =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:To allow the user to set a value for the number of rows per page, create a parameter named RowsPerPage and base the group expression on the parameter, as shown in the following expression:

    =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).For more information about setting page breaks for a group, see Add a Page Break (Report Builder and SSRS).

Proprietà Properties

Le espressioni non vengono utilizzate solo per visualizzare dati in caselle di testo.Expressions are not only used to display data in text boxes. Possono essere utilizzate anche per modificare la modalità di applicazione delle proprietà agli elementi del report.They can also be used to change how properties are applied to report items. È possibile modificare le informazioni sullo stile di un elemento del report oppure modificarne la visibilità.You can change style information for a report item, or change its visibility.

Formattazione Formatting

  • 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 :The following expression, when used in the Color property of a text box, changes the color of the text depending on the value of the Profit field:

    =Iif(Fields!Profit.Value < 0, "Red", "Black")  
    

    È anche possibile utilizzare la variabile oggetto Visual BasicVisual Basic Me.You can also use the Visual BasicVisual Basic object variable Me. Questa variabile consente di fare riferimento in un altro modo al valore di una casella di testo.This variable is another way of referring to the value of a text box.

    =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:The following expression, when used in the BackgroundColor property of a report item in a data region, alternates the background color of each row between pale green and white:

    =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.If you are using an expression for a specified scope, you may have to indicate the dataset for the aggregate function:

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

Nota

I colori disponibili provengono dall'enumerazione KnownColor di .NET Framework.NET Framework .Available colors come from the .NET Framework.NET Framework KnownColor enumeration.

Colori del graficoChart Colors

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.To specify colors for a Shape chart, you can use custom code to control the order that colors are mapped to data point values. In questo modo è possibile utilizzare colori coerenti per più grafici con gli stessi gruppi di categorie.This helps you use consistent colors for multiple charts that have the same category groups. Per altre informazioni, vedere Specifica di colori coerenti in più grafici con forme (Generatore report e SSRS).For more information, see Specify Consistent Colors across Multiple Shape Charts (Report Builder and SSRS).

Visibilità Visibility

È possibile visualizzare e nascondere elementi in un report utilizzando le proprietà di visibilità per gli elementi del report.You can show and hide items in a report using the visibility properties for the report item. In un'area dati, ad esempio una tabella, è possibile nascondere inizialmente le righe di dettaglio in base al valore di un'espressione.In a data region such as a table, you can initially hide detail rows based on the value in an expression.

  • 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 :The following expression, when used for initial visibility of detail rows in a group, shows the detail rows for all sales exceeding 90 percent in the PctQuota field:

    =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:The following expression, when set in the Hidden property of a table, shows the table only if it has more than 12 rows:

    =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:The following expression, when set in the Hidden property of a column, shows the column only if the field exists in the report dataset after the data is retrieved from the data source:

    =IIF(Fields!Column_1.IsMissing, true, false)  
    

URL URLs

È 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.You can customize URLs by using report data and also conditionally control whether URLs are added as an action for a text box.

  • 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.The following expression, when used as an action on a text box, generates a customized URL that specifies the dataset field EmployeeID as a URL parameter.

    ="http://adventure-works/MyInfo?ID=" & Fields!EmployeeID.Value  
    

    Per ulteriori informazioni, vedere aggiungere un collegamento ipertestuale a un URL ( Generatore report e SSRS ) .For more information, see Add a Hyperlink to a URL (Report Builder and SSRS).

  • L'espressione seguente controlla in base a specifiche condizioni se aggiungere un URL in una casella di testo.The following expression conditionally controls whether to add a URL in a text box. L'espressione dipende da un parametro denominato IncludeURLs che consente all'utente di decidere se includere o meno URL attivi in un report.This expression depends on a parameter named IncludeURLs that allows a user to decide whether to include active URLs in a report. Questa espressione viene impostata come azione per una casella di testo.This expression is set as an action on a text box. Se si imposta il parametro su False e quindi si visualizza il report, è possibile esportare il report in Microsoft Excel senza collegamenti ipertestuali.By setting the parameter to False and then viewing the report, you can export the report Microsoft Excel without hyperlinks.

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

Dati del report Report Data

È possibile utilizzare le espressioni per modificare i dati utilizzati nei report.Expressions can be used to manipulate the data that is used in the report. È possibile fare riferimento a parametri e ad altre informazioni dei report,You can refer to parameters and other report information. nonché modificare la query utilizzata per recuperare i dati per il report.You can even change the query that is used to retrieve data for the report.

Parametri Parameters

È possibile utilizzare espressioni in un parametro per modificare il valore predefinito del parametro.You can use expressions in a parameter to vary the default value for the parameter. 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.For example, you can use a parameter to filter data to a particular user based on the user ID that is used to run the report.

  • L'espressione seguente, se utilizzata come valore predefinito di un parametro, recupera l'ID utente della persona che esegue il report:The following expression, when used as the default value for a parameter, collects the user ID of the person running the 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 .To refer to a parameter in a query parameter, filter expression, text box, or other area of the report, use the Parameters global collection. In questo esempio si presuppone che il parametro sia denominato Department:This example assumes that the parameter is named Department:

    =Parameters!Department.Value  
    
  • I parametri possono essere creati in un report ma impostati come nascosti.Parameters can be created in a report but set to hidden. 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.When the report runs on the report server, the parameter does not appear in the toolbar and the report reader cannot change the default value. È possibile utilizzare un parametro nascosto impostato su un valore predefinito come costante personalizzata.You can use a hidden parameter set to a default value as custom constant. È possibile utilizzare questo valore in qualsiasi espressione, anche in un'espressione di campo.You can use this value in any expression, including a field expression. L'espressione seguente identifica il campo specificato dal valore del parametro predefinito per il parametro denominato ParameterField:The following expression identifies the field specified by the default parameter value for the parameter named ParameterField:

    =Fields(Parameters!ParameterField.Value).Value  
    

Codice personalizzato Custom Code

È possibile utilizzare codice personalizzato in un report.You can use custom code in a report. Il codice personalizzato può essere incorporato in un report o archiviato in un assembly personalizzato utilizzato nel report.Custom code is either embedded in a report or stored in a custom assembly which is used in the report. Per ulteriori informazioni sul codice personalizzato, vedere codice personalizzato e riferimenti ad Assembly in espressioni in Progettazione Report ( SSRS ) .For more information about custom code, see Custom Code and Assembly References in Expressions in Report Designer (SSRS).

Utilizzo delle variabili di gruppo per l'aggregazione personalizzataUsing Group Variables for Custom Aggregation

È 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.You can initialize the value for a group variable that is local to a particular group scope and then include a reference to that variable in expressions. Una delle modalità di utilizzo di una variabile di gruppo con codice personalizzato consiste nell'implementare un'aggregazione personalizzata.One of the ways that you can use a group variable with custom code is to implement a custom aggregate. Per ulteriori informazioni, vedere Using Group Variables in Reporting Services 2008 for Custom Aggregation.For more information, see 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).For more information about variables, see Report and Group Variables Collections References (Report Builder and SSRS).

Eliminazione di valori Null o zero in fase di esecuzioneSuppressing Null or Zero Values at Run Time

Alcuni valori di un'espressione possono restituire un valore Null o non definito in fase di elaborazione del report.Some values in an expression can evaluate to null or undefined at report processing time. In questo modo possono verificarsi errori di run-time che generano la visualizzazione di #Errore nella casella di testo anziché dell'espressione valutata.This can create run-time errors that result in #Error displaying in the text box instead of the evaluated expression. 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 di funzione) viene valutata prima di essere passata alla routine che verifica se il risultato è true o false.The IIF function is particularly sensitive to this behavior because, unlike an If-Then-Else statement, each part of the IIF statement is evaluated (including function calls) before being passed to the routine that tests for true or false. L'istruzione =IIF(Fields!Sales.Value is NOTHING, 0, Fields!Sales.Value) genera #Error nel report visualizzabile se Fields!Sales.Value è NOTHING.The statement =IIF(Fields!Sales.Value is NOTHING, 0, Fields!Sales.Value) generates #Error in the rendered report if Fields!Sales.Value is NOTHING.

Per evitare questa condizione, utilizzare una delle strategie seguenti:To avoid this condition, use one of the following strategies:

  • 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.Set the numerator to 0 and the denominator to 1 if the value for field B is 0 or undefined; otherwise, set the numerator to the value for field A and the denominator to the value for field 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.Use a custom code function to return the value for the expression. Nell'esempio seguente viene restituita la differenza in percentuale tra un valore corrente e uno precedente.The following example returns the percentage difference between a current value and a previous value. Questa funzione può essere usata per calcolare la differenza tra due valori successivi e consente di gestire il caso limite del primo confronto (quando non è disponibile alcun valore precedente) e i casi in cui il valore precedente o il valore corrente sia null (Nothing in Visual BasicVisual Basic).This can be used to calculate the difference between any two successive values and it handles the edge case of the first comparison (when there is no previous value) and cases whether either the previous value or the current value is null (Nothing in Visual BasicVisual 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).The following expression shows how to call this custom code from a text box, for the “ColumnGroupByYear” container (group or data region).

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

    In questo modo si evitano eccezioni in fase di esecuzioneThis helps to avoid run-time exceptions. ed è ora possibile usare 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.You can now use an expression like =IIF(Me.Value < 0, "red", "black") in the Color property of the text box to conditionally the display text based on whether the values are greater than or less than 0.

Vedere ancheSee Also

Esempi di equazioni di filtro (Generatore report e SSRS) Filter Equation Examples (Report Builder and SSRS)
Esempi di espressione di raggruppamento ( Generatore report e SSRS ) Group Expression Examples (Report Builder and SSRS)
Utilizzo delle espressioni nei report ( Generatore report e SSRS ) Expression Uses in Reports (Report Builder and SSRS)
Espressioni ( Generatore report e SSRS ) Expressions (Report Builder and SSRS)
Filtri di uso comune (Generatore report e SSRS)Commonly Used Filters (Report Builder and SSRS)