Beispiele für Ausdrücke (Berichts-Generator und SSRS)Expression Examples (Report Builder and SSRS)

Ausdrücke werden in paginierten Reporting ServicesReporting Services -Berichten häufig zum Steuern des Inhalts und der Darstellung des Berichts verwendet.Expressions are used frequently in Reporting ServicesReporting Services paginated reports to control content and report appearance. Ausdrücke werden in MicrosoftMicrosoft Visual BasicVisual Basic geschrieben und können integrierte Funktionen, benutzerdefinierten Code, Berichts- und Gruppenvariablen sowie benutzerdefinierte Variablen verwenden.Expressions are written in MicrosoftMicrosoft Visual BasicVisual Basic, and can use built-in functions, custom code, report and group variables, and user-defined variables. Ausdrücke beginnen immer mit einem Gleichheitszeichen (=).Expressions begin with an equal sign (=). Weitere Informationen zum Ausdrucks-Editor und den Verweistypen, die Sie einfügen können, finden Sie unter Ausdrucksverwendungen in Berichten (Berichts-Generator und SSRS) und Hinzufügen eines Ausdrucks (Berichts-Generator und 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).

Wichtig

Bei aktiviertem RDL-Sandkasten können nur bestimmte Typen und Elemente zum Veröffentlichungszeitpunkt des Berichts im Ausdruckstext verwendet werden.When RDL Sandboxing is enabled, only certain types and members can be used in expression text at report publish time. Weitere Informationen finden Sie unter Enable and Disable RDL Sandboxing.For more information, see Enable and Disable RDL Sandboxing.

In diesem Thema sind Beispiele für Ausdrücke enthalten, die in einem Bericht für allgemeine Aufgaben verwendet werden können.This topic provides examples of expressions that can be used for common tasks in a report.

Beispiele für Ausdrücke und die jeweiligen Verwendungsmöglichkeiten finden Sie in den folgenden Themen:For expression examples for specific uses, see the following topics:

Weitere Informationen zu einfachen und komplexen Ausdrücken, zu den Verwendungsmöglichkeiten von Ausdrücken sowie zu den Verweistypen, die Sie in einen Ausdruck einbinden können, finden Sie unter Ausdrücke (Berichts-Generator und 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). Weitere Informationen zum Kontext, in dem Ausdrücke zum Berechnen von Aggregaten ausgewertet werden, finden Sie unter Ausdrucksbereich für Gesamtwerte, Aggregate und integrierte Auflistungen (Berichts-Generator und 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).

Um das Schreiben von Ausdrücken zu erlernen, die viele der Funktionen und Operatoren verwenden, die auch in den beispielhaften Ausdrücken in diesem Thema zum Schreiben von Berichten verwendet werden, finden Sie weitere Informationen unter 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.

FunctionsFunctions

Viele Ausdrücke in einem Bericht enthalten Funktionen.Many expressions in a report contain functions. Mit diesen Funktionen können Sie Daten formatieren, Code anwenden und auf Berichtsmetadaten zugreifen.You can format data, apply logic, and access report metadata using these functions. Sie können Ausdrücke schreiben, die Funktionen aus der MicrosoftMicrosoft Visual BasicVisual Basic-Laufzeitbibliothek sowie aus den Namespaces Convert und Math verwenden.You can write expressions that use functions from the MicrosoftMicrosoft Visual BasicVisual Basic run-time library, and from the Convert and Math namespaces. Sie können Verweise auf Funktionen aus anderen Assemblys oder benutzerdefinierten Code hinzufügen.You can add references to functions from other assemblies or custom code. Sie können auch Klassen aus MicrosoftMicrosoft .NET Framework.NET Framework einschließlich System.Text.RegularExpressions verwenden.You can also use classes from the MicrosoftMicrosoft .NET Framework.NET Framework, including System.Text.RegularExpressions.

Visual Basic-FunktionenVisual Basic Functions

Mit Visual BasicVisual Basic -Funktionen können Sie die Daten bearbeiten, die in Textfeldern angezeigt oder für Parameter, Eigenschaften oder sonstige Bereiche des Berichts verwendet werden.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 diesem Abschnitt werden Beispiele zur Veranschaulichung einiger dieser Funktionen bereitgestellt.This section provides examples demonstrating some of these functions. Weitere Informationen finden Sie unter Member der Visual Basic-Laufzeitbibliothek bei MSDN.For more information, see Visual Basic Runtime Library Members on MSDN.

Der .NET Framework.NET Framework bietet zahlreiche benutzerdefinierte Formatoptionen, z. B. für bestimmte Datumsformate.The .NET Framework.NET Framework provides many custom format options, for example, for specific date formats. Weitere Informationen finden Sie unter Formatierung von Typen auf MSDN.For more information, see Formatting Types on MSDN.

Mathematische FunktionenMath Functions

  • Die Round -Funktion ermöglicht das Runden von Zahlen auf die nächste ganze Zahl.The Round function is useful to round numbers to the nearest integer. Mit dem folgenden Ausdruck wird der Wert 1,3 auf 1 abgerundet:The following expression rounds a 1.3 to 1:

    = Round(1.3)  
    

    Sie können auch einen Ausdruck schreiben, um einen Wert auf ein von Ihnen angegebenes Vielfaches zu runden (vergleichbar mit der MRound -Funktion in Excel).You can also write an expression to round a value to a multiple that you specify, similar to the MRound function in Excel. Multiplizieren Sie den Wert mit einem Faktor, der eine ganze Zahl erzeugt, runden Sie die Zahl, und dividieren Sie dann durch den gleichen Faktor.Multiply the value by a factor that creates an integer, round the number, and then divide by the same factor. Verwenden Sie z. B. den folgenden Ausdruck, um 1,3 auf das nächste Vielfache von 0,2 (1,4) zu runden:For example, to round 1.3 to the nearest multiple of .2 (1.4), use the following expression:

    = Round(1.3*5)/5  
    

DatumsfunktionenDate Functions

  • Die Today -Funktion stellt das aktuelle Datum bereit.The Today function provides the current date. Mit diesem Ausdruck können Sie in einem Textfeld das Datum im Bericht anzeigen oder aber in einem Parameter Daten basierend auf dem aktuellen Datum filtern.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()  
    
  • Verwenden Sie die DateInterval-Funktion, um einen bestimmten Teil eines Datums zu extrahieren.Use the DateInterval function to pull out a specific part of a date. Im Folgenden finden Sie einige gültige DateInterval-Parameter:Here are some valid DateInterval parameters:

    • DateInterval.SecondDateInterval.Second
    • DateInterval.MinuteDateInterval.Minute
    • DateInterval.HourDateInterval.Hour
    • DateInterval.WeekdayDateInterval.Weekday
    • DateInterval.DayDateInterval.Day
    • DateInterval.DayOfYearDateInterval.DayOfYear
    • DateInterval.WeekOfYearDateInterval.WeekOfYear
    • DateInterval.MonthDateInterval.Month
    • DateInterval.QuarterDateInterval.Quarter
    • DateInterval.YearDateInterval.Year

    Dieser Ausdruck zeigt beispielsweise die Wochenzahl im aktuellen Jahr für das heutige Datum an:For example, this expression will show the number of the week in the current year for today's date:

    =DatePart(DateInterval.WeekOfYear, today()) 
    
  • Mit der DateAdd -Funktion wird ein Datumsbereich basierend auf einem einzigen Parameter bereitgestellt.The DateAdd function is useful for supplying a range of dates based on a single parameter. Der folgende Ausdruck liefert das Datum des Tages, der sechs Monate nach dem Datum des StartDate-Parameters liegt.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)  
    
  • Die Year -Funktion zeigt das Jahr für ein bestimmtes Datum an.The Year function displays the year for a particular date. Hiermit können Sie Datumsangaben zusammenfassen oder die Jahreszahl für eine Datumsgruppe anzeigen.You can use this to group dates together or to display the year as a label for a set of dates. Dieser Ausdruck liefert das Jahr für eine bestimmte Gruppe von Bestelldaten.This expression provides the year for a given group of sales order dates. Mit der Month -Funktion und anderen Funktionen können Datumsangaben auch bearbeitet werden.The Month function and other functions can also be used to manipulate dates. Weitere Informationen finden Sie in der Dokumentation zu Visual BasicVisual Basic.For more information, see the Visual BasicVisual Basic documentation.

    =Year(Fields!OrderDate.Value)  
    
  • Sie können Funktionen in einem Ausdruck kombinieren, um das Format anzupassen.You can combine functions in an expression to customize the format. Durch den folgenden Ausdruck wird das Format Monat-Tag-Jahr eines Datums in das Format Monat-Woche-Woche geändert.The following expression changes the format of a date in the form month-day-year to month-week-week number. 12/23/2009 wird z. B. in Dezember Woche 3 geändert: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  
    

    Bei Verwendung als berechnetes Feld in einem Dataset können Sie diesen Ausdruck für ein Diagramm verwenden, um Werte nach der Woche in jedem Monat zu aggregieren.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.

  • Der folgende Ausdruck legt für den SellStartDate-Wert das Format MMM-YY fest.The following expression formats the SellStartDate value as MMM-YY. Beim SellStartDate-Feld handelt es sich um einen datetime-Datentyp.SellStartDate field is a datetime data type.

    =FORMAT(Fields!SellStartDate.Value, "MMM-yy")  
    
  • Der folgende Ausdruck legt für den SellStartDate-Wert das Format dd/MM/yyyy fest.The following expression formats the SellStartDate value as dd/MM/yyyy. Beim SellStartDate-Feld handelt es sich um einen datetime-Datentyp.The SellStartDate field is a datetime data type.

    =FORMAT(Fields!SellStartDate.Value, "dd/MM/yyyy")  
    
  • Die CDate -Funktion konvertiert den Wert in ein Datum.The CDate function converts the value to a date. Die Now -Funktion gibt einen Datumswert zurück, der das aktuelle Datum und die aktuelle Uhrzeit des Systems enthält.The Now function returns a date value containing the current date and time according to your system. DateDiff gibt einen Long-Wert zurück, der die Zahl der Zeitintervalle zwischen zwei Datumswerten angibt.DateDiff returns a Long value specifying the number of time intervals between two Date values.

    Im folgenden Beispiel wird das Anfangsdatum des aktuellen Jahres angezeigt.The 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"))  
    
  • Im folgenden Beispiel wird das Anfangsdatum des vorherigen Monats basierend auf dem aktuellen Monat angezeigt.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"))  
    
  • Der folgende Ausdruck generiert die Jahre des Intervalls zwischen SellStartDate und LastReceiptDate.The following expression generates the interval years between SellStartDate and LastReceiptDate. Diese Felder sind in zwei unterschiedlichen Datasets enthalten, DataSet1 und DataSet2.These fields are in two different datasets, DataSet1 and DataSet2. Die Aggregatfunktion First-Funktion (Berichts-Generator und SSRS) gibt den ersten Wert von SellStartDate in DataSet1 und den ersten Wert von LastReceiptDate in DataSet2 zurück.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"))  
    
  • Die Funktion DatePart gibt einen ganzzahligen Wert zurück, der die angegebene Komponente eines bestimmten Date-Werts enthält. Der folgende Ausdruck gibt das Jahr für den ersten Wert von SellStartDate in DataSet1 zurück.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. Der Datasetbereich ist angegeben, weil mehrere Datasets im Bericht enthalten sind.The dataset scope is specified because there are multiple datasets in the report.

    =Datepart("yyyy", First(Fields!SellStartDate.Value, "DataSet1"))  
    
    
  • Die Funktion DateSerial gibt ein Date-Wert zurück, der das angegebene Jahr, den angegebenen Monat und Tag mit der auf Mitternacht festgelegten Zeitinformation darstellt.The DateSerial function returns a Date value representing a specified year, month, and day, with the time information set to midnight. Im folgenden Beispiel wird das Enddatum des vorherigen Monats basierend auf dem aktuellen Monat angezeigt.The following example displays the ending date for the prior month, based on the current month.

    =DateSerial(Year(Now()), Month(Now()), "1").AddDays(-1)  
    
  • Mit den folgenden Ausdrücken werden unterschiedliche Datumsangaben basierend auf dem vom Benutzer ausgewählten date-Parameter angezeigt.The following expressions display various dates based on a date parameter value selected by the user.

BeispielbeschreibungExample Description BeispielExample
gesternYesterday =DateSerial(Year(Parameters!TodaysDate.Value),Month(Parameters!TodaysDate.Value),Day(Parameters!TodaysDate.Value)-1)
Vor zwei TagenTwo Days Ago =DateSerial(Year(Parameters!TodaysDate.Value),Month(Parameters!TodaysDate.Value),Day(Parameters!TodaysDate.Value)-2)
Vor einem MonatOne Month Ago =DateSerial(Year(Parameters!TodaysDate.Value),Month(Parameters!TodaysDate.Value)-1,Day(Parameters!TodaysDate.Value))
Vor zwei MonatenTwo Months Ago =DateSerial(Year(Parameters!TodaysDate.Value),Month(Parameters!TodaysDate.Value)-2,Day(Parameters!TodaysDate.Value))
Vor einem JahrOne Year Ago =DateSerial(Year(Parameters!TodaysDate.Value)-1,Month(Parameters!TodaysDate.Value),Day(Parameters!TodaysDate.Value))
Vor zwei JahrenTwo Years Ago =DateSerial(Year(Parameters!TodaysDate.Value)-2,Month(Parameters!TodaysDate.Value),Day(Parameters!TodaysDate.Value))

ZeichenfolgenfunktionenString Functions

  • Mithilfe von Verkettungsoperatoren und Visual BasicVisual Basic -Konstanten können Sie mehrere Felder kombinieren.Combine more than one field by using concatenation operators and Visual BasicVisual Basic constants. Der folgende Ausdruck gibt zwei Felder zurück, die sich jeweils in einer eigenen Zeile in demselben Textfeld befinden.The following expression returns two fields, each on a separate line in the same text box:

    =Fields!FirstName.Value & vbCrLf & Fields!LastName.Value   
    
  • Mit der Format -Funktion können Sie Datumsangaben und Zahlen in einer Zeichenfolge formatieren.Format dates and numbers in a string with the Format function. Mit dem folgenden Ausdruck werden Werte des StartDate -Parameters und des EndDate -Parameters im langen Datumsformat angezeigt.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")    
    

    Enthält das Textfeld nur ein Datum oder eine Zahl, sollten Sie die Format-Eigenschaft des Textfelds anstelle der Format -Funktion im Textfeld verwenden, um eine Formatierung anzuwenden.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.

  • Mit den Funktionen Right, Lenund InStr kann eine Teilzeichenfolge zurückgegeben werden, um z.B. DOMÄNE\Benutzername auf den Benutzernamen zu verkürzen.The Right, Len, and InStr functions are useful for returning a substring, for example, trimming DOMAIN\username to just the user name. Der folgende Ausdruck gibt den Teil der Zeichenfolge rechts neben einem umgekehrten Schrägstrich (\) des User-Parameters zurück: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, "\"))  
    

    Der folgende Ausdruck liefert dasselbe Ergebnis, wobei Elemente der .NET Framework.NET Framework String-Klasse anstelle von Visual BasicVisual Basic-Funktionen verwendet werden: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)  
    
  • Die ausgewählten Werte aus einem mehrwertigen Parameter können angezeigt werden.Display the selected values from a multivalue parameter. Im folgenden Beispiel wird die Join -Funktion zum Verketten der ausgewählten Werte des MySelection -Parameters zu einer einzelnen Zeichenfolge verwendet, die als Ausdruck für den Wert eines Textfelds in einem Berichtselement festgelegt werden kann: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)  
    

    Das folgende Beispiel hat die gleiche Funktion wie das Beispiel oben und zeigt darüber hinaus vor der Liste der ausgewählten Werte eine Textzeichenfolge an: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, " & ")  
    
    
  • Regex-Funktionen von .NET Framework.NET Framework System.Text.RegularExpressions sind für das Ändern des Formats vorhandener Zeichenfolgen wie beispielsweise das Formatieren einer Telefonnummer hilfreich.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. Für den folgenden Ausdruck wird die Replace -Funktion zum Ändern des Formats einer zehnstelligen Telefonnummer in ein Feld von „nnn-nnn-nnnn“ in „(nnn) nnn-nnnn“ verwendet: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")  
    

    Hinweis

    Überprüfen Sie, ob der Wert für Fields!Phone.Value unter Umständen zusätzliche Leerzeichen enthält und vom Typ String.Verify that the value for Fields!Phone.Value has no extra spaces and is of type String.

NachschlagenLookup

  • Durch Angabe eines Schlüsselfelds können Sie mit der Lookup -Funktion einen Wert von einem Dataset für eine 1:1-Beziehung, beispielsweise ein Schlüssel-Wert-Paar, abrufen.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. Der folgende Ausdruck zeigt den Produktnamen aus einem Dataset („Product“) an, wenn der Produktbezeichner als Grundlage für die Übereinstimmung angegeben ist: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

  • Indem Sie ein Schlüsselfeld angeben, können Sie mithilfe der LookupSet -Funktion einen Satz von Werten für eine 1:n-Beziehung aus einem Dataset abrufen.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. Beispiel: Eine Person kann mehrere Telefonnummern haben.For example, a person can have multiple telephone numbers. Nehmen Sie im folgenden Beispiel an, dass das Dataset PhoneList in jeder Zeile einen Personenbezeichner und eine Telefonnummer enthält.In the following example, assume the dataset PhoneList contains a person identifier and a telephone number in each row. LookupSet gibt ein Array von Werten zurück.LookupSet returns an array of values. Der folgende Ausdruck kombiniert die Rückgabewerte in eine einzelne Zeichenfolge und zeigt die Liste der Telefonnummern für die mit "ContactID" angegebene Person an: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"),",")  
    

KonvertierungsfunktionenConversion Functions

Mithilfe der Visual BasicVisual Basic -Funktionen können Sie einen Wert von einem Datentyp in einen anderen Datentyp konvertieren.You can use Visual BasicVisual Basic functions to convert a field from the one data type to a different data type. Konvertierungsfunktionen können zum Konvertieren des Standarddatentyps für ein Feld in einen Datentyp verwendet werden, der für Berechnungen oder zum Kombinieren von Text erforderlich ist.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.

  • Mit dem folgenden Ausdruck wird die Konstante 500 in den Typ "Decimal" konvertiert, um sie mit einem Transact-SQLTransact-SQL money-Datentyp im Feld "Wert" für einen Filterausdruck zu vergleichen.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)  
    
  • Mit dem folgenden Ausdruck wird die Anzahl der für den mehrwertigen MySelection-Parameter ausgewählten Werte angezeigt.The following expression displays the number of values selected for the multivalue parameter MySelection.

    =CStr(Parameters!MySelection.Count)  
    

EntscheidungsfunktionenDecision Functions

  • Die Iif -Funktion gibt einen von zwei Werten zurück, und zwar abhängig davon, ob der Ausdruck mit TRUE ausgewertet wird.The Iif function returns one of two values depending on whether the expression is true or not. Im folgenden Ausdruck wird mit der Iif -Funktion der boolesche Wert TRUE zurückgegeben, falls der Wert von LineTotal 100 überschreitet.The following expression uses the Iif function to return a Boolean value of True if the value of LineTotal exceeds 100. Andernfalls wird Falsezurückgegeben:Otherwise it returns False:

    =IIF(Fields!LineTotal.Value > 100, True, False)  
    
  • Verwenden Sie mehrere IIF -Funktionen (die auch als „geschachtelte Iif-Funktionen“ bezeichnet werden), um einen von drei Werten in Abhängigkeit vom Wert von PctCompletezurückzugeben.Use multiple IIF functions (also known as "nested IIFs") to return one of three values depending on the value of PctComplete. Der folgende Ausdruck kann in die Füllfarbe eines Textfelds platziert werden, um die Hintergrundfarbe basierend auf dem Wert im Textfeld zu ändern.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"))  
    

    Werte, die größer oder gleich 10 sind, werden mit einem grünen Hintergrund angezeigt. Werte zwischen 1 und 9 erhalten einen blauen Hintergrund, und Werte kleiner als 1 werden mit rotem Hintergrund dargestellt.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.

  • Eine andere Möglichkeit, die gleiche Funktionalität zu erhalten, bietet die Switch -Funktion.A different way to get the same functionality uses the Switch function. Die Switch -Funktion ist nützlich, wenn Sie drei oder mehr Bedingungen testen müssen.The Switch function is useful when you have three or more conditions to test. Die Switch -Funktion gibt den Wert zurück, der mit dem ersten Ausdruck in einer Reihe verknüpft ist, die mit TRUE ausgewertet wird: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")  
    

    Werte, die größer oder gleich 10 sind, werden mit einem grünen Hintergrund angezeigt. Werte zwischen 1 und 9 erhalten einen blauen Hintergrund, Werte, die gleich 1 sind, einen gelben Hintergrund, und Werte, die 0 oder kleiner sind, werden mit einem roten Hintergrund dargestellt.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.

  • Mit dem Ausdruck wird der Wert des Feldes ImportantDate geprüft und "Red" zurückgegeben, wenn er älter als eine Woche ist. Andernfalls wird "Blue" zurückgegeben.Test the value of the ImportantDate field and return "Red" if it is more than a week old, and "Blue" otherwise. Mit diesem Ausdruck kann die Color-Eigenschaft eines Textfelds in einem Berichtselement gesteuert werden: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")  
    
  • Mit dem Ausdruck wird der Wert des Felds PhoneNumber geprüft und „No Value“ zurückgegeben, wenn er NULL (Nothing in Visual BasicVisual Basic) ist. Andernfalls wird der Wert der Telefonnummer zurückgegeben.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. Mit diesem Ausdruck kann der Wert eines Textfelds in einem Berichtselement gesteuert werden.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)  
    
  • Mit dem Ausdruck wird der Wert des Felds Department geprüft und entweder ein Unterberichtsname oder NULL (Nothing in Visual BasicVisual Basic) zurückgegeben.Test the value of the Department field and return either a subreport name or a null (Nothing in Visual BasicVisual Basic). Dieser Ausdruck kann für bedingte Drillthrough-Unterberichte verwendet werden.This expression can be used for conditional drillthrough subreports.

    =IIF(Fields!Department.Value = "Development", "EmployeeReport", Nothing)  
    
  • Prüft, ob ein Feldwert NULL ist.Test if a field value is null. Dieser Ausdruck kann verwendet werden, um die Hidden -Eigenschaft eines Bildberichtselements zu steuern.This expression can be used to control the Hidden property of an image report item. Im folgenden Beispiel wird das durch das Feld [LargePhoto] angegebene Bild nur angezeigt, wenn der Wert des Felds ungleich NULL ist.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)  
    
  • Die MonthName -Funktion gibt einen Zeichenfolgenwert zurück, der den Namen des angegebenen Monats enthält.The MonthName function returns a string value containing the name of the specified month. Im folgenden Beispiel wird NZ im Monatsfeld angezeigt, wenn das Feld den Wert 0 enthält.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)))  
    
    

Berichtsfunktionen:Report Functions

In einem Ausdruck können Sie einen Verweis auf weitere Berichtsfunktionen hinzufügen, die Daten in einem Bericht bearbeiten.In an expression, you can add a reference to additional report functions that manipulate data in a report. In diesem Abschnitt werden Beispiele für zwei dieser Funktionen behandelt.This section provides examples for two of these functions. Weitere Informationen zu Berichtsfunktionen sowie Beispiele finden Sie unter Aggregatfunktionsreferenz (Berichts-Generator und SSRS).For more information about report functions and examples, see Aggregate Functions Reference (Report Builder and SSRS).

SumSum

  • Die Sum -Funktion gibt die Summe von Werten in einer Gruppe oder einem Datenbereich zurück.The Sum function can total the values in a group or data region. Diese Funktion ist hilfreich für die Kopf- oder Fußzeile einer Gruppe.This function can be useful in the header or footer of a group. Der folgende Ausdruck zeigt die Summe von Daten in der Gruppe bzw. im Datenbereich Order an:The following expression displays the sum of data in the Order group or data region:

    =Sum(Fields!LineTotal.Value, "Order")  
    
  • Sie können auch die Sum -Funktion für bedingte Aggregatberechnungen verwenden.You can also use the Sum function for conditional aggregate calculations. Wenn ein Dataset ein Feld mit dem Namen State und den möglichen Werten Not Started, Started und Finished enthält, wird mit dem folgenden Ausdruck die Aggregatsumme bei Platzierung in einem Gruppenheader nur für den Wert Finished berechnet: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))  
    

RowNumberRowNumber

  • Mit der RowNumber -Funktion, die in einem Textfeld innerhalb eines Datenbereichs verwendet wird, wird die Zeilennummer für jede Instanz des Textfelds angezeigt, in der der Ausdruck enthalten ist.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. Diese Funktion eignet sich, um Zeilen in einer Tabelle zu nummerieren.This function can be useful to number rows in a table. Sie ist auch bei komplizierteren Aufgaben hilfreich, z. B. beim Einfügen von Seitenumbrüchen auf der Grundlage der Zeilenanzahl.It can also be useful for more complex tasks, such as providing page breaks based on number of rows. Weitere Informationen finden Sie weiter unten unter " Seitenumbrüche ".For more information, see Page Breaks in this topic.

    Der Bereich, den Sie für RowNumber -Steuerelemente angeben, wenn die Neunumerierung beginnt.The scope you specify for RowNumber controls when renumbering begins. Das Nothing -Schlüsselwort gibt an, dass die Funktion die Zählung mit der ersten Zeile im äußersten Datenbereich beginnt.The Nothing keyword indicates that the function will start counting at the first row in the outermost data region. Wenn Sie in geschachtelten Datenbereichen mit dem Zählen beginnen möchten, verwenden Sie den Namen des Datenbereichs.To start counting within nested data regions, use the name of the data region. Um mit dem Zählen innerhalb einer Gruppe zu beginnen, verwenden Sie den Namen der Gruppe.To start counting within a group, use the name of the group.

    =RowNumber(Nothing)  
    

Darstellung von BerichtsdatenAppearance of Report Data

Mit Ausdrücken können Sie die Darstellung von Daten in einem Bericht ändern.You can use expressions to manipulate how data appears on a report. Beispielsweise können Sie die Werte von zwei Feldern in einem einzigen Textfeld anzeigen, Informationen zum Bericht anzeigen oder die Methode zum Einfügen von Seitenumbrüchen im Bericht ändern.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.

Seitenkopfzeilen und -fußzeilenPage Headers and Footers

Beim Entwerfen eines Berichts soll möglicherweise der Name des Berichts und die Seitenzahl in der Fußzeile des Berichts angezeigt werden.When designing a report, you may want to display the name of the report and page number in the report footer. Dazu können Sie die folgenden Ausdrücke verwenden:To do this, you can use the following expressions:

  • Der folgende Ausdruck stellt den Namen des Berichts und die Zeit seiner Ausführung bereit.The following expression provides the name of the report and the time it was run. Er kann in einem Textfeld in der Fußzeile oder im Hauptteil des Berichts eingefügt werden.It can be placed in a text box in the report footer or in the body of the report. Die Zeit wird mit der .NET Framework.NET Framework -Formatzeichenfolge für ein kurzes Datum formatiert:The time is formatted with the .NET Framework.NET Framework formatting string for short date:

    =Globals.ReportName & ", dated " & Format(Globals.ExecutionTime, "d")  
    
  • Der folgende Ausdruck zeigt in einem Textfeld in der Fußzeile eines Berichts die Seitenzahl und die Gesamtseitenzahl im Bericht an: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  
    

Die folgenden Beispiele veranschaulichen, wie der erste und letzte Wert einer Seite in der Seitenkopfzeile angezeigt wird, ähnlich wie bei einer Verzeichnisauflistung.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. Bei diesem Beispiel wird von einem Datenbereich ausgegangen, der das LastName-Textfeld enthält.The example assumes a data region that contains a text box named LastName.

  • Der folgende Ausdruck, der sich in einem Textfeld auf der linken Seite des Seitenkopfes befindet, gibt den ersten Wert des LastName -Textfelds auf der Seite an: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)  
    
  • Der folgende Ausdruck, der sich in einem Textfeld auf der rechten Seite des Seitenkopfes befindet, gibt den letzten Wert des LastName -Textfelds auf der Seite an: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)  
    

Das folgende Beispiel beschreibt, wie die Summe einer Seite angezeigt wird.The following example describes how to display a page total. Bei diesem Beispiel wird von einem Datenbereich ausgegangen, der das Cost-Textfeld enthält.The example assumes a data region that contains a text box named Cost.

  • Der folgende Ausdruck, im Seitenkopf oder -fuß platziert, gibt die Summe der Werte im Cost -Textfeld für die Seite an: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)  
    

Hinweis

In einem Seitenkopf oder -fuß kann pro Ausdruck nur auf ein einziges Berichtselement verwiesen werden.You can refer to only one report item per expression in a page header or footer. In Seitenkopf- und -fußausdrücken können Sie außerdem auf den Textfeldnamen, jedoch nicht auf den tatsächlichen Datenausdruck innerhalb des Textfelds verweisen.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.

SeitenumbrüchePage Breaks

In manchen Berichten möchten Sie möglicherweise einen Seitenumbruch am Ende einer bestimmten Anzahl von Zeilen einfügen, und zwar anstelle von bzw. zusätzlich zu Gruppen oder Berichtselementen.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. Erstellen Sie dazu eine Gruppe mit den gewünschten Gruppen- oder Detaildatensätzen, und fügen Sie der Gruppe einen Seitenumbruch hinzu. Fügen Sie anschließend einen Gruppenausdruck hinzu, um eine Gruppierung nach einer bestimmten Anzahl von Zeilen durchzuführen.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.

  • Der folgende Ausdruck weist im Gruppenausdruck einer Gruppe von jeweils 25 Zeilen eine Zahl zu.The following expression, when placed in the group expression, assigns a number to each set of 25 rows. Wenn ein Seitenumbruch für die Gruppe definiert ist, ergibt sich aus diesem Ausdruck alle 25 Zeilen ein Seitenumbruch.When a page break is defined for the group, this expression results in a page break every 25 rows.

    =Ceiling(RowNumber(Nothing)/25)  
    

    Damit der Benutzer einen Wert für die Anzahl der Zeilen pro Seite festlegen kann, erstellen Sie einen Parameter mit dem Namen RowsPerPage und basieren den Gruppenausdruck auf dem Parameter, wie im folgenden Ausdruck gezeigt: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)  
    

    Weitere Informationen zum Festlegen von Seitenumbrüchen für eine Gruppe finden Sie unter Hinzufügen eines Seitenumbruchs (Berichts-Generator und SSRS).For more information about setting page breaks for a group, see Add a Page Break (Report Builder and SSRS).

EigenschaftenProperties

Mit Ausdrücken werden nicht nur Daten in Textfeldern angezeigt.Expressions are not only used to display data in text boxes. Sie können mit Ausdrücken auch festlegen, wie Eigenschaften auf Berichtselemente angewendet werden.They can also be used to change how properties are applied to report items. Sie können Formatinformationen für ein Berichtselement ändern oder festlegen, ob es angezeigt wird.You can change style information for a report item, or change its visibility.

FormatierungFormatting

  • Wenn der folgende Ausdruck in der Color-Eigenschaft eines Textfelds verwendet wird, wird die Farbe des Texts basierend auf dem Wert des Felds Profit geändert: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")  
    

    Sie können auch die Visual BasicVisual Basic -Objektvariable Meverwenden.You can also use the Visual BasicVisual Basic object variable Me. Diese Variable bietet eine andere Möglichkeit, auf den Wert eines Textfeldes zu verweisen.This variable is another way of referring to the value of a text box.

    =Iif(Me.Value < 0, "Red", "Black")

  • Wenn der folgende Ausdruck in der BackgroundColor-Eigenschaft eines Berichtselements in einem Datenbereich verwendet wird, wird die Hintergrundfarbe der Zeilen von hellgrün in weiß geändert: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")  
    

    Wenn Sie einen Ausdruck für einen angegebenen Bereich verwenden, müssen Sie möglicherweise das Dataset für die Aggregatfunktion angeben: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")  
    

Hinweis

Verfügbare Farben stammen aus der .NET Framework.NET Framework KnownColor-Enumeration.Available colors come from the .NET Framework.NET Framework KnownColor enumeration.

DiagrammfarbenChart Colors

Mit benutzerdefiniertem Code können Sie die Reihenfolge steuern, in der Datenpunktwerten Farben zugeordnet werden, um Farben für ein Formdiagramm anzugeben.To specify colors for a Shape chart, you can use custom code to control the order that colors are mapped to data point values. Dies hilft bei der Verwendung konsistenter Farben für mehrere Diagramme mit gleichen Kategoriegruppen.This helps you use consistent colors for multiple charts that have the same category groups. Weitere Informationen finden Sie unter Angeben von Farben, die für mehrere Formdiagramme konsistent sind (Berichts-Generator und SSRS).For more information, see Specify Consistent Colors across Multiple Shape Charts (Report Builder and SSRS).

SichtbarkeitVisibility

Berichtselemente können mithilfe der Sichtbarkeitseigenschaften ein- und ausgeblendet werden.You can show and hide items in a report using the visibility properties for the report item. In einem Datenbereich, wie z. B. einer Tabelle, können die Detailzeilen basierend auf dem Wert eines Ausdrucks anfänglich ausgeblendet werden.In a data region such as a table, you can initially hide detail rows based on the value in an expression.

  • Wenn der folgende Ausdruck für die ursprüngliche Sichtbarkeit von Detailzeilen in einer Gruppe verwendet wird, werden die Detailzeilen für alle Umsätze angezeigt, die im PctQuota -Feld den Wert 90 % übersteigen: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)  
    
  • Wenn der folgende Ausdruck in der Hidden-Eigenschaft einer Tabelle festgelegt ist, wird die Tabelle mithilfe des Ausdrucks nur angezeigt, wenn sie mehr als 12 Zeilen enthält: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)  
    
  • Wenn der folgende Ausdruck in der Hidden -Eigenschaft einer Spalte festgelegt wird, wird die Spalte nur angezeigt, wenn das Feld im Berichtsdataset vorhanden ist, nachdem die Daten aus der Datenquelle abgerufen wurden: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)  
    

URLsURLs

Sie können URLs anpassen, indem Sie die Berichtsdaten verwenden und bedingt steuern, ob URLs als Aktion für ein Textfeld hinzugefügt werden.You can customize URLs by using report data and also conditionally control whether URLs are added as an action for a text box.

  • Wenn der folgende Ausdruck als Aktion für ein Textfeld verwendet wird, wird eine angepasste URL generiert, die das Datasetfeld EmployeeID als URL-Parameter angibt.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.

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

    Weitere Informationen finden Sie unter Hinzufügen eines Links zu einer URL (Berichts-Generator und SSRS).For more information, see Add a Hyperlink to a URL (Report Builder and SSRS).

  • Der folgende Ausdruck steuert bedingt, ob eine URL in einem Textfeld hinzugefügt wird.The following expression conditionally controls whether to add a URL in a text box. Dieser Ausdruck ist von einem Parameter mit dem Namen IncludeURLs abhängig, mit dem ein Benutzer entscheiden kann, ob aktive URLs in einen Bericht eingeschlossen werden sollen.This expression depends on a parameter named IncludeURLs that allows a user to decide whether to include active URLs in a report. Dieser Ausdruck wird als Aktion in einem Textfeld festgelegt.This expression is set as an action on a text box. Indem Sie den Parameter auf FALSE festlegen und dann den Bericht anzeigen, können Sie den Bericht ohne Links nach Microsoft Excel exportieren.By setting the parameter to False and then viewing the report, you can export the report Microsoft Excel without hyperlinks.

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

BerichtsdatenReport Data

Mit Ausdrücken können die im Bericht verwendeten Daten bearbeitet werden.Expressions can be used to manipulate the data that is used in the report. Sie können auf Parameter und sonstige Berichtsinformationen verweisen.You can refer to parameters and other report information. Es ist sogar möglich, die Abfrage zu ändern, mit der Daten für den Bericht abgerufen werden.You can even change the query that is used to retrieve data for the report.

ParameterParameters

Ausdrücke können in einem Parameter verwendet werden, um den Standardwert für den Parameter zu ändern.You can use expressions in a parameter to vary the default value for the parameter. Beispielsweise können Sie mithilfe eines Parameters Daten nach einem bestimmten Benutzer basierend auf der Benutzer-ID filtern, mit der der Bericht ausgeführt wird.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.

  • Wenn der folgende Ausdruck als Standardwert für einen Parameter verwendet wird, wird die Benutzer-ID der Person abgerufen, die den Bericht ausführt:The following expression, when used as the default value for a parameter, collects the user ID of the person running the report:

    =User!UserID  
    
  • Verwenden Sie die globale Parameters -Auflistung, um auf einen Parameter in einem Abfrageparameter, auf einen Filterausdruck, ein Textfeld oder einen anderen Bereich des Berichts zu verweisen.To refer to a parameter in a query parameter, filter expression, text box, or other area of the report, use the Parameters global collection. Bei diesem Beispiel wird von einem Parameter namens Departmentausgegangen:This example assumes that the parameter is named Department:

    =Parameters!Department.Value  
    
  • Parameter können in einem Bericht erstellt und trotzdem ausgeblendet werden.Parameters can be created in a report but set to hidden. Wenn der Bericht auf dem Berichtsserver ausgeführt wird, erscheint der Parameter nicht auf der Symbolleiste und der Leser des Berichts kann den Standardwert nicht ändern.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. Sie können einen ausgeblendeten, auf einen Standardwert festgelegten Parameter als benutzerdefinierte Konstante verwenden.You can use a hidden parameter set to a default value as custom constant. Diesen Wert können Sie in einem beliebigen Ausdruck verwenden, einschließlich eines Feldausdrucks.You can use this value in any expression, including a field expression. Der folgende Ausdruck gibt das vom Standardparameterwert für den Parameter mit dem Namen ParameterFieldangegebene Feld an:The following expression identifies the field specified by the default parameter value for the parameter named ParameterField:

    =Fields(Parameters!ParameterField.Value).Value  
    

Benutzerdefinierter CodeCustom Code

In einem Bericht kann benutzerdefinierter Code verwendet werden.You can use custom code in a report. Benutzerdefinierter Code ist entweder in einen Bericht eingebettet oder in einer benutzerdefinierten Assembly gespeichert, die im Bericht verwendet wird.Custom code is either embedded in a report or stored in a custom assembly which is used in the report. Weitere Informationen zu benutzerdefiniertem Code finden Sie unter Benutzerdefinierter Code und Assemblyverweise in Ausdrücken in Berichts-Designer (SSRS).For more information about custom code, see Custom Code and Assembly References in Expressions in Report Designer (SSRS).

Verwenden von Gruppenvariablen für benutzerdefinierte AggregationUsing Group Variables for Custom Aggregation

Sie können den Wert für eine Gruppenvariable initialisieren, die zu einem bestimmten Gruppenbereich lokal ist, und anschließend einen Verweis auf diese Variable in den Ausdrücken einbinden.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. Eine der Methoden, wie Sie eine Gruppenvariable mit benutzerdefiniertem Code verwenden können, besteht darin, ein benutzerdefiniertes Aggregat zu implementieren.One of the ways that you can use a group variable with custom code is to implement a custom aggregate. Weitere Informationen finden Sie unter Gruppevariablen in Reporting Services 2008 für benutzerdefinierte Aggregation verwenden.For more information, see Using Group Variables in Reporting Services 2008 for Custom Aggregation.

Weitere Informationen zu Variablen finden Sie unter Verweise auf Berichts- und Gruppenvariablensammlungen (Berichts-Generator und SSRS).For more information about variables, see Report and Group Variables Collections References (Report Builder and SSRS).

Unterdrücken von NULL oder 0 zur LaufzeitSuppressing Null or Zero Values at Run Time

Einige Werte in einem Ausdruck können zur Berichtsverarbeitungszeit mit NULL oder "nicht definiert" ausgewertet werden.Some values in an expression can evaluate to null or undefined at report processing time. Dies kann zu Laufzeitfehlern und zur Anzeige von #Error im Textfeld anstelle des ausgewerteten Ausdrucks führen.This can create run-time errors that result in #Error displaying in the text box instead of the evaluated expression. Die IIF -Funktion ist für dieses Verhalten besonders empfindlich, da im Gegensatz zu einer If-Then-Else-Anweisung jeder Teil der IIF -Anweisung (einschließlich Funktionsaufrufe) ausgewertet wird, bevor er an die Routine zur Prüfung auf TRUE oder FALSEübergeben wird.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. Die Anweisung =IIF(Fields!Sales.Value is NOTHING, 0, Fields!Sales.Value) generiert #Error im gerenderten Bericht, wenn Fields!Sales.Value NOTHING ist.The statement =IIF(Fields!Sales.Value is NOTHING, 0, Fields!Sales.Value) generates #Error in the rendered report if Fields!Sales.Value is NOTHING.

Wählen Sie eine der folgenden Strategien aus, um diesen Fehler zu vermeiden:To avoid this condition, use one of the following strategies:

  • Legen Sie den Zähler auf 0 und den Nenner auf 1 fest, wenn der Wert für das Feld B 0 oder nicht definiert ist. Andernfalls legen Sie den Zähler auf den Wert für Feld A und den Nenner auf den Wert für Feld B fest.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))  
    
  • Verwenden Sie eine benutzerdefinierte Codefunktion, um den Wert für den Ausdruck zurückzugeben.Use a custom code function to return the value for the expression. Im folgenden Beispiel wird der Prozentsatzunterschied zwischen einem aktuellen Wert und einem vorherigen Wert zurückgegeben.The following example returns the percentage difference between a current value and a previous value. Dieser Wert kann zur Berechnung der Differenz zwischen zwei aufeinanderfolgenden Werten verwendet werden und verarbeitet den Grenzfall des ersten Vergleichs (wenn kein vorheriger Wert vorhanden ist) sowie Fälle, in denen entweder der vorherige Wert oder der aktuelle Wert NULL (Nothing in Visual BasicVisual Basic) ist.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  
    

    Der folgende Ausdruck veranschaulicht, wie dieser benutzerdefinierte Code aus einem Textfeld für den Container „ColumnGroupByYear“ (Gruppe bzw. Datenbereich) aufgerufen wird.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))  
    

    Dadurch wird die Ausführung von Laufzeitausnahmen vermieden.This helps to avoid run-time exceptions. Sie können nun einen Ausdruck wie =IIF(Me.Value < 0, "red", "black") in der Color -Eigenschaft des Textfelds verwenden, um den Text unter Bedingungen anzuzeigen, nämlich abhängig davon, ob die Werte größer oder kleiner als 0 sind.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.

Weitere InformationenSee Also

Beispiele für Filtergleichungen (Berichts-Generator und SSRS) Filter Equation Examples (Report Builder and SSRS)
Beispiele für Gruppierungsausdrücke (Berichts-Generator und SSRS) Group Expression Examples (Report Builder and SSRS)
Ausdrucksverwendungen in Berichten (Berichts-Generator und SSRS) Expression Uses in Reports (Report Builder and SSRS)
Ausdrücke (Berichts-Generator und SSRS) Expressions (Report Builder and SSRS)
Häufig verwendete Filter (Berichts-Generator und SSRS)Commonly Used Filters (Report Builder and SSRS)