Beispiele für Ausdrücke in paginierten Berichten des Report Builders
Gilt für: Microsoft Report Builder (SSRS) Power BI Report Builder Berichts-Designer in SQL Server Data Tools
Ausdrücke werden in paginierten Berichten häufig zum Steuern des Inhalts und der Darstellung des Berichts verwendet. Ausdrücke werden in Microsoft Visual Basic geschrieben und können integrierte Funktionen, benutzerdefinierten Code, Berichts- und Gruppenvariablen sowie benutzerdefinierte Variablen verwenden. Ausdrücke beginnen immer mit einem Gleichheitszeichen (=). Weitere Informationen über den Ausdruckseditor und die Arten von Verweisen, die Sie einfügen können, finden Sie unter Verwendung von Ausdrücken in paginierten Berichten (Report Builder) und Hinzufügen eines Ausdrucks zu einem paginierten Bericht (Report Builder).
Wichtig
Wenn RDL-Sandboxing aktiviert ist, können Sie zum Zeitpunkt der Berichtsveröffentlichung nur bestimmte Typen und Mitglieder im Ausdruckstext verwenden. Weitere Informationen finden Sie unter Aktivieren und Deaktivieren von RDL-Sandboxing für Reporting Services im integrierten SharePoint-Modus.
Beispiele für Ausdrücke und die jeweiligen Verwendungsmöglichkeiten finden Sie in den folgenden Artikeln:
Beispiele für Gruppierungsausdrücke in paginierten Berichten (Berichts-Generator)
Beispiele für Filtergleichungen in einem paginierten Bericht (Berichts-Generator)
Häufig verwendete Filter in einem paginierten Bericht (Berichts-Generator)
Verweise auf Berichts- und Gruppenvariablen in einem paginierten Bericht (Berichts-Generator)
Weitere Informationen über einfache und komplexe Ausdrücke, über die Anwendungsbereiche der Ausdrücke, und die Arten von Verweisen, die Sie in einen Ausdruck aufnehmen können, finden Sie in den Artikeln unter Ausdrücke in einem paginierten Bericht (Report Builder). Weitere Informationen über den Kontext, in dem Ausdrücke zur Berechnung von Aggregaten ausgewertet werden, finden Sie unter Geltungsbereich von Ausdrücken für Summen, Aggregate und integrierte Sammlungen in einem paginierten Bericht (Report Builder).
Um zu lernen, wie man Ausdrücke schreibt, die viele der Funktionen und Operatoren verwenden, die auch in den Ausdrucksbeispielen in diesem Artikel verwendet werden, siehe Tutorial: Ausdrücke einführen.
Functions
Viele Ausdrücke in einem Bericht enthalten Funktionen. Mit diesen Funktionen können Sie Daten formatieren, Code anwenden und auf Berichtsmetadaten zugreifen. Sie können Ausdrücke schreiben, die Funktionen aus der Microsoft Visual Basic-Laufzeitbibliothek sowie aus den Namespaces Convert und Math verwenden. Sie können Verweise auf Funktionen aus anderen Assemblys oder benutzerdefinierten Code hinzufügen. Sie können auch Klassen aus Microsoft .NET Framework verwenden, wie z.B. System.Text.RegularExpressions.
Visual Basic-Funktionen
Sie können Visual Basic-Funktionen verwenden, um die Daten zu bearbeiten, die in Textfeldern oder in Ihren Parametern, Eigenschaften oder anderen Bereichen Ihres Berichts angezeigt werden. In diesem Abschnitt werden Beispiele zur Veranschaulichung einiger dieser Funktionen bereitgestellt. Weitere Informationen finden Sie unter Member der Visual Basic-Laufzeitbibliothek.
Das .NET Framework bietet viele benutzerdefinierte Formatoptionen, z.B. für bestimmte Datumsformate.
Mathematische Funktionen
Die Round -Funktion ermöglicht das Runden von Zahlen auf die nächste ganze Zahl. Der folgende Ausdruck rundet 1,3 auf 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). Mit dieser Funktion können Sie einen Wert mit einem Faktor multiplizieren, der eine ganze Zahl erzeugt, die Zahl runden und dann durch denselben Faktor dividieren. Verwenden Sie z. B. den folgenden Ausdruck, um 1,3 auf das nächste Vielfache von 0.2 (1,4) zu runden:
= Round(1.3*5)/5
Datumsfunktionen
Die Today -Funktion stellt das aktuelle Datum bereit. 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:
=Today()
Verwenden Sie die DateInterval-Funktion, um einen bestimmten Teil eines Datums zu extrahieren. Im Folgenden finden Sie einige gültige DateInterval-Parameter:
DateInterval.Second
DateInterval.Minute
DateInterval.Hour
DateInterval.Weekday
DateInterval.Day
DateInterval.DayOfYear
DateInterval.WeekOfYear
DateInterval.Month
DateInterval.Quarter
DateInterval.Year
Dieser Ausdruck zeigt beispielsweise die Wochenzahl im aktuellen Jahr für das heutige Datum an:
=DatePart(DateInterval.WeekOfYear, today())
Mit der DateAdd -Funktion wird ein Datumsbereich basierend auf einem einzigen Parameter bereitgestellt. Der folgende Ausdruck liefert ein Datum, das sechs Monate nach dem Datum eines Parameters namens StartDate liegt:
=DateAdd(DateInterval.Month, 6, Parameters!StartDate.Value)
Die Year -Funktion zeigt das Jahr für ein bestimmtes Datum an. Mit dieser Funktion können Sie Datumsangaben gruppieren oder das Jahr als Beschriftung für eine Reihe von Datumsangaben anzeigen. Dieser Ausdruck liefert das Jahr für eine bestimmte Gruppe von Bestelldaten. Mit der Month -Funktion und anderen Funktionen können Datumsangaben auch bearbeitet werden:
=Year(Fields!OrderDate.Value)
Sie können Funktionen in einem Ausdruck kombinieren, um das Format anzupassen. Durch den folgenden Ausdruck wird das Format Monat-Tag-Jahr eines Datums in das Format Monat-Woche-Woche geändert. Beispiel:
12/23/2009
wird zuDecember 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.
Der folgende Ausdruck legt für den SellStartDate-Wert das Format MMM-YY fest. Beim SellStartDate-Feld handelt es sich um einen Datetime-Datentyp:
=FORMAT(Fields!SellStartDate.Value, "MMM-yy")
Der folgende Ausdruck formatiert den Wert SellStartDate als „dd/MM/yyyy“. Beim SellStartDate-Feld handelt es sich um einen Datetime-Datentyp:
=FORMAT(Fields!SellStartDate.Value, "dd/MM/yyyy")
Die CDate -Funktion konvertiert den Wert in ein Datum. Die Now -Funktion gibt einen Datumswert zurück, der das aktuelle Datum und die aktuelle Uhrzeit des Systems enthält. DateDiff gibt einen Long-Wert zurück, der die Zahl der Zeitintervalle zwischen zwei Datumswerten angibt.
Im folgenden Beispiel wird das Anfangsdatum des aktuellen Jahres angezeigt:
=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:
=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. Diese Felder sind in zwei unterschiedlichen Datasets enthalten, DataSet1 und DataSet2. Die Report Builder Funktionen - Erste Funktion in einem paginierten Bericht (Report Builder), die eine Aggregatfunktion ist, gibt den ersten Wert von SellStartDate in DataSet1 und den ersten Wert von LastReceiptDate in DataSet2 zurück:
=DATEDIFF("yyyy", First(Fields!SellStartDate.Value, "DataSet1"), First(Fields!LastReceiptDate.Value, "DataSet2"))
Die Funktion DatePart gibt einen Intergerwert zurück, der die angegebene Komponente eines gegebenen Datumswertes enthält. Der folgende Ausdruck gibt das Jahr für den ersten Wert des SellStartDate in DataSet1 zurück. Der Datasetbereich ist angegeben, weil mehrere Datasets im Bericht enthalten sind:
=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. Im folgenden Beispiel wird das Enddatum des vorherigen Monats basierend auf dem aktuellen Monat angezeigt:
=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:
Beispielbeschreibung | Beispiel |
---|---|
gestern | =DateSerial(Year(Parameters!TodaysDate.Value),Month(Parameters!TodaysDate.Value),Day(Parameters!TodaysDate.Value)-1) |
Vor zwei Tagen | =DateSerial(Year(Parameters!TodaysDate.Value),Month(Parameters!TodaysDate.Value),Day(Parameters!TodaysDate.Value)-2) |
Vor einem Monat | =DateSerial(Year(Parameters!TodaysDate.Value),Month(Parameters!TodaysDate.Value)-1,Day(Parameters!TodaysDate.Value)) |
Vor zwei Monaten | =DateSerial(Year(Parameters!TodaysDate.Value),Month(Parameters!TodaysDate.Value)-2,Day(Parameters!TodaysDate.Value)) |
Vor einem Jahr | =DateSerial(Year(Parameters!TodaysDate.Value)-1,Month(Parameters!TodaysDate.Value),Day(Parameters!TodaysDate.Value)) |
Vor zwei Jahren | =DateSerial(Year(Parameters!TodaysDate.Value)-2,Month(Parameters!TodaysDate.Value),Day(Parameters!TodaysDate.Value)) |
Zeichenfolgenfunktionen
Kombinieren Sie mehr als ein Feld, indem Sie Verkettungsoperatoren und Visual Basic-Konstanten verwenden. Der folgende Ausdruck gibt zwei Felder zurück, die sich jeweils in einer eigenen Zeile in demselben Textfeld befinden.
=Fields!FirstName.Value & vbCrLf & Fields!LastName.Value
Mit der Format -Funktion können Sie Datumsangaben und Zahlen in einer Zeichenfolge formatieren. Mit dem folgenden Ausdruck werden Werte des StartDate -Parameters und des EndDate -Parameters im langen Datumsformat angezeigt.
=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.
Mit den Funktionen Right, Lenund InStr kann eine Teilzeichenfolge zurückgegeben werden, um z.B.
DOMAIN\username
auf den Benutzernamen zu verkürzen. Der folgende Ausdruck gibt den Teil der Zeichenfolge rechts neben einem umgekehrten Schrägstrich (\) aus einem Parameter namens User zurück:=Right(Parameters!User.Value, Len(Parameters!User.Value) - InStr(Parameters!User.Value, "\"))
Der folgende Ausdruck ergibt den gleichen Wert wie der vorherige, wobei Elemente der String-Klasse von .NET Framework anstelle von Visual Basic-Funktionen verwendet werden:
=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. 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:
= Join(Parameters!MySelection.Value)
Das nachfolgende Beispiel entspricht dem vorherigen Beispiel und zeigt eine Textzeichenfolge vor der Liste der ausgewählten Werte an:
="Report for " & JOIN(Parameters!MySelection.Value, " & ")
Die Funktionen Regex aus dem .NET Framework System.Text.RegularExpressions sind hilfreich, um das Format bestehender Zeichenfolgen zu ändern, z.B. um eine Telefonnummer zu formatieren. Für den folgenden Ausdruck wird die Replace-Funktion zum Ändern des Formats einer Telefonnummer in ein Feld von "nnn-nnn-nnnn" zu "(nnn) nnn-nnnn" verwendet:
=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.
Nachschlagen
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. Der folgende Ausdruck zeigt den Produktnamen aus einem Datensatz mit dem Namen "Product" an, wenn der Produktbezeichner angegeben wird, auf den er abgestimmt werden soll:
=Lookup(Fields!PID.Value, Fields!ProductID.Value, Fields!ProductName.Value, "Product")
LookupSet
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. Beispiel: Eine Person kann mehrere Telefonnummern haben. Nehmen Sie im folgenden Beispiel an, dass das Dataset PhoneList in jeder Zeile einen Personenbezeichner und eine Telefonnummer enthält. LookupSet gibt ein Array von Werten zurück. Der folgende Ausdruck kombiniert die Rückgabewerte zu einer einzigen Zeichenfolge und zeigt die Liste der Telefonnummern für die durch ContactID angegebene Person an:
=Join(LookupSet(Fields!ContactID.Value, Fields!PersonID.Value, Fields!PhoneNumber.Value, "PhoneList"),",")
Konvertierungsfunktionen
Mit den Visual Basic-Funktionen können Sie ein Feld des einen Datentyps in einen anderen Datentyp konvertieren. Sie können Konvertierungsfunktionen verwenden, um den Standarddatentyp für ein Feld in den für Berechnungen oder die Kombination von Text benötigten Datentyp zu konvertieren.
Der folgende Ausdruck konvertiert die Konstante „500“ in den Typ „Decimal“, um sie mit einem Datentyp „Transact-SQL money“ im Feld Value für einen Filterausdruck zu vergleichen:
=CDec(500)
Mit dem folgenden Ausdruck wird die Anzahl der für den mehrwertigen MySelection-Parameter ausgewählten Werte angezeigt:
=CStr(Parameters!MySelection.Count)
Entscheidungsfunktionen
Die Funktion IIF gibt einen von zwei Werten zurück, je nachdem, ob der Ausdruck wahr ist oder nicht. Der folgende Ausdruck verwendet die Funktion IIF, um einen booleschen Wert von True zurückzugeben, wenn der Wert von LineTotal 100 überschreitet. Andernfalls gibt sie den Wert „falsch“ zurück.
=IIF(Fields!LineTotal.Value > 100, True, False)
Verwenden Sie mehrere IIF-Funktionen (auch bekannt als „verschachtelte IIFs“), um einen von drei Werten abhängig vom Wert von PctComplete zurückzugeben. Der folgende Ausdruck kann in die Füllfarbe eines Textfelds platziert werden, um die Hintergrundfarbe basierend auf dem Wert im Textfeld zu ändern:
=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 eins und neun werden mit blauem Hintergrund angezeigt. Werte, die kleiner als eins sind, werden mit einem roten Hintergrund angezeigt.
Eine andere Möglichkeit, die gleiche Funktionalität zu erhalten, bietet die Switch -Funktion. Die Switch -Funktion ist nützlich, wenn Sie drei oder mehr Bedingungen testen müssen. Die Switch -Funktion gibt den Wert zurück, der mit dem ersten Ausdruck in einer Reihe verknüpft ist, die mit TRUE ausgewertet wird:
=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 eins und neun werden mit blauem Hintergrund angezeigt. Werte, die gleich eins sind, werden mit gelbem Hintergrund angezeigt. Werte von 0 oder weniger werden mit einem roten Hintergrund angezeigt.
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. Mit diesem Ausdruck kann die Color-Eigenschaft eines Textfelds in einem Berichtselement gesteuert werden:
=IIF(DateDiff("d",Fields!ImportantDate.Value, Now())>7,"Red","Blue")
Testen Sie den Wert des Feldes PhoneNumberund geben Sie "No Value" zurück, wenn es sich um einen Nullwert handelt, in Visual Basic Nothing genannt. Andernfalls wird der Wert der Rufnummer zurückgegeben. Mit diesem Ausdruck kann der Wert eines Textfelds in einem Berichtselement gesteuert werden:
=IIF(Fields!PhoneNumber.Value Is Nothing,"No Value",Fields!PhoneNumber.Value)
Testen Sie den Wert des Feldes Abteilung und geben Sie entweder einen Unterberichtsnamen oder einen Nullwert zurück, in Visual Basic Nothing genannt. Dieser Ausdruck kann für bedingte Drillthrough-Unterberichte verwendet werden:
=IIF(Fields!Department.Value = "Development", "EmployeeReport", Nothing)
Test, ob ein Feldwert ein Nullwert ist. Dieser Ausdruck kann verwendet werden, um die Hidden -Eigenschaft eines Bildberichtselements zu steuern. Im folgenden Beispiel wird das im Feld LargePhoto angegebene Bild nur angezeigt, wenn der Wert des Feldes nicht Null ist:
=IIF(IsNothing(Fields!LargePhoto.Value),True,False)
Die MonthName -Funktion gibt einen Zeichenfolgenwert zurück, der den Namen des angegebenen Monats enthält. Im folgenden Beispiel wird NZ im Monatsfeld angezeigt, wenn das Feld den Wert 0 enthält:
IIF(Fields!Month.Value=0,"NA",MonthName(IIF(Fields!Month.Value=0,1,Fields!Month.Value)))
Berichtsfunktionen
In einem Ausdruck können Sie einen Verweis auf weitere Berichtsfunktionen hinzufügen, mit denen Daten in einem Bericht bearbeitet werden. In diesem Abschnitt werden Beispiele für zwei dieser Funktionen behandelt. Weitere Informationen über Berichtsfunktionen und Beispiele finden Sie unter Berichts-Generator-Funktionen: Referenz zu Aggregatfunktionen für paginierte Berichte (Report Builder).
Sum
Die Sum -Funktion gibt die Summe von Werten in einer Gruppe oder einem Datenbereich zurück. Diese Funktion ist hilfreich für die Kopf- oder Fußzeile einer Gruppe. Der folgende Ausdruck zeigt die Summe von Daten in der Gruppe bzw. im Datenbereich Order an:
=Sum(Fields!LineTotal.Value, "Order")
Sie können auch die Sum -Funktion für bedingte Aggregatberechnungen verwenden. Stellen Sie sich zum Beispiel vor, Sie haben einen Datensatz mit einem Feld namens Status mit den möglichen Werten Nicht gestartet, Gestartet und Beendet. Der folgende Ausdruck, der in eine Gruppenüberschrift eingefügt wird, berechnet die Gesamtsumme nur für den Wert Beendet:
=Sum(IIF(Fields!State.Value = "Finished", 1, 0))
RowNumber
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. Diese Funktion eignet sich, um Zeilen in einer Tabelle zu nummerieren. Sie ist auch bei komplizierteren Aufgaben hilfreich, z. B. beim Einfügen von Seitenumbrüchen auf der Grundlage der Zeilenanzahl. Weitere Informationen finden Sie unter Seitenumbruch.
Der Bereich, den Sie für RowNumber -Steuerelemente angeben, wenn die Neunumerierung beginnt. Das Nothing -Schlüsselwort gibt an, dass die Funktion die Zählung mit der ersten Zeile im äußersten Datenbereich beginnt. Wenn Sie in geschachtelten Datenbereichen mit dem Zählen beginnen möchten, verwenden Sie den Namen des Datenbereichs. Um mit dem Zählen innerhalb einer Gruppe zu beginnen, verwenden Sie den Namen der Gruppe:
=RowNumber(Nothing)
Darstellung von Berichtsdaten
Mit Ausdrücken können Sie die Darstellung von Daten in einem Bericht ändern. 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.
Kopf- und Fußzeilen für Seiten
Beim Entwerfen eines Berichts soll möglicherweise der Name des Berichts und die Seitenzahl in der Fußzeile des Berichts angezeigt werden. Sie können die folgenden Ausdrücke verwenden:
Der folgende Ausdruck stellt den Namen des Berichts und die Zeit seiner Ausführung bereit. Er kann in einem Textfeld in der Fußzeile oder im Hauptteil des Berichts eingefügt werden. Die Uhrzeit wird mit der Formatierungszeichenfolge von .NET Framework für das kurze Datum formatiert:
=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:
=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. Im Beispiel wird angenommen, dass der Datenbereich ein Textfeld mit dem Namen LastName enthält.
Der folgende Ausdruck, der in einem Textfeld auf der linken Seite des Kopfzeile der Seiten eingefügt wird, gibt den ersten Wert des LastName-Textfelds auf der Seite an:
=First(ReportItems("LastName").Value)
Der folgende Ausdruck, der in einem Textfeld auf der rechten Seite des Kopfzeile der Seiten eingefügt wird, gibt den letzten Wert des LastName-Textfelds auf der Seite an:
=Last(ReportItems("LastName").Value)
Das folgende Beispiel beschreibt, wie die Summe einer Seite angezeigt wird. Im Beispiel wird angenommen, dass der Datenbereich ein Textfeld mit dem Namen Cost enthält. Wenn Sie diesen Ausdruck in der Kopf- oder Fußzeile der Seite platzieren, ergibt er die Summe der Werte im Textfeld Kosten für die Seite:
=Sum(ReportItems("Cost").Value)
Hinweis
In einem Seitenkopf oder -fuß kann pro Ausdruck nur auf ein einziges Berichtselement verwiesen werden. 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.
Seitenumbrüche
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. Erstellen Sie eine Gruppe, die die gewünschten Gruppen oder Detailsätze enthält. Fügen Sie der Gruppe einen Seitenumbruch hinzu, und fügen Sie dann einen Gruppenausdruck hinzu, um nach einer bestimmten Anzahl von Zeilen zu gruppieren.
Der folgende Ausdruck weist im Gruppenausdruck einer Gruppe von jeweils 25 Zeilen eine Zahl zu. Wenn ein Seitenumbruch für die Gruppe definiert ist, ergibt sich aus diesem Ausdruck alle 25 Zeilen ein Seitenumbruch:
=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 nutzen Sie diesen als Basis für den Gruppenausdruck, wie im folgenden Ausdruck gezeigt:
=Ceiling(RowNumber(Nothing)/Parameters!RowsPerPage.Value)
Weitere Informationen zum Festlegen von Seitenumbrüchen für eine Gruppe finden Sie unter Hinzufügen eines Seitenumbruchs zu einem paginierten Bericht (Report Builder).
Eigenschaften
Ausdrücke werden nicht nur zum Anzeigen von Daten in Textfeldern verwendet. Sie können mit Ausdrücken auch festlegen, wie Eigenschaften auf Berichtselemente angewendet werden. Sie können Formatinformationen für ein Berichtselement ändern oder festlegen, ob es angezeigt wird.
Formatierung
Der folgende Ausdruck ändert bei Verwendung in der Eigenschaft Color eines Textfelds die Farbe des Textes in Abhängigkeit vom Wert des Feldes Profit:
=Iif(Fields!Profit.Value < 0, "Red", "Black")
Sie können auch die Visual Basic-Objektvariable
Me
verwenden. Diese Variable bietet eine andere Möglichkeit, auf den Wert eines Textfeldes zu verweisen.=Iif(Me.Value < 0, "Red", "Black")
Der folgende Ausdruck wechselt bei Verwendung in der Eigenschaft BackgroundColor eines Berichtselements in einem Datenbereich die Hintergrundfarbe jeder Zeile zwischen blassgrün und weiß:
=Iif(RowNumber(Nothing) Mod 2, "PaleGreen", "White")
Wenn Sie einen Ausdruck für einen bestimmten Bereich verwenden, dann müssen Sie möglicherweise den Datensatz für die Aggregatfunktion angeben:
=Iif(RowNumber("Employees") Mod 2, "PaleGreen", "White")
Hinweis
Verfügbare Farben stammen aus der .NET Framework-Enumeration „KnownColor“.
Diagrammfarben
Um Farben für ein Shape-Diagramm festzulegen, können Sie benutzerdefinierten Code verwenden, um die Reihenfolge der Zuordnung von Farben zu Datenpunktwerten zu steuern. Mit diesem benutzerdefinierten Code können Sie einheitliche Farben für mehrere Diagramme verwenden, die dieselben Kategoriengruppen enthalten. Weitere Informationen finden Sie unter Festlegen einheitlicher Farben in mehreren Formdiagrammen in einem paginierten Bericht (Report Builder).
Sichtbarkeit
Berichtselemente können mithilfe der Sichtbarkeitseigenschaften ein- und ausgeblendet werden. In einem Datenbereich, wie z. B. einer Tabelle, können die Detailzeilen basierend auf dem Wert eines Ausdrucks anfänglich ausgeblendet werden.
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:
=Iif(Fields!PctQuota.Value>.9, False, True)
Wenn der folgende Ausdruck in der Eigenschaft Hidden einer Tabelle angegeben wird, wird die Tabelle nur angezeigt, wenn sie mehr als 12 Zeilen hat:
=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:
=IIF(Fields!Column_1.IsMissing, true, false)
URLs
Sie können URLs anpassen, indem Sie die Berichtsdaten verwenden und bedingt steuern, ob URLs als Aktion für ein Textfeld hinzugefügt werden.
Wenn der folgende Ausdruck als Aktion auf einem Textfeld verwendet wird, wird eine benutzerdefinierte URL generiert, die das Datasetfeld EmployeeID als URL-Parameter angibt:
="https://contoso/MyInfo?ID=" & Fields!EmployeeID.Value
Weitere Informationen finden Sie unter Hinzufügen eines Hyperlinks zu einer URL in einem paginierten Bericht (Report Builder).
Der folgende Ausdruck steuert bedingt, ob eine URL in einem Textfeld hinzugefügt wird. Dieser Ausdruck hängt von einem Parameter namens IncludeURLs ab, mit dem ein Benutzer entscheiden kann, ob aktive URLs in einen Bericht aufgenommen werden sollen. Dieser Ausdruck wird als Aktion in einem Textfeld festgelegt. Indem Sie den Parameter auf FALSE festlegen und dann den Bericht anzeigen, können Sie den Bericht ohne Links nach Microsoft Excel exportieren:
=IIF(Parameters!IncludeURLs.Value,"https://contoso.com/productcatalog",Nothing)
Berichtsdaten
Mit Ausdrücken können die im Bericht verwendeten Daten bearbeitet werden. Sie können auf Parameter und sonstige Berichtsinformationen verweisen. Es ist sogar möglich, die Abfrage zu ändern, mit der Daten für den Bericht abgerufen werden.
Parameter
Ausdrücke können in einem Parameter verwendet werden, um den Standardwert für den Parameter zu ändern. 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.
Wenn der folgende Ausdruck als Standardwert für einen Parameter verwendet wird, wird die Benutzer-ID der Person abgerufen, die den Bericht ausführt:
=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. Bei diesem Beispiel wird von einem Parameter namens Departmentausgegangen:
=Parameters!Department.Value
Parameter können in einem Bericht erstellt und trotzdem ausgeblendet werden. Wenn der Bericht auf dem Berichtsserver ausgeführt wird, wird der Parameter nicht auf der Symbolleiste angezeigt, und der Leser des Berichts kann den Standardwert nicht ändern. Sie können einen ausgeblendeten, auf einen Standardwert festgelegten Parameter als benutzerdefinierte Konstante verwenden. Diesen Wert können Sie in einem beliebigen Ausdruck verwenden, einschließlich eines Feldausdrucks. Der folgende Ausdruck gibt das vom Standardparameterwert für den Parameter mit dem Namen ParameterFieldangegebene Feld an:
=Fields(Parameters!ParameterField.Value).Value
Benutzerdefinierter Code
In einem Bericht kann benutzerdefinierter Code verwendet werden. Benutzerdefinierter Code ist entweder in einen Bericht eingebettet oder in einer benutzerdefinierten Assembly gespeichert, die im Bericht verwendet wird. Weitere Informationen zu benutzerdefiniertem Code finden Sie unter Benutzerdefinierter Code und Assembly-Referenzen in Ausdrücken in einem paginierten Bericht in Report Designer (SSRS).
Verwenden von Gruppenvariablen für benutzerdefinierte 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. Eine der Methoden, wie Sie eine Gruppenvariable mit benutzerdefiniertem Code verwenden können, besteht darin, ein benutzerdefiniertes Aggregat zu implementieren. Weitere Informationen finden Sie unter Verwenden von Gruppenvariablen in Reporting Services 2008 für benutzerdefinierte Aggregation.
Weitere Informationen zu Variablen finden Sie unter Referenzen auf Berichts- und Gruppenvariablen in einem paginierten Bericht (Report Builder).
Null- oder Nullwerte zur Laufzeit unterdrücken
Einige Werte in einem Ausdruck können zur Berichtsverarbeitungszeit mit NULL oder "nicht definiert" ausgewertet werden. Diese Werte können Laufzeitfehler verursachen, die dazu führen, dass im Textfeld anstelle des ausgewerteten Ausdrucks "#Error" angezeigt wird. Die IIF-Funktion ist empfindlich gegenüber diesem Verhalten. Im Gegensatz zu einer If-Then-Else-Anweisung wird jeder Teil der IIF-Anweisung ausgewertet, einschließlich der Funktionsaufrufe, bevor er an die Routine übergeben wird, die auf TRUE oder FALSE testet. Die Anweisung =IIF(Fields!Sales.Value is NOTHING, 0, Fields!Sales.Value)
erzeugt "#Error" im gerenderten Bericht, wenn Fields!Sales.Value
ein Nothing-Wert ist.
Wählen Sie eine der folgenden Strategien aus, um diesen Fehler zu vermeiden:
Setzen Sie den Zähler auf 0 und den Nenner auf 1, wenn der Wert für Feld B 0 oder undefiniert ist. Andernfalls setzen Sie den Zähler auf den Wert für Feld A und den Nenner auf den Wert für Feld 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. Im folgenden Beispiel wird der Prozentsatzunterschied zwischen einem aktuellen Wert und einem vorherigen Wert zurückgegeben. Dieser Wert kann verwendet werden, um die Differenz zwischen zwei aufeinander folgenden Werten zu berechnen. Es behandelt den Grenzfall des ersten Vergleichs, wenn es keinen vorherigen Wert gibt, und es funktioniert in Fällen, in denen entweder der vorherige Wert oder der aktuelle Wert ein Nullwert ist, in Visual Basic Nothing genannt:
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 zeigt, wie Sie diesen benutzerdefinierten Code aus einem Textfeld für den Container "ColumnGroupByYear", eine Gruppe oder einen Datenbereich aufrufen können:
=Code.GetDeltaPercentage(Previous(Sum(Fields!Sales.Value),"ColumnGroupByYear"), Sum(Fields!Sales.Value))
Dieser Code hilft, Laufzeitausnahmen zu vermeiden. 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.