Синтаксис выражений
В данном руководстве описывается синтаксис выражения для отчета.
Синтаксис выражения
Выражение — это текстовая строка, указывающая, какие данные брать и как их обрабатывать для получения значения. Например, следующее выражение возвращает целочисленное значение 5
:
3 + 2
Строка выражения может состоять из нескольких строк, содержащих константы, операторы, вызовы функций, поля или параметры, элементы отчета и комментарии:
/*
Данное выражение настраивает Видимость элемента в зависимости от полученного значения.
*/
Iif (
?ShowTotalAmount == True,
True,
False
)
Константы
Строковые константы Заключайте строковые константы в апострофы. Если строка содержит апостроф, удвойте апостроф.
[Country] == 'France' [Name] == 'O''Neil'
Константы даты и времени Заключайте константы даты и времени в '#'.
[OrderDate] >= #2018-03-22 13:18:51.94944#
True
Логическое истинное значение.[InStock] == True
False
Логическое значение False..[InStock] == False
Перечисления
Укажите значение перечисления по его основному целочисленному значению.[Status] == 1
Идентификатор
Константа Идентификатор заключена в фигурные скобки. Используйте константу Идентификатор только с операторами равенства или неравенства.[OrderID] == {513724e5-17b7-4ec6-abc4-0eae12c72c1f}
Числовой
Укажите типы числовых констант в виде строки с помощью суффиксов:- Int32 (int) - 1
- Int16 (short) - 1s
- Byte (byte) - 1b
- Double (double) - 1.0
- Single (float) - 1.0f
- Decimal (decimal) - 1.0m
Значение Суффикс Пример 32-bit integer No suffix [CategoryID] == 1 16-bit integer s [CategoryID] == 1s Byte b [CategoryID] == 1b Double-precision floating-point number No suffix [Length] == 1.0 Single-precision floating-point number f [Length] == 1.0f Decimal floating-point number m [Price] == 25.0m ?
Пустая ссылка, не относящаяся ни к какому объекту. Рекомендуется использовать оператор IsNull (Например, "[Region] is null") или логическую функцию IsNull (Например, "IsNull([Region])") вместо ?.[Region] != ?
Операторы
+
Прибавляет значение одного числового выражения к другому или объединяет две строки.[UnitPrice] + 4 [FirstName] + ' ' + [LastName]
-
Находит разницу между двумя операндами.[Price1] - [Price2]
*
Умножает значение двух операндов.[Quantity] * [UnitPrice]
/
Делит первый операнд на второй.[Quantity] / 2
%
Делит один числовой операнд на другой и возвращает остаток.[Quantity] % 3
|
Выполняет побитовую операцию ИЛИ с двумя числовыми выражениями. Сравнивает каждый бит своего первого операнда с соответствующим битом второго операнда. Если любой бит равен 1, соответствующий результирующий бит устанавливается в 1. В противном случае соответствующий результирующий бит устанавливается в 0.[Number] | [Number]
&
Побитовый оператор И. Сравнивает каждый бит своего первого операнда с соответствующим битом второго операнда. Если два бита равны 1, соответствующий результирующий бит устанавливается в 1. В противном случае соответствующий результирующий бит устанавливается в 0.[Number] & 10
^
Выполняет операцию побитового исключающего ИЛИ над двумя числовыми выражениями.[Number] ^ [Number]
==
Возвращает True , если оба операнда равны; в противном случае возвращается False .[Quantity] == 10
!=
Возвращает True , если операнды не равны; в противном случае возвращается False .[Country] != 'France'
< Меньше, чем оператор. Используется для сравнения выражений.
[UnitPrice] < 20
<=
Меньше или равно оператору. Используется для сравнения выражений.[UnitPrice] <= 20
>= Больше или равно оператору. Используется для сравнения выражений.
[UnitPrice] >= 30
> Больше, чем оператор. Используется для сравнения выражений.
[UnitPrice] > 30
In (,,,)
Проверяет наличие свойства у объекта.[Country] In ('USA', 'UK', 'Italy')
Between (,)
Указывает диапазон для проверки. Возвращает True, если значение больше или равно первому операнду и меньше или равно второму операнду.[Quantity] Between (10, 20)
And (&&)
Выполняет логическое соединение двух логических выражений.[InStock] And ([ExtendedPrice]> 100) [InStock] && ([ExtendedPrice]> 100)
Or (||)
Выполняет логическое разъединение двух логических выражений.[Country]=='USA' Or [Country]=='UK' [Country]=='USA' || [Country]=='UK'
~
Выполняет побитовое отрицание числового выражения.~[Roles] = 251
Not (!)
Выполняет логическое отрицание логического выражения.Not [InStock] ![InStock]
+ Возвращает значение числового выражения (унарный оператор).
+[Value] = 10
− Возвращает отрицательное значение числового выражения (унарный оператор).
-[Value] = 20
Is Null
Возвращает True, если выражение является нулевой ссылкой (не ссылающейся ни на какой объект).[Region] is null
Приоритет операторов
Когда выражение содержит несколько операторов, эти операторы оцениваются в следующей последовательности:
- Буквенные значения
- Параметры
- Идентификаторы
- OR
- AND
- '.' квалификатор отношений (левоассоциативный)
- ==, !=
- <, >, <=, >=
- -, + (левоассоциативный)
- *, /, % (левоассоциативный)
- NOT
- Унарный -
- In
- Iif
- Trim(), Len(), Substring(), IsNull()
- '[]' (для ограничения набора)
- '()'
Группируйте элементы со скобками, чтобы изменить приоритет оператора. Например, операторы применяются в порядке по умолчанию в следующем выражении:
Accounts[Amount == 2 + 48 * 2]
В следующем выражении операция сложения применяется первой, поскольку связанные с ней элементы сгруппированы скобками, а операция умножения применяется последней.
Accounts[Amount == (2 + 48) * 2]
Функции
Язык выражений включает набор функций, расширяющих возможности выражения:
- Логические функции
- Функции даты и времени
- Математические функции
- Строковые функции
- Функции для привязки выражений и вычисляемых полей
- Функции для хранимых процедур
- Функции редактора сводных выражений
- Функции Колибри
Полный список функций, доступных в выражениях, см. в следующем разделе: Функции в выражениях.
Чувствительность к регистру
Операторы чувствительны к регистру. В этом случае следующее выражение фильтра оценивается как False:
Lower(Name) == Upper(Name)
Избегание операторов
Вы можете пометить имя поля, похожее на оператор, с помощью символа @. В приведенном ниже выражении @Or
интерпретируется как поле с именем Or , а не как логический оператор OR.
@Or = 'value'
Экранирующие символы
Используйте обратную косую черту ( \
), чтобы отобразить символ как строку, как показано ниже:
\[
\\
\'
Используйте апостроф ('
) для отображения строк:
'A parameter''s value is:' + ?parameter1
Поля данных и вычисляемые поля
Заключите поле данных или имя вычисляемого поля в квадратные скобки ([
и ]
):
[UnitPrice]
Убедитесь, что поле с указанным именем существует в источнике данных отчета и члене данных.
Параметры отчета
Используйте следующий синтаксис для вставки параметров отчета в выражение:
Введите вопросительный знак перед именем параметра.
?parameter1
Перечисления
Выполните следующие действие, чтобы присвоить свойству значение перечисления:
Укажите значение перечисления по его базовому целочисленному значению.
[Borders] = 1
Комментарии
Язык выражений поддерживает комментарии. Например:
/*
Это комментарий внутри выражения.
*/
Комментарии начинаются с символов /*
и заканчиваются соответствующими символами */
.