Share via


Beispiele für Ausdrücke in Reporting Services

Einige Ausdrücke werden häufig in Berichten verwendet. Dazu zählen Ausdrücke, um die Darstellung von Daten in einem Bericht, die Eigenschaften von Berichtselementen sowie die Methode zum Abrufen von Daten zu ändern. In diesem Thema werden einige Ausdrücke beschrieben, die in einem Bericht für allgemeine Aufgaben verwendet werden können. Weitere Informationen finden Sie unter Erstellen von Ausdrücken in Reporting Services.

Funktionen

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 Visual Basic-Laufzeitbibliothek sowie aus den Namespaces System.Convert und System.Math verwenden. Sie können Verweise auf Funktionen aus anderen Assemblys oder benutzerdefinierten Code hinzufügen. Sie können zudem Klassen aus Microsoft .NET Framework verwenden, einschließlich System.Text.RegularExpressions. Weitere Informationen zu den in Visual Basic-Funktionen unterstützten Ausdrücken finden Sie im Thema zur Visual Basic Run-Time Library auf msdn.microsoft.com.

Visual Basic-Funktionen

Mit Microsoft Visual Basic-Funktionen können Sie die Daten bearbeiten, die in Textfeldern angezeigt oder für Parameter, Eigenschaften oder sonstige Bereiche des Berichts verwendet werden. In diesem Abschnitt werden Beispiele zur Veranschaulichung einiger dieser Funktionen bereitgestellt. Weitere Informationen zu Visual Basic-Funktionen finden Sie in der Dokumentation zu Visual Basic.

Datumsfunktionen

Mit Visual Basic-Funktionen können Datumsinformationen in Berichten angezeigt werden.

  • Der folgende Ausdruck enthält die Today-Funktion, die das aktuelle Datum angibt. 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()
    
  • Mit der DateAdd-Funktion wird ein Datumsbereich basierend auf einem einzigen Parameter bereitgestellt. Der folgende Ausdruck liefert das Datum des Tages, der sechs Monate nach dem Datum des StartDate-Parameters liegt.

    =DateAdd(DateInterval.Month, 6, Parameters!StartDate.Value)
    
  • Der folgende Ausdruck enthält die Year-Funktion, die das Jahr für ein bestimmtes Datum anzeigt. Hiermit können Sie Datumsangaben zusammenfassen oder die Jahreszahl für eine Datumsgruppe 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. Weitere Informationen finden Sie in der Visual Basic .NET-Dokumentation.

    =Year(Fields!OrderDate.Value)
    

Zeichenfolgenfunktionen

Mit Visual Basic-Funktionen können Zeichenfolgen im Bericht bearbeitet werden.

  • Mithilfe von Verkettungsoperatoren und Visual Basic-Konstanten können Sie mehrere Felder kombinieren. Der folgende Ausdruck gibt zwei Felder zurück, jedes in einer eigenen Zeile desselben Textfeldes.

    =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 der Parameter StartDate und EndDate 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 Textfeldes statt der Format-Funktion im Textfeld verwenden, um eine Formatierung anzuwenden.

  • Mit den Funktionen Right, Len und 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 (\) vom User-Parameter zurück:

    =Right(Parameters!User.Value, Len(Parameters!User.Value) - InStr(Parameters!User.Value, "\"))
    

    Der folgende Ausdruck liefert dasselbe Ergebnis, wobei Elemente der .NET Framework-Klasse String 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 Textfeldes in einem Berichtselement festgelegt werden kann.

    = Join(Parameters!MySelection.Value)
    

    Enthält das Textfeld nur ein Datum oder eine Zahl, sollten Sie die Format-Eigenschaft des Textfeldes statt der Format-Funktion im Textfeld verwenden, um eine Formatierung anzuwenden.

  • Die Regex-Funktionen von .NET Framework-System.Text.RegularExpressions sind für das Ändern des Formats vorhandener Zeichenfolgen hilfreich, beispielsweise für das Formatieren einer Telefonnummer. Um in einem Feld die Form einer zehnstelligen Telefonnummer von nnn-nnn-nnnn in (nnn) nnn-nnnn zu ändern, wird im folgenden Ausdruck die Replace-Funktion verwendet:

    =System.Text.RegularExpressions.Regex.Replace(Fields!Phone.Value, "(\d{3})[ -.]*(\d{3})[ -.]*(\d{4})", "($1) $2-$3")
    

Konvertierungsfunktionen

Mit Visual Basic-Funktionen können Sie Datentypen entsprechend den Anforderungen Ihres Berichts konvertieren.

  • Mit Visual Basic-Funktionen können Sie Datentypen den Anforderungen entsprechend konvertieren. Konvertierungsfunktionen werden häufig zum Eliminieren oder Formatieren von #Fehlermeldungen in einem Bericht verwendet. Mit dem folgenden Ausdruck wird die Anzahl der für den mehrwertigen MySelection-Parameter ausgewählten Werte angezeigt.

    =CStr(Parameters!MySelection.Count)
    

Entscheidungsfunktionen

Mit Visual Basic-Funktionen kann ein Eingabewert ausgewertet und ein anderer Wert basierend auf dem Ergebnis zurückgegeben werden.

  • Die Iif-Funktion gibt einen von zwei Werten zurück, und zwar abhängig davon, ob der Ausdruck als TRUE ausgewertet wird. Im folgenden Ausdruck wird mit der Iif-Funktion der boolesche Wert TRUE zurückgegeben, wenn der LineTotal-Wert 100 überschreitet. Anderenfalls wird FALSE zurückgegeben:

    =Iif(Fields!LineTotal.Value > 100, True, False)
    

    Im folgenden Ausdruck wird mithilfe mehrerer Iif-Funktionen (die auch als "geschachtelte Iif-Funktionen" bezeichnet werden) einer von drei Werten in Abhängigkeit vom Wert von PctComplete zurückgegeben.

    =Iif(Fields!PctComplete.Value >= .8, "Green", Iif(Fields!PctComplete.Value >= .5, "Amber", "Red"))
    
  • Der folgende Ausdruck gibt ebenfalls einen von drei Werten basierend auf dem Wert von PctComplete zurück. Allerdings wird in diesem Fall die Switch-Funktion verwendet, die den Wert des ersten Ausdrucks einer Reihe von Ausdrücken zurückgibt, der als TRUE ausgewertet wird:

    =Switch(Fields!PctComplete.Value >= .8, "Green", Fields!PctComplete.Value >= .5, "Amber", Fields!PctComplete.Value < .5, "Red")
    
  • Mit dem folgenden 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 Textfeldes in einem Berichtselement gesteuert werden.

    =IIF(DateDiff("d",Fields!ImportantDate.Value, Now())>7,"Red","Blue")
    
  • Mit dem folgenden Ausdruck wird der Wert des Feldes PhoneNumber geprüft, um zu ermitteln, ob er null (Nothing in Visual Basic) entspricht. Statt des Wertes NULL wird "Kein Wert" zurückgegeben. Mit diesem Ausdruck kann der Wert eines Textfeldes in einem Berichtselement gesteuert werden.

    =IIF(Fields!PhoneNumber.Value Is Nothing,"No Value",Fields!PhoneNumber.Value)
    
  • Der folgende Ausdruck testet den Wert des Department-Feldes und gibt entweder den Namen eines Unterberichts oder null (Nothing in Visual Basic) zurück. Dieser Ausdruck kann für bedingte Drillthrough-Unterberichte verwendet werden.

    =Iif(Fields!Department.Value = "Development", "EmployeeReport", Nothing)
    
  • Der folgende Ausdruck testet, ob ein Feldwert NULL ist. Dieser Ausdruck kann verwendet werden, um die Hidden-Eigenschaft eines Bildberichtselements zu steuern.

    =Iif(IsNothing(Fields!LargePhoto.Value),True,False)
    

Berichtsfunktionen

Reporting Services enthält weitere Berichtsfunktionen zum Bearbeiten von Berichtsdaten. In diesem Abschnitt werden Beispiele für zwei dieser Funktionen behandelt. Weitere Informationen zu Berichtsfunktionen und weitere Beispiele finden Sie unter Verwenden von Berichtsfunktionen in Ausdrücken (Reporting Services).

  • Die Sum-Funktion gibt die Summe von Werten in einer Gruppierung oder einem Datenbereich zurück. Diese Funktion ist hilfreich für die Kopf- oder Fußzeile einer Tabellengruppe. Der folgende Ausdruck zeigt die Summe von Daten in der Gruppierung bzw. im Datenbereich Order an:

    =Sum(Fields!LineTotal.Value, "Order")
    
  • Wenn Sie einen Ausdruck, der die RowNumber-Funktion enthält, in einem Textfeld innerhalb eines Datenbereichs verwenden, wird die Zeilennummer für jede Instanz des Textfeldes 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 weiter unten unter "Seitenumbrüche".
    Der folgende Ausdruck zeigt die Zeilennummer von der ersten Zeile im äußersten Datenbereich bis zur letzten Zeile an. Das Schlüsselwort Nothing gibt an, dass die Funktion die Zählung mit der ersten Zeile im äußersten Datenbereich beginnt. Wenn Sie in untergeordneten Datenbereichen mit dem Zählen beginnen möchten, verwenden Sie den Namen des Datenbereichs.

    =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 soll möglicherweise der Name des Berichts und die Seitenzahl in der Fußzeile des Berichts angezeigt werden. 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 Zeit wird mit der .NET Framework-Formatzeichenfolge für ein kurzes 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
    

Mit Ausdrücken in der Kopf- bzw. Fußzeile des Berichts können Sie auch auf Berichtselemente aus dem Hauptteil des Berichts verweisen. Die folgenden Beispiele veranschaulichen, wie der erste und letzte Wert einer Seite in der Seitenkopfzeile angezeigt wird, ähnlich wie bei einer Verzeichnisauflistung. Bei diesem Beispiel wird von einem Datenbereich ausgegangen, der das LastName-Textfeld enthält.

  • Der folgende Ausdruck, der sich in einem Textfeld auf der linken Seite des Seitenkopfes befindet, gibt den ersten Wert des LastName-Textfeldes auf der Seite an:

    =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-Textfeldes auf der Seite an:

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

Auf einen Berichtselementverweis in einer Seitenkopfzeile oder -fußzeile können Aggregatfunktionen angewendet werden. (Auf einen Berichtselementverweis im Hauptteil des Berichts können jedoch keine Aggregatfunktionen angewendet werden.) Das folgende Beispiel beschreibt, wie die Summe einer Seite angezeigt wird. Bei diesem Beispiel wird von einem Datenbereich ausgegangen, der das Cost-Textfeld enthält.

  • Der folgende Ausdruck, im Seitenkopf oder -fuß platziert, gibt die Summe der Werte im Cost-Textfeld für die Seite an:

    =Sum(ReportItems("Cost").Value)
    
    ms157328.note(de-de,SQL.90).gifHinweis:
    In einem Seitenkopf oder -fuß kann pro Ausdruck nur auf ein einziges Berichtselement verwiesen werden.

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 dazu eine Gruppe in einem Datenbereich (normalerweise eine Gruppe direkt außerhalb des Details), 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.

    =Int((RowNumber(Nothing)-1)/25)
    

Eigenschaften

Mit Ausdrücken werden nicht nur Daten in Textfeldern angezeigt. 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

Mithilfe von Ausdrücken können Sie die Darstellung von Berichtselementen in einem Bericht ändern.

  • Wenn der folgende Ausdruck in der Color-Eigenschaft eines Textfeldes verwendet wird, wird die Farbe des Textes basierend auf dem Wert des Profit-Feldes geändert:

    =Iif(Fields!Profit.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:

    =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:

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

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 Ausgeblendet-Eigenschaft für Sichtbarkeit einer Tabelle festgelegt ist, wird die Tabelle mithilfe des Ausdrucks nur angezeigt, wenn sie mehr als 12 Zeilen enthält:

    =IIF(CountRows()>12,true,false)
    

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
    
  • Mit dem folgenden Ausdruck können Sie auf den Parameter in einem Abfrageparameter verweisen sowie Ausdrücke, Textfelder oder sonstige Bereiche des Berichts filtern. Bei diesem Beispiel wird von einem Parameter namens User ausgegangen:

    =Parameters!User.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 Verwenden von benutzerdefinierten Codeverweisen in Ausdrücken (Reporting Services).

  • Im folgenden Beispiel wird die eingebettete Codemethode ToUSD aufgerufen, die den Wert des StandardCost-Feldes in einen Dollarwert konvertiert:

    =Code.ToUSD(Fields!StandardCost.Value)
    
  • Im folgenden Beispiel wird veranschaulicht, wie einige benutzerdefinierte Konstanten und Variablen definiert werden können.
    [Visual Basic]

    Public Const MyNote = "Authored by Bob"
    Public Const NCopies As Int32 = 2
    Public Dim  MyVersion As String = "123.456"
    Public Dim MyDoubleVersion As Double = 123.456
    

    Obwohl benutzerdefinierte Konstanten und Variablen nicht in der Ansicht der Ausdrucks-Editor-Konstanten angezeigt werden (in der nur integrierte Konstanten angezeigt werden), können Sie Verweise darauf über einen beliebigen Ausdruck hinzufügen (wie in den folgenden Beispielen veranschaulicht). Sie werden wie Variants behandelt.
    [Visual Basic]

    =Code.MyNote
    =Code.NCopies 
    =Code.MyVersion
    =Code.MyDoubleVersion
    
  • Im folgenden Beispiel wird die eingebettete Codemethode FixSpelling aufgerufen, mit der alle Vorkommen des Textes Bike in SubCategory.Value durch Bicycle ersetzt werden.

    =Code.FixSpelling(Fields!SubCategory.Value)
    

    Mit dem folgenden Code wird eine Implementierung der FixSpelling-Methode veranschaulicht, wenn er in eine Berichtsdefinition eingebettet ist. Wenn dieser benutzerdefinierte Code zum ersten Mal ausgeführt wird, zeigt ein Meldungsfeld den ersetzten Text an. Dieses Beispiel veranschaulicht, wie Sie auf die .NET Framework-Klassen StringBuilder und System.Windows.Forms.MessageBox verweisen können. Sie müssen einen Verweis auf Ihre Berichtseigenschaften für System.Windows.Forms hinzufügen. Weitere Informationen finden Sie unter Vorgehensweise: Hinzufügen von Code zu einem Bericht (Berichts-Designer) und Vorgehensweise: Hinzufügen eines Assemblyverweises zu einem Bericht (Berichts-Designer).
    [Visual Basic]

    Dim firstTime As Boolean = True 
    Public Function FixSpelling(ByVal s As String) As String
       Dim strBuilder As New System.Text.StringBuilder(s)
       If s.Contains("Bike") Then
          strBuilder.Replace("Bike", "Bicycle")
          If firstTime Then
            System.Windows.Forms.MessageBox.Show(strBuilder.ToString())
    '       or MsgBox(strBuilder.ToString())
            firstTime = False
          End If
          Return strBuilder.ToString()
          Else : Return s
       End If
    End Function
    

Siehe auch

Konzepte

Verwenden von Berichtsfunktionen in Ausdrücken (Reporting Services)

Hilfe und Informationen

Informationsquellen für SQL Server 2005

Änderungsverlauf

Version Verlauf

14. April 2006

Geänderter Inhalt:
  • Zusätzliche Beispiele: regulärer Ausdruck für Telefonnummer; benutzerdefinierte Konstante und Variablen; Textfeldfarbe; Auswahl von mehreren Parametern und Auswahlzähler.
  • Überprüfung auf Nullen.

05. Dezember 2005

Geänderter Inhalt:
  • Ein Beispiel mit benutzerdefiniertem Code wurde hinzugefügt.