Теперь у вас имеется возможность использовать динамические выражения полей вместо указания имени поля в наборе форм. Вы можете использовать эти выражения, чтобы выполнять обусловленные вычисления или создавать обусловленные метки и фильтры.
Чтобы открыть Редактор выражений, щелкните правой кнопкой мыши и выберите опцию Редактировать выражение из контекстного меню.
Нажмите на кнопку Проверить, чтобы выполнить проверку синтаксиса выражения, которое вы ввели.
Для примеров таких выражений, которые вы можете написать в Редакторе выражений, перейдите к документу: Приступая к работе: Динамические выражения полей.
Выражение может содержать переменные и постоянные значения, сравнения, а также арифметические и логические операции. Используемые в выражении операции оцениваются в следующем порядке очередности:
Постоянные значения могут быть числовыми или символьными:
Переменная выражения [#record] ([#запись]) предоставляет доступ к номеру текущей записи. Чтобы использовать каждую 25-ю запись в вычислении или для пометки:
=if([#запись] % 25) = 0 then "Пометить это" else "" endif
Одна из возможных ловушек для невнимательных людей - то, что номера записей начинаются с 1, то означает, что первая запись не будет выбрана. Если это представляет проблему, просто вычтите 1 из номера (ID) записи:
=if(([#запись]-1) % 25) = 0 then "Пометить это" else "" endif
Тип | Числовое | Стринг | Пересечение |
---|---|---|---|
Числовое | - | Стринг, содержащий числовое значение, т.е. “5” для 5 | ВЕРНО, если числовое значение задано, в противном случае НЕВЕРНО |
Стринг | Если возможно, числовое значение из стринга. В противном случае 0. | - | ВЕРНО, если не пустое, в противном случае НЕВЕРНО. |
Пересечение | 1, если ВЕРНОЕ. 0, если НЕВЕРНОЕ. | “true” если ВЕРНО. Пустой стринг, если НЕВЕРНО. | - |
Полученный в результате тип выражение определяется типом первого операнда. Тем не менее, это не всегда удобно, потому что:
=[RL] + "m"
даст неожиданный результат.
Унарный оператор “#”, который может использоваться для преобразования операнда, условия или выражения в стринг, очень удобен в этих случаях. Поэтому:
=#[RL] + "m"
дает корректный результат.
Несколько примеров приведены в таблице ниже:
=3 + 4 | производит число 7, в то время как: |
=#(3 + 4) | производит текст "7", и: |
=#3 + 4 | производит текст "34", где 3 и 4 просто связываются. |
Оператор | Результат для чисел | Результат для стрингов | Результат для пересечения |
---|---|---|---|
+ | Сложение | Сочленение | Логическое OR (ИЛИ) |
- | Вычитание | Недопустимая операция | Логическое ИЛИ в обратную сторону |
* | Умножение | Недопустимая операция | Логическое AND (И) |
/ | Деление | Недопустимая операция | Логическое И в обратную сторону |
^ | Степень | *1*Операнды преобразовываются в числовые значения. | * |
Примечание: Если не утверждается обратное, тип выражения справа будет преобразован в тип выражения слева прежде, чем будет выполнена операция.
То есть 5.05 будет (сочлененным) результатом “5.0” + 5, а 10 будет (арифметическим) результатом 5.0 + “5”.
Знак | Оператор |
---|---|
> | Больше чем |
< | Меньше чем |
>= | Больше или равно |
< | Меньше или равно |
= | Равно |
!= | Не равно |
Примечание: Если типы выражений справа и слева различны, то тип выражения справа будет преобразован в тип выражения слева прежде, чем будет выполнено сравнение. Операции сравнения дают результат Пересечения.
Знак | Оператор |
---|---|
& | Логическое И |
| | Логическое ИЛИ |
! | Логическое НЕ |
В следующем примере Логический оператор ИЛИ (OR) (вертикальная черта) используется в выражении поля для определения фильтра. Если запись содержит либо 1, либо 2, либо 3 в поле BLOCK, тогда запись проходит через фильтр.
=[BLOCK] = “1” | [BLOCK] = “2” | [BLOCK] = “3”
То же выражение можно записать более кратко, используя функцию В (IN):
=IN([BLOCK], "1", "2", "3")
Анализатор выражения содержит условный оператор 'если (if)'. Синтаксическая структура:
if <predicate> then <expression_true> elseif|elif <predicate> then <expression_true> else <expression_false> endif|fi
Часть оператора elsif|elif может повторяться или полностью пропускаться. Логика в то, чтобы оценивать предикаты пока не будет найден один ВЕРНЫЙ, после чего оценивать соответствующее <еxpression_true>. Если ни один предикат не оценивается ВЕРНО, тогда оценивается <expression_false> (неверное), и выдается как результат.
Вы можете использовать оператор 'если (if)' следующим образом:
ПКЗД + если (if) ИЗВЛЕЧЕНИЕ > 0.5 тогда ПКЗД * 2 в ином случае 0 если (fi)
Иными словами, если ИЗВЛЕЧЕНИЕ больше, чем 0.5, тогда прибавляем ПКЗД * 2 к ПКЗД, в ином случае прибавляем 0 (ничего).
Общая форма вызова функции:
ФУНКЦИЯ (<парам1>, <парам2>, ... <парамN>) |
Текущие определенные функции:
Для тригонометрических функций ожидается, что значения ввода будут в градусах и десятичных градуса (ГГГ.ГГГГ), результат будет в этом виде.
Функция | Описание |
---|---|
SIN(x) | Выдает синус х. |
COS(x) | Выдает косинус х. |
TAN(x) | Выдает тангенс х. |
ASIN(x) | Выдает арксинус х. |
ACOS(x) | Выдает арккосинус х. |
ATAN(x) | Выдает арктангенс х. |
ATAN2(y, x) | Выдает арктангенс y/x. (если x равно 0, ATAN2 выдает 180 если y положительный, -180. если y отрицательный, или 0 если y равен 0.) Если либо x, либо y не определен, выдает неопределенное значение. |
LN(x) | Выдает натуральный логарифм х. |
LG(x) | Выдает основание-10 логарифма х. |
Вместо этого используйте следующее выражение: 2 + если (if) ОПРЕД (ПКЗД) тогда ПКЗД в ином случае <некое_определенное_значение> если (fi).
© MICROMINE Pty Ltd 2016