Show / Hide Table of Contents

Ausdruckssprache

In diesem Abschnitt wird die berichtsspezifische Ausdruckssyntax beschrieben.

Ausdruckssyntax

Ein Ausdruck ist eine Textzeichenfolge, die angibt, welche Daten verwendet werden sollen und wie sie verarbeitet werden sollen, um einen Wert zu erhalten. Der folgende Ausdruck gibt beispielsweise den ganzzahligen Wert '5' zurück:

3 + 2

Eine Ausdruckszeichenfolge kann aus mehreren Zeilen bestehen, die Konstanten, Operatoren, Funktionsaufrufe, Felder oder Parameter, Berichtselemente und Kommentare enthalten:

/*
This expression is set for the Visible property of a control
to show/hide the control based on the ShowTotalAmount parameter value.
*/

Iif (
  ?ShowTotalAmount == True,
  True,
  False
  )

Konstanten

  • Zeichenfolgenkonstanten
    Umschließen von Zeichenfolgenkonstanten in Apostrophe. Wenn eine Zeichenfolge einen Apostroph enthält, verdoppeln Sie den Apostroph.

    [Country] == 'France'
    [Name] == 'O''Neil'
    
  • Datum-/Uhrzeit-Konstanten
    Schließen Sie Datums-/Uhrzeitkonstanten in '#' ein.

    [OrderDate] >= #2018-03-22 13:18:51.94944#
    
  • STIMMT
    Der boolesche True-Wert.

    [InStock] == True
    
  • FALSE
    Der boolesche False-Wert.

    [InStock] == False
    
  • Aufzählung
    Geben Sie einen Enumerationswert anhand des zugrunde liegenden ganzzahligen Werts an.

    [Status] == 1
    
  • Guid
    Wickeln Sie eine Guid-Konstante in geschweifte Klammern. Verwenden Sie Guid-Konstanten in einem relationalen Vorgang nur mit Gleichheits- oder Ungleichheitsoperatoren.

    [OrderID] == {513724e5-17b7-4ec6-abc4-0eae12c72c1f}
    
  • Numerisch
    Geben Sie numerische Konstantentypen in einer Zeichenfolgenform durch Suffixe an:

    • Int32 (int) - 1
    • Int16 (kurz) - 1s
    • Byte (Byte) - 1b
    • Doppelzimmer (Doppel) - 1.0
    • Single (float) - 1.0f
    • Dezimal (dezimal) - 1.0m
    Wert Nachsilbe Beispiel
    32-Bit-Ganzzahl Kein Suffix [Kategorie-ID] == 1
    16-Bit-Ganzzahl s [Kategorie-ID] == 1s
    Byte b [Kategorie-ID] == 1b
    Gleitkommazahl mit doppelter Genauigkeit Kein Suffix [Länge] == 1.0
    Gleitkommazahl mit einfacher Genauigkeit f [Länge] == 1.0f
    Dezimale Gleitkommazahl m [Preis] == 25.0m
  • ?
    Ein NULL-Verweis, der auf kein Objekt verweist.
    Es wird empfohlen, den unären Operator IsNull (z. B. "[Region] ist null") oder die logische Funktion IsNull (z. B. "IsNull([Region])") anstelle von ? zu verwenden.

    [Region] != ?
    

Betriebspersonal

  • +
    Addiert den Wert eines numerischen Ausdrucks zu einem anderen oder verkettet zwei Zeichenfolgen.

    [UnitPrice] + 4
    [FirstName] + ' ' + [LastName]
    
  • -
    Ermittelt den Unterschied zwischen zwei Operanden.

    [Price1] - [Price2]
    
  • *
    Multipliziert den Wert zweier Operanden.

    [Quantity] * [UnitPrice]
    
  • /
    Teilt den ersten Operanden durch den zweiten.

    [Quantity] / 2
    
  • %
    Dividiert einen numerischen Operanden durch den anderen und gibt den Rest (Modul) zurück.

    [Quantity] % 3
    
  • |
    Performs a bitwise inclusive OR operation on two numeric expressions. Compares each bit of its first operand to the corresponding bit of its second operand. If either bit is 1, the corresponding resulting bit is set to 1. Otherwise, the corresponding resulting bit is set to 0.

    [Number] | [Number]
    
  • &
    Der bitweise UND-Operator. Vergleicht jedes Bit seines ersten Operanden mit dem entsprechenden Bit seines zweiten Operanden. Wenn die beiden Bits 1 sind, wird das entsprechende resultierende Bit auf 1 gesetzt. Andernfalls wird das entsprechende resultierende Bit auf 0 gesetzt.

    [Number] & 10
    
  • ^
    Führt einen bitweisen exklusiven OR-Vorgang für zwei numerische Ausdrücke aus.

    [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'
    
  • <
    Weniger als Operator. Wird zum Vergleichen von Ausdrücken verwendet.

    [UnitPrice] &lt; 20
    
  • <=
    Kleiner oder gleich Operator. Wird zum Vergleichen von Ausdrücken verwendet.

    [UnitPrice] &lt;= 20
    
  • >=
    Größer oder gleich Operator. Wird zum Vergleichen von Ausdrücken verwendet.

    [UnitPrice] &gt;= 30
    
  • >
    Größer als Operator. Wird zum Vergleichen von Ausdrücken verwendet.

    [UnitPrice] &gt; 30
    
  • In (,,,)
    Testet das Vorhandensein einer Eigenschaft in einem Objekt.

    [Country] In ('USA', 'UK', 'Italy')
    
  • Zwischen (,)
    Gibt einen zu testenden Bereich 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)
    
  • und (&&)
    Führt eine logische Konjunktion für zwei boolesche Ausdrücke aus.

    [InStock] And ([ExtendedPrice]> 100)
    [InStock] &amp;&amp; ([ExtendedPrice]> 100)
    
  • Oder (||)
    Performs a logical disjunction on two Boolean expressions.

    [Country]=='USA' Or [Country]=='UK'
    [Country]=='USA' \|| [Country]=='UK'
    
  • ~
    Führt eine bitweise Negation für einen numerischen Ausdruck aus.

    ~[Roles] = 251
    
  • Nicht (!)
    Führt eine logische Negation für einen booleschen Ausdruck aus.

    Not [InStock]
    ![InStock]
    
    • Gibt den Wert eines numerischen Ausdrucks zurück (ein unärer Operator). +[Value] = 10
    • Gibt das Negativ des Werts eines numerischen Ausdrucks zurück (ein unärer Operator). -[Value] = 20
  • Ist null
    Gibt True zurück, wenn ein Ausdruck NULL ist (ein Ausdruck, der auf kein Objekt verweist).

    [Region] is null
    

Operator-Rangfolge

Wenn ein Ausdruck mehrere Operatoren enthält, werden diese Operatoren in der folgenden Reihenfolge ausgewertet:

  • Literale Werte
  • Parameter
  • Bezeichner
  • OR (linksassoziativ)
  • UND (linksassoziativ)
  • Der Beziehungsqualifizierer '.' (linksassoziativ)
  • ==, !=
  • <, >, <=, >=
  • -, + (linksassoziativ)
  • *, /, % (linksassoziativ)
  • NICHT
  • Unär-
  • In
  • Iif
  • Trim(), Len(), Substring(), IsNull()
  • '[]' (für Set-Beschränkung)
  • '()'

Gruppieren Sie Elemente mit Klammern, um die Operatorrangfolge zu ändern. Beispielsweise werden Operatoren in der Standardreihenfolge im folgenden Ausdruck angewendet:

'Konten[Betrag == 2 + 48 * 2]'

Im nächsten Ausdruck wird zuerst der Additionsvorgang angewendet, da die zugehörigen Elemente in Klammern gruppiert sind, und der Multiplikationsvorgang wird zuletzt angewendet.

'Konten[Betrag == (2 + 48) * 2]'

Funktionen

Die Ausdruckssprache enthält eine Reihe von Funktionen, die die Funktionen eines Ausdrucks erweitern:

  • Logische Funktionen
  • Datums- und Uhrzeitfunktionen
  • Mathematische Funktionen
  • String-Funktionen
  • Funktionen für Ausdrucksbindungen und berechnete Felder
  • Funktionen für gespeicherte Prozeduren
  • Funktionen für den Zusammenfassungsausdrucks-Editor

Sie können auch benutzerdefinierte Funktionen implementieren.

Eine vollständige Liste der Funktionen, die in Ausdrücken verfügbar sind, finden Sie im folgenden Thema: Funktionen in Ausdrücken.

Groß-/Kleinschreibung

Bei den Operatoren wird nicht zwischen Groß- und Kleinschreibung unterschieden. Die Berücksichtigung der Groß-/Kleinschreibung von Werten kann von der Datenquelle abhängen. Beispielsweise ist SQL Server Express 2005 so konfiguriert, dass die Groß-/Kleinschreibung nicht beachtet wird. In diesem Fall wird der folgende Filterausdruck immer als True ausgewertet:

'Lower(Name) == Upper(Name)'

Escape-Schlüsselwörter

Sie können einen schlüsselwortähnlichen Feldnamen mit dem Escapezeichen @ markieren. Im folgenden Ausdruck interpretiert die CriteriaOperator.Parse-Methode '@Or' als ein Feld mit dem Namen Or, nicht als logischen Operator OR.

'@Or = 'Wert''

Escape-Charaktere

Verwenden Sie einen umgekehrten Schrägstrich ('') als Escapezeichen für Zeichen in einem Ausdruck, wie unten gezeigt:

\[

\\

\'

Verwenden Sie einen Apostroph (''') als Escapezeichen für Zeichenfolgenliterale:

Der Wert eines Parameters ist:' + ?parameter1'

Datenfelder und berechnete Felder

Schließen Sie den Namen eines Datenfelds oder berechneten Felds in eckige Klammern ein ('''[''' und ''']'''):

/*
This expression is set for a control's Text property
to bind the control to the UnitPrice data field.
*/
[UnitPrice]

Stellen Sie sicher, dass das Feld mit dem angegebenen Namen in der Datenquelle und im 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):

/*
This expression is set for a control's Text property
to bind the control to the UnitPrice data field from the Products data member
(the report is not bound to Products).
*/
[Products].[UnitPrice]

Berichtsparameter

Verwenden Sie die folgende Syntax, um Berichtsparameter in einen Ausdruck einzufügen:

  • Geben Sie vor dem Namen eines Parameters ein Fragezeichen ein.

    '?Parameter1'

  • (Veraltet) Verwenden Sie das Präfix "Parameter." vor dem Namen eines Berichtsparameters.

    '[Parameter.Parameter1]'

Aufzählungen

Führen Sie einen der folgenden Schritte aus, um einer Eigenschaft einen Enumerationswert zuzuweisen:

  • Geben Sie einen Enumerationswert anhand des zugrunde liegenden ganzzahligen Werts an.

    '[Grenzen] = 1'

  • Mit dem Ausdrucks-Editor können Sie einen Zeichenfolgenwert für integrierte Enumerationen angeben:

    Enumeration im Ausdrucks-Editor

Kommentare

Die Ausdruckssprache unterstützt Kommentare. Zum Beispiel:

/*
This is a comment within an expression.
*/

Kommentare beginnen mit der Sequenz '''/''' und enden mit der passenden Sequenz '''/'''.

In This Article
Back to top Copyright (c) 1998-2024 42 Software GmbH. All rights reserved.