Freigeben über


Ausdrucksbeispiele (Berichts-Generator und SSRS)

Ausdrücke werden häufig in Berichten verwendet, um die Darstellung von Inhalten und Berichten zu steuern. 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 zum Ausdrucks-Editor und zu den Typen von Verweisen, die Sie einbeziehen können, finden Sie unter "Ausdrucksverwendungen" in Berichten (Berichts-Generator und SSRS) und "Hinzufügen eines Ausdrucks( Berichts-Generator und SSRS)".

Von Bedeutung

Wenn RDL-Sandboxing aktiviert ist, können nur bestimmte Typen und Mitglieder zum Zeitpunkt der Veröffentlichung in Ausdrücken verwendet werden. Weitere Informationen finden Sie unter Aktivieren und Deaktivieren von RDL-Sandboxing.

Dieses Thema enthält Beispiele für Ausdrücke, die für allgemeine Aufgaben in einem Bericht verwendet werden können.

Beispiele für Ausdrücke für bestimmte Verwendungen finden Sie in den folgenden Themen:

Weitere Informationen zu einfachen und komplexen Ausdrücken, in denen Sie Ausdrücke verwenden können, sowie die Typen von Verweisen, die Sie in einen Ausdruck einbeziehen können, finden Sie unter " Ausdrücke" (Berichts-Generator und SSRS). Weitere Informationen zum Kontext, in dem Ausdrücke für die Berechnung von Aggregaten ausgewertet werden, finden Sie unter „Expression Scope for Totals, Aggregates, and Built-in Collections“ (Report Builder and SSRS).

Informationen darüber, wie man Ausdrücke schreibt, die viele der Funktionen und Operatoren verwenden, die auch in den Ausdrucksbeispielen in diesem Thema genutzt werden, jedoch im Kontext eines Berichts, finden Sie im Lernprogramm: Einführung in Ausdrücke.

Der Ausdrucks-Editor enthält eine hierarchische Ansicht integrierter Funktionen. Wenn Sie die Funktion auswählen, wird im Bereich "Werte" ein Codebeispiel angezeigt. Weitere Informationen finden Sie im Dialogfeld Ausdruck oder im Dialogfeld Ausdruck (Report Builder).

Funktionen

Viele Ausdrücke in einem Bericht enthalten Funktionen. Mithilfe dieser Funktionen können Sie Daten formatieren, Logik anwenden und auf Berichtsmetadaten zugreifen. Sie können Ausdrücke schreiben, die Funktionen aus der Microsoft Visual Basic-Laufzeitbibliothek und aus den ConvertMath Namespaces 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 angezeigt werden oder die für Parameter, Eigenschaften oder andere Bereiche des Berichts verwendet werden. In diesem Abschnitt werden Beispiele zur Veranschaulichung einiger dieser Funktionen bereitgestellt. Weitere Informationen finden Sie unter Member der Visual Basic-Laufzeitbibliothek bei MSDN.

Das .NET Framework bietet viele benutzerdefinierte Formatoptionen, z.B. für bestimmte Datumsformate. Weitere Informationen finden Sie unter Formatierungstypen auf MSDN.

Mathematische Funktionen

  • Die Round Funktion ist nützlich, um Zahlen auf die nächste ganze Zahl zu runden. Der folgende Ausdruck rundet 1,3 auf 1 ab:
= Round(1.3)  

Sie können auch einen Ausdruck schreiben, um einen Wert auf ein von Ihnen angegebenes Vielfaches zu runden, ähnlich der MRound Funktion in Excel. Multiplizieren Sie den Wert mit einem Faktor, der eine ganze Zahl erstellt, die Zahl rundet, und dividieren Sie dann durch denselben Faktor. Verwenden Sie beispielsweise 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. Dieser Ausdruck kann in einem Textfeld zum Anzeigen des Datums im Bericht oder in einem Parameter verwendet werden, um Daten basierend auf dem aktuellen Datum zu filtern.
=Today()  
  • Die DateAdd Funktion ist nützlich, um einen Datumsbereich basierend auf einem einzelnen Parameter zu liefern. Der folgende Ausdruck stellt ein Datum bereit, 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. Mithilfe dieser Option können Sie Datumsangaben gruppieren oder das Jahr als Beschriftung für einen Satz von Datumsangaben anzeigen. Dieser Ausdruck liefert das Jahr für eine bestimmte Gruppe von Bestelldaten. Die Month Funktion und andere Funktionen können auch zum Bearbeiten von Datumsangaben verwendet werden. Weitere Informationen finden Sie in der Visual Basic-Dokumentation.
=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 bis Woche 3. Dezember:
=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 formatiert den SellStartDate-Wert als MMM-YY. SellStartDate-Feld ist ein Datetime-Datentyp.
=FORMAT(Fields!SellStartDate.Value, "MMM-yy")  
  • Der folgende Ausdruck formatiert den SellStartDate-Wert als tt/MM/yyyy. Das Feld "SellStartDate" ist ein 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 gemäß Ihrem System enthält. DateDiff gibt einen Long -Wert zurück, der die Anzahl der Zeitintervalle zwischen zwei Datumswerten angibt.

Im folgenden Beispiel wird das Startdatum des aktuellen Jahres angezeigt.

=DateAdd(DateInterval.Year,DateDiff(DateInterval.Year,CDate("01/01/1900"),Now()),CDate("01/01/1900"))  
  • Im folgenden Beispiel wird das Startdatum für den vorherigen Monat 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 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.
=DATEDIFF("yyyy", First(Fields!SellStartDate.Value, "DataSet1"), First(Fields!LastReceiptDate.Value, "DataSet2"))  
  • Die DatePart Funktion gibt einen Ganzzahlwert zurück, der die angegebene Komponente eines bestimmten Date-Werts enthält. Der folgende Ausdruck gibt das Jahr für den ersten Wert des SellStartDate in DataSet1 zurück. Der Datensatzbereich wird angegeben, da im Bericht mehrere Datensätze vorhanden sind.
=Datepart("yyyy", First(Fields!SellStartDate.Value, "DataSet1"))  

  • Die DateSerial Funktion gibt einen Date-Wert zurück, der ein angegebenes Jahr, einen Monat und einen Tag darstellt, wobei die Zeitinformationen auf Mitternacht festgelegt sind. Im folgenden Beispiel wird das Enddatum für den vorherigen Monat basierend auf dem aktuellen Monat angezeigt.
=DateSerial(Year(Now()), Month(Now()), "1").AddDays(-1)  
  • In den folgenden Ausdrücken werden verschiedene Datumsangaben basierend auf einem datumsparameterwert angezeigt, der vom Benutzer ausgewählt wurde.
Beispiel Beschreibung 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   
  • Formatieren sie Datumsangaben und Zahlen in einer Zeichenfolge mit der Format Funktion. 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")    

Wenn das Textfeld nur ein Datum oder eine Zahl enthält, sollten Sie die Format-Eigenschaft des Textfelds verwenden, um Formatierung anstelle der Format Funktion im Textfeld anzuwenden.

  • Die Funktionen Right, Len und InStr sind nützlich, um eine Teilzeichenfolge zurückzugeben, z. B. das Kürzen von DOMAIN\Benutzername auf nur den Benutzernamen. 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 verwendet, um die ausgewählten Werte des Parameters MySelection in eine einzelne Zeichenfolge zu verketten, die als Ausdruck für den Wert eines Textfelds in einem Berichtselement festgelegt werden kann:
= Join(Parameters!MySelection.Value)  

Im folgenden Beispiel wird dieselbe Funktion wie im obigen Beispiel ausgeführt, und es wird eine Textzeichenfolge vor der Liste der ausgewählten Werte angezeigt.

="Report for " & JOIN(Parameters!MySelection.Value, " & ")  

  • Die Regex Funktionen aus .NET Framework System.Text.RegularExpressions eignen sich zum Ändern des Formats vorhandener Zeichenfolgen, z. B. zum Formatieren einer Telefonnummer. Der folgende Ausdruck verwendet die Replace Funktion, um das Format einer zehnstelligen Telefonnummer in einem Feld von "nnn-nnn-nnnn" zu ändern in "(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.

Suche

  • Durch Angeben eines Schlüsselfelds können Sie die Lookup Funktion verwenden, um einen Wert aus einem Dataset für eine 1:1-Beziehung abzurufen, z. B. ein Schlüsselwertpaar. Der folgende Ausdruck zeigt den Produktnamen aus einem Dataset ("Produkt") an, wenn der Produktbezeichner angegeben ist, der übereinstimmen soll:
=Lookup(Fields!PID.Value, Fields!ProductID.Value, Fields!ProductName.Value, "Product")  

LookupSet

  • Indem Sie ein Schlüsselfeld angeben, können Sie die LookupSet Funktion nutzen, um eine Menge von Werten aus einem Dataset für eine 1:n-Beziehung zu 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 in einer einzelnen Zeichenfolge und zeigt die Liste der Telefonnummern für die von 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. Konvertierungsfunktionen können verwendet werden, um den Standarddatentyp für ein Feld in den Datentyp zu konvertieren, der für Berechnungen erforderlich ist, oder um Text zu kombinieren.

  • Der folgende Ausdruck wandelt die Konstante 500 in den Typ "Dezimal" um, um sie mit einem Transact-SQL Gelddatentyp im Feld "Wert" für einen Filterausdruck zu vergleichen.
=CDec(500)  
  • Der folgende Ausdruck zeigt die Anzahl der Werte an, die für den Mehrwertparameter MySelection ausgewählt sind.
=CStr(Parameters!MySelection.Count)  

Entscheidungsfunktionen

  • Die Iif Funktion gibt einen von zwei Werten zurück, je nachdem, ob der Ausdruck wahr ist oder nicht. Der folgende Ausdruck verwendet die Iif Funktion, um einen booleschen Wert von True zurückzugeben, wenn der Wert von LineTotal 100 überschreitet. Andernfalls wird folgendes zurückgegeben False:
=IIF(Fields!LineTotal.Value > 100, True, False)  
  • Verwenden Sie mehrere IIF Funktionen (auch als "geschachtelte IIFs" bezeichnet), um je nach Wert von PctComplete eines von drei Werten zurückzugeben. Der folgende Ausdruck kann in der Füllfarbe eines Textfelds platziert werden, um die Hintergrundfarbe abhängig vom 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 1 und 9 mit einem blauen Hintergrund und Werte, die kleiner als 1 sind, mit einem roten Hintergrund angezeigt.

  • Eine andere Möglichkeit zum Abrufen derselben Funktionalität verwendet die Switch Funktion. Die Switch Funktion ist nützlich, wenn Sie drei oder mehr Bedingungen zum Testen haben. Die Switch Funktion gibt den Wert zurück, der dem ersten Ausdruck in einer Datenreihe zugeordnet ist, die als wahr ausgewertet wird:
=Switch(Fields!PctComplete.Value >= 10, "Green", Fields!PctComplete.Value >= 1, "Blue", Fields!PctComplete.Value = 1, "Yellow", Fields!PctComplete.Value <= 0, "Red",)  

Werte größer als oder gleich 10 werden mit grünem Hintergrund angezeigt, zwischen 1 und 9 werden mit einem blauen Hintergrund angezeigt, gleich 1 werden mit einem gelben Hintergrund angezeigt, und 0 oder weniger werden mit einem roten Hintergrund angezeigt.

  • Testen Sie den Wert des ImportantDate Felds, und geben Sie "Rot" zurück, wenn es länger als eine Woche alt ist, und andernfalls "Blau". Dieser Ausdruck kann verwendet werden, um die Color-Eigenschaft eines Textfelds in einem Berichtselement zu steuern:
=IIF(DateDiff("d",Fields!ImportantDate.Value, Now())>7,"Red","Blue")  
  • Testen Sie den Wert des PhoneNumber-Felds. Geben Sie "No Value" zurück, wenn es sich um null handelt (Nothing in Visual Basic); andernfalls geben Sie den Telefonnummer-Wert zurück. Dieser Ausdruck kann verwendet werden, um den Wert eines Textfelds in einem Berichtselement zu steuern.
=IIF(Fields!PhoneNumber.Value Is Nothing,"No Value",Fields!PhoneNumber.Value)  
  • Testen Sie den Wert des Department Felds, und geben Sie entweder einen Unterberichtsnamen oder einen null (Nothing in Visual Basic) zurück. Dieser Ausdruck kann für bedingte Drillthrough-Unterberichte verwendet werden.
=IIF(Fields!Department.Value = "Development", "EmployeeReport", Nothing)  
  • Testen Sie, ob ein Feldwert null ist. Dieser Ausdruck kann verwendet werden, um die Hidden Eigenschaft eines Bildberichtelements zu steuern. Im folgenden Beispiel wird das durch das Feld [LargePhoto] angegebene Bild nur angezeigt, wenn der Wert des Felds 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 "NA" im Feld "Monat" angezeigt, wenn es 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 zusätzliche Berichtsfunktionen hinzufügen, die Daten in einem Bericht bearbeiten. In diesem Abschnitt werden Beispiele für zwei dieser Funktionen behandelt. Weitere Informationen zu Berichtsfunktionen und Beispielen finden Sie unter "Aggregate Functions Reference" (Berichts-Generator und SSRS).For more information about report functions and examples, see Aggregate Functions Reference (Report Builder and SSRS).

Summe
  • Die Sum Funktion kann die Werte in einer Gruppe oder einem Datenbereich addieren. 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 die Sum Funktion auch für bedingte Aggregatberechnungen verwenden. Wenn ein Dataset z. B. ein Feld mit dem Namen "State" mit möglichen Werten "Nicht gestartet", "Gestartet", "Abgeschlossen" aufweist, berechnet der folgende Ausdruck, wenn er in einem Gruppenkopf platziert wird, die Aggregatsumme nur für den Wert "Abgeschlossen":
=Sum(IIF(Fields!State.Value = "Finished", 1, 0))  
Zeilennummer
  • Die RowNumber Funktion, die in einem Textfeld in einem Datenbereich verwendet wird, zeigt die Zeilennummer für jede Instanz des Textfelds an, in dem der Ausdruck angezeigt wird. 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 Seitenumbrüche in diesem Thema.

Der Bereich, den Sie für RowNumber festlegen, kontrolliert, wann die Neunummerierung beginnt. Das Nothing Schlüsselwort gibt an, dass die Funktion mit der Zählung in 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 der Zählung 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.

Seitenkopfzeilen und -fußzeilen

Beim Entwerfen eines Berichts möchten Sie möglicherweise den Namen des Berichts und der Seitenzahl in der Berichtsfußzeile anzeigen. Dazu können Sie 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. Das Beispiel geht davon aus, dass ein Datenbereich, der ein Textfeld mit dem Namen LastNameenthält.

  • Der folgende Ausdruck, der in einem Textfeld auf der linken Seite der Seitenüberschrift platziert wird, stellt den ersten Wert des LastName Textfelds auf der Seite bereit:
=First(ReportItems("LastName").Value)  
  • Der folgende Ausdruck, der in einem Textfeld auf der rechten Seite der Seitenüberschrift platziert wird, stellt den letzten Wert des LastName Textfelds auf der Seite bereit:
=Last(ReportItems("LastName").Value)  

Das folgende Beispiel beschreibt, wie die Summe einer Seite angezeigt wird. Das Beispiel geht davon aus, dass ein Datenbereich, der ein Textfeld mit dem Namen Costenthält.

  • Der folgende Ausdruck, der in der Kopf- oder Fußzeile der Seite platziert wird, stellt die Summe der Werte im Cost Textfeld für die Seite bereit:
=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 einigen Berichten möchten Sie möglicherweise einen Seitenwechsel am Ende einer bestimmten Anzahl von Zeilen anstelle oder zusätzlich zu Gruppen oder Berichtselementen platzieren. Erstellen Sie dazu eine Gruppe, die die von Ihnen gewünschten Gruppen oder Detaildatensätze enthält, fügen Sie der Gruppe einen Seitenwechsel hinzu, und fügen Sie dann einen Gruppenausdruck hinzu, um nach einer festgelegten Anzahl von Zeilen zu gruppieren.

  • Der folgende Ausdruck weist im Gruppenausdruck einer Gruppe von jeweils 25 Zeilen eine Zahl zu. Wenn ein Seitenwechsel für die Gruppe definiert ist, führt dieser Ausdruck zu einem Seitenwechsel alle 25 Zeilen.
=Ceiling(RowNumber(Nothing)/25)  

Um dem Benutzer das Festlegen eines Werts für die Anzahl von Zeilen pro Seite zu ermöglichen, erstellen Sie einen Parameter namens RowsPerPage und basieren Sie den Gruppenausdruck auf diesem Parameter, 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 (Berichts-Generator und SSRS).For more information about setting page breaks for a group, see Add a Page Break (Report Builder and SSRS).

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, wenn er in der Color-Eigenschaft eines Textfelds verwendet wird, ändert die Farbe des Texts abhängig vom Wert des Profit Felds:
=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, wenn er in der BackgroundColor-Eigenschaft eines Berichtselements in einem Datenbereich verwendet wird, wechselt 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, müssen Sie möglicherweise das Dataset 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 anzugeben, können Sie benutzerdefinierten Code verwenden, um die Reihenfolge zu steuern, in der Farben Datenpunktwerte zugeordnet sind. Auf diese Weise können Sie konsistente Farben für mehrere Diagramme verwenden, die über dieselben Kategoriegruppen verfügen. Weitere Informationen finden Sie unter Angeben von Farben, die für mehrere Formdiagramme konsistent sind (Berichts-Generator und SSRS).

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.

  • Der folgende Ausdruck, der für die anfängliche Sichtbarkeit von Detailzeilen in einer Gruppe verwendet wird, zeigt die Detailzeilen für alle Verkäufe an, die 90 Prozent im PctQuota Feld überschreiten:
=Iif(Fields!PctQuota.Value>.9, False, True)  
  • Der folgende Ausdruck, wenn er in der Hidden-Eigenschaft einer Tabelle festgelegt wird, zeigt die Tabelle nur an, wenn sie mehr als 12 Zeilen enthält:
=IIF(CountRows()>12,false,true)  
  • Der folgende Ausdruck, wenn er in der Hidden Eigenschaft einer Spalte festgelegt wird, zeigt die Spalte nur an, wenn das Feld im Berichtsdatenset vorhanden ist, nachdem die Daten aus der Datenquelle abgerufen wurden:
=IIF(Fields!Column_1.IsMissing, true, false)  

Sie können URLs anpassen, indem Sie die Berichtsdaten verwenden und bedingt steuern, ob URLs als Aktion für ein Textfeld hinzugefügt werden.

  • Der folgende Ausdruck generiert, wenn er als Aktion für ein Textfeld verwendet wird, eine angepasste URL, die das Datasetfeld EmployeeID als URL-Parameter angibt.
="http://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. Dieser Ausdruck hängt von einem Parameter mit dem Namen IncludeURLs ab, mit dem ein Benutzer entscheiden kann, ob aktive URLs in einen Bericht eingeschlossen 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 Hyperlinks exportieren.
=IIF(Parameters!IncludeURLs.Value,"http://adventure-works.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. Sie können sogar die Abfrage ändern, die zum Abrufen von Daten für den Bericht verwendet wird.

Die 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  
  • Um auf einen Parameter in einem Abfrageparameter, Filterausdruck, Textfeld oder einem anderen Bereich des Berichts zu verweisen, verwenden Sie die Parameters globale Auflistung. 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 in der Symbolleiste angezeigt, und der Berichtsleser 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 Custom Code and Assembly References in Expressions 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 Berichts- und Gruppenvariablensammlungsverweise (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 Nullwerten zur Laufzeit

Einige Werte in einem Ausdruck können zur Berichtsverarbeitungszeit mit NULL oder "nicht definiert" ausgewertet werden. Dies kann Laufzeitfehler verursachen, die dazu führen, dass #Error im Textfeld anstelle des ausgewerteten Ausdrucks angezeigt wird. Die IIF Funktion ist besonders anfällig für dieses Verhalten, da anders als bei einer If-Then-Else-Anweisung jeder Teil der IIF-Anweisung ausgewertet wird (einschließlich Funktionsaufrufen), bevor sie an die Routine übergeben wird, die auf true oder false testet. Die Anweisung =IIF(Fields!Sales.Value is NOTHING, 0, Fields!Sales.Value) generiert #Error im gerenderten Bericht, wenn Fields!Sales.Value NICHTS ist.

Wählen Sie eine der folgenden Strategien aus, um diesen Fehler zu vermeiden:

  • Legen Sie den Zähler auf 0 und den Nenner auf 1 fest, wenn der Wert für Feld B 0 oder nicht definiert ist; legen Sie andernfalls den Zähler auf den Wert für Feld A und den Nenner auf den Wert für Feld B fest.
=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. Dies kann verwendet werden, um die Differenz zwischen zwei aufeinanderfolgenden Werten zu berechnen, und es behandelt den Randfall des ersten Vergleichs, wenn kein vorheriger Wert vorhanden ist, sowie die Fälle, in denen entweder der vorherige Wert oder der aktuelle Wert null ist (Nothing in Visual Basic).
Public Function GetDeltaPercentage(ByVal PreviousValue, ByVal CurrentValue) As Object  
     If IsNothing(PreviousValue) OR IsNothing(CurrentValue) Then  
          Return Nothing  
     Else if PreviousValue = 0 OR CurrentValue = 0 Then  
          Return Nothing  
     Else
          Return (CurrentValue - PreviousValue) / CurrentValue  
     End If  
End Function  

Der folgende Ausdruck zeigt, wie Sie diesen benutzerdefinierten Code aus einem Textfeld für den Container "ColumnGroupByYear" (Gruppe oder Datenbereich) aufrufen.

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

Dies hilft, Laufzeit-Ausnahmen zu vermeiden. Sie können nun einen Ausdruck wie =IIF(Me.Value < 0, "red", "black") in der Color Eigenschaft des Textfelds verwenden, um den Anzeigetext bedingt zu verwenden, basierend darauf, ob die Werte größer oder kleiner als 0 sind.

Siehe auch