Ausdruckssprache
Dieser Abschnitt beschreibt die berichtsspezifische Ausdruckssyntax.
Ausdruckssyntax
Ein Ausdruck ist eine Textzeichenkette, die angibt, welche Daten entnommen und wie sie verarbeitet werden sollen, um einen Wert zu erhalten. Zum Beispiel gibt der folgende Ausdruck den ganzzahligen Wert 5 zurück:
3 + 2
Eine Ausdruckszeichenkette kann aus mehreren Zeilen bestehen, die Konstanten, Operatoren, Funktionsaufrufe, Felder oder Parameter, Berichtselemente und Kommentare enthalten:
/*
Dieser Ausdruck ist für die Visible-Eigenschaft eines Steuerelements festgelegt,
um das Steuerelement basierend auf dem Parameterwert ShowTotalAmount ein- oder auszublenden.
*/
Iif (
?ShowTotalAmount == True,
True,
False
)
Konstanten
-
Zeichenkettenkonstanten
Schließen Sie Zeichenkettenkonstanten in Apostrophe ein. Wenn eine Zeichenkette einen Apostroph enthält, verdoppeln Sie den Apostroph.[Country] == 'France'
[Name] == 'O''Neil' -
Datums-/Zeitkonstanten
Schließen Sie Datums-/Zeitkonstanten in '#' ein.[OrderDate] >= #2018-03-22 13:18:51.94944# -
True
Der boolesche Wert True.[InStock] == True -
False
Der boolesche Wert False.[InStock] == False -
Aufzählung
Geben Sie einen Aufzählungswert durch seinen zugrunde liegenden ganzzahligen Wert an.[Status] == 1 -
Guid
Schließen Sie eine Guid-Konstante in geschweifte Klammern ein. Verwenden Sie Guid-Konstanten nur in relationalen Operationen mit Gleichheits- oder Ungleichheitsoperatoren.[OrderID] == {513724e5-17b7-4ec6-abc4-0eae12c72c1f} -
Numerisch
Geben Sie numerische Konstantentypen in Zeichenkettenform durch Suffixe an:- Int32 (int) - 1
- Int16 (short) - 1s
- Byte (byte) - 1b
- Double (double) - 1.0
- Single (float) - 1.0f
- Decimal (decimal) - 1.0m
Wert Suffix Beispiel 32-Bit-Ganzzahl Kein Suffix [CategoryID] == 1 16-Bit-Ganzzahl s [CategoryID] == 1s Byte b [CategoryID] == 1b Gleitkommazahl mit doppelter Genauigkeit Kein Suffix [Length] == 1.0 Gleitkommazahl mit einfacher Genauigkeit f [Length] == 1.0f Dezimale Gleitkommazahl m [Price] == 25.0m -
?
Eine Nullreferenz, die auf kein Objekt verweist.
Es wird empfohlen, den unären Operator IsNull (zum Beispiel "[Region] is null") oder die logische Funktion IsNull (zum Beispiel "IsNull([Region])") anstelle von ? zu verwenden.[Region] != ?
Operatoren
-
+
Addiert den Wert eines numerischen Ausdrucks zu einem anderen oder verkettet zwei Zeichenketten.[UnitPrice] + 4
[FirstName] + ' ' + [LastName] -
-
Ermittelt die Differenz zwischen zwei Operanden.[Price1] - [Price2] -
*
Multipliziert den Wert zweier Operanden.[Quantity] * [UnitPrice] -
/
Dividiert den ersten Operanden durch den zweiten.[Quantity] / 2 -
%
Dividiert einen numerischen Operanden durch den anderen und gibt den Rest (Modulus) zurück.[Quantity] % 3 -
|
Führt eine bitweise inklusive ODER-Operation auf zwei numerischen Ausdrücken durch. Vergleicht jedes Bit des ersten Operanden mit dem entsprechenden Bit des zweiten Operanden. Wenn eines der Bits 1 ist, wird das entsprechende Ergebnisbit auf 1 gesetzt. Andernfalls wird das entsprechende Ergebnisbit auf 0 gesetzt.[Number] | [Number] -
&
Der bitweise UND-Operator. Vergleicht jedes Bit des ersten Operanden mit dem entsprechenden Bit des zweiten Operanden. Wenn beide Bits 1 sind, wird das entsprechende Ergebnisbit auf 1 gesetzt. Andernfalls wird das entsprechende Ergebnisbit auf 0 gesetzt.[Number] & 10 -
^
Führt eine bitweise exklusive ODER-Operation auf zwei numerischen Ausdrücken durch.[Number] ^ [Number] -
==
Gibt True zurück, wenn beide Operanden gleich sind; andernfalls wird False zurückgegeben.[Quantity] == 10 -
!=
Gibt True zurück, wenn die Operanden nicht gleich sind; andernfalls wird False zurückgegeben.[Country] != 'France' -
<
Kleiner-als-Operator. Wird zum Vergleichen von Ausdrücken verwendet.[UnitPrice] < 20 -
<=
Kleiner-als-oder-gleich-Operator. Wird zum Vergleichen von Ausdrücken verwendet.[UnitPrice] <= 20 -
>=
Größer-als-oder-gleich-Operator. Wird zum Vergleichen von Ausdrücken verwendet.[UnitPrice] >= 30 -
>
Größer-als-Operator. Wird zum Vergleichen von Ausdrücken verwendet.[UnitPrice] > 30 -
In (,,,)
Prüft, ob ein Wert in einer Menge enthalten ist.[Country] In ('USA', 'UK', 'Italy') -
Between (,)
Gibt einen Bereich zum Testen an. Gibt True zurück, wenn ein Wert größer oder gleich dem ersten Operanden und kleiner oder gleich dem zweiten Operanden ist.[Quantity] Between (10, 20) -
And (&&)
Führt eine logische Konjunktion auf zwei booleschen Ausdrücken durch.[InStock] And ([ExtendedPrice]> 100)
[InStock] && ([ExtendedPrice]> 100) -
Or (||)
Führt eine logische Disjunktion auf zwei booleschen Ausdrücken durch.[Country]=='USA' Or [Country]=='UK'
[Country]=='USA' \|| [Country]=='UK' -
~
Führt eine bitweise Negation auf einem numerischen Ausdruck durch.~[Roles] = 251 -
Not (!)
Führt eine logische Negation auf einem booleschen Ausdruck durch.Not [InStock]
![InStock] -
Gibt den Wert eines numerischen Ausdrucks zurück (ein unärer Operator).
+[Value] = 10 -
Gibt den negativen Wert eines numerischen Ausdrucks zurück (ein unärer Operator).
-[Value] = 20 -
Is Null
Gibt True zurück, wenn ein Ausdruck eine Nullreferenz ist (eine, die auf kein Objekt verweist).[Region] is null
Operatorrangfolge
Wenn ein Ausdruck mehrere Operatoren enthält, werden diese Operatoren in der folgenden Reihenfolge ausgewertet:
- Literalwerte
- Parameter
- Bezeichner
- OR (linksassoziativ)
- AND (linksassoziativ)
- Der '.'-Beziehungsqualifizierer (linksassoziativ)
- ==, !=
- <, >, <=, >=
- -, + (linksassoziativ)
- *, /, % (linksassoziativ)
- NOT
- Unäres -
- In
- Iif
- Trim(), Len(), Substring(), IsNull()
- '[]' (für Mengeneinschränkung)
- '()'
Gruppieren Sie Elemente mit Klammern, um die Operatorrangfolge zu ändern. Zum Beispiel werden Operatoren im folgenden Ausdruck in der Standardreihenfolge angewendet:
Accounts[Amount == 2 + 48 * 2]
Im nächsten Ausdruck wird die Additionsoperation zuerst angewendet, da ihre zugehörigen Elemente mit Klammern gruppiert sind, und die Multiplikationsoperation wird zuletzt angewendet.
Accounts[Amount == (2 + 48) * 2]
Funktionen
Die Ausdruckssprache enthält eine Reihe von Funktionen, die die Möglichkeiten eines Ausdrucks erweitern:
- Logische Funktionen
- Datums- und Zeitfunktionen
- Mathematische Funktionen
- Zeichenkettenfunktionen
- Funktionen für Ausdrucksbindungen und berechnete Felder
- Funktionen für gespeicherte Prozeduren
- Funktionen für den Zusammenfassungs-Ausdrucks-Editor
Sie können auch benutzerdefinierte Funktionen implementieren.
Eine vollständige Liste der in Ausdrücken verfügbaren Funktionen finden Sie im folgenden Thema: Funktionen in Ausdrücken.
Groß-/Kleinschreibung
Operatoren unterscheiden nicht zwischen Groß- und Kleinschreibung. Die Groß-/Kleinschreibung von Werten kann von der Datenquelle abhängen. Zum Beispiel ist SQL Server Express 2005 als nicht unterscheidend konfiguriert. In diesem Fall ergibt der folgende Filterausdruck immer True:
Lower(Name) == Upper(Name)
Schlüsselwörter maskieren
Sie können einen feldnamenähnlichen Schlüsselbegriff mit dem Maskierungszeichen @ kennzeichnen. Im folgenden Ausdruck interpretiert die Methode CriteriaOperator.Parse @Or als ein Feld namens Or, nicht als den logischen Operator OR.
@Or = 'value'
Maskierungszeichen
Verwenden Sie einen umgekehrten Schrägstrich (\) als Maskierungszeichen für Zeichen in einem Ausdruck, wie unten gezeigt:
\[
\\
\'
Verwenden Sie einen Apostroph (') als Maskierungszeichen für Zeichenkettenliterale:
'A parameter''s value is:' + ?parameter1
Datenfelder und berechnete Felder
Schließen Sie den Namen eines Datenfelds oder berechneten Felds in eckige Klammern ([ und ]) ein:
/*
Dieser Ausdruck ist für die Text-Eigenschaft eines Steuerelements festgelegt,
um das Steuerelement an das Datenfeld UnitPrice zu binden.
*/
[UnitPrice]
Stellen Sie sicher, dass das Feld mit dem angegebenen Namen in der Datenquelle und dem Datenelement des Berichts vorhanden ist.
Sie können auf Datenfelder aus einem Datenelement verweisen, das nicht als Datenelement des Berichts angegeben ist (nur der erste Datensatz wird zurückgegeben):
/*
Dieser Ausdruck ist für die Text-Eigenschaft eines Steuerelements festgelegt,
um das Steuerelement an das Datenfeld UnitPrice aus dem Datenelement Products zu binden
(der Bericht ist nicht an Products gebunden).
*/
[Products].[UnitPrice]
Berichtsparameter
Verwenden Sie die folgende Syntax, um Berichtsparameter in einen Ausdruck einzufügen:
-
Geben Sie ein Fragezeichen vor dem Namen eines Parameters ein.
?parameter1 -
(Veraltet) Verwenden Sie das Präfix "Parameters." vor dem Namen eines Berichtsparameters.
[Parameters.parameter1]
Aufzählungen
Führen Sie einen der folgenden Schritte aus, um einer Eigenschaft einen Aufzählungswert zuzuweisen:
-
Geben Sie einen Aufzählungswert durch seinen zugrunde liegenden ganzzahligen Wert an.
[Borders] = 1 -
Der Ausdrucks-Editor kann Ihnen helfen, einen Zeichenkettenwert für integrierte Aufzählungen anzugeben:

Kommentare
Die Ausdruckssprache unterstützt Kommentare. Zum Beispiel:
/*
Dies ist ein Kommentar innerhalb eines Ausdrucks.
*/
Kommentare beginnen mit der Sequenz /* und enden bei der entsprechenden Sequenz */.