Вы находитесь здесь:Файлы и поля > Поля > Редактор выражений

Редактор выражений

Теперь у вас имеется возможность использовать динамические выражения полей вместо указания имени поля в наборе форм. Вы можете использовать эти выражения, чтобы выполнять обусловленные вычисления или создавать обусловленные метки и фильтры.

Чтобы открыть Редактор выражений, щелкните правой кнопкой мыши и выберите опцию Редактировать выражение из контекстного меню.

Нажмите на кнопку Проверить, чтобы выполнить проверку синтаксиса выражения, которое вы ввели.

Для примеров таких выражений, которые вы можете написать в Редакторе выражений, перейдите к документу: Приступая к работе: Динамические выражения полей.

Запись выражений

Выражение может содержать переменные и постоянные значения, сравнения, а также арифметические и логические операции. Используемые в выражении операции оцениваются в следующем порядке очередности:

Постоянные значения

Постоянные значения могут быть числовыми или символьными:

Переменные

Переменная выражения [#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>)

Текущие определенные функции:

Функция Описание
IN(y, x1, ... xn) Функция IN (В) берет по меньшей мере 2 параметра ,первый - это значение, которое сравнивается. Другие параметры - это значения, с которыми производится сравнение. Если есть совпадение, функция выдает логическое TRUE (верно). Например:
 

=IN("VALUE", [FIELD1], [FIELD2], [FIELD3])

RGB(r,g,b) Вычисляет значение цвета RGB в ходе работы, например, при загрузке точек.
  Значения r, g, b должны находиться в диапазоне [0, 255]
DEFINED(x) X – переменное значение. Проверяет, было ли оно определено (было ли присвоено какое-либо значение).
ABS(x) Возвращает абсолютное значение х. Если х не задано, выдает неопределённое значение.
MIN(x1, x2, ... xn) Выдает минимальное определенное значение всех аргументов. Если ни один аргумент не является заданным значением, выдает неопределенное значение.
MAX(x1, x2, ... xn) Выдает максимальное определенное значение всех аргументов. Если ни один аргумент не является заданным значением, выдает неопределенное значение.
ROUND(x, n) Округляет значение х до точек после запятой n. Если либо х, либо n не определено, выдает неопределенное значение.
INT(x) Округляет х до ближайшего целого. Если х не задано, выдает неопределённое значение.
SQRT(x) Вычисляет квадратный корень х. Если х не задано, выдает неопределённое значение.

Для тригонометрических функций ожидается, что значения ввода будут в градусах и десятичных градуса (ГГГ.ГГГГ), результат будет в этом виде.

Функция Описание
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 логарифма х.

Подсказки

  1. Точно знайте тип преобразования в вашем выражении. Запомните, что кроме нескольких исключений, тип результата соответствует типу левого операнда выражения. Поэтом, обратите внимание на то, что “5” + 5 будет равно “55”, а не 10. Учтите, что если какой-либо оператор не определен, результат выражения также будет неопределенным.
  2. Запомните, что тип переменного значения соответствует типу соответствующего поля в файле.
  3. Названия функции и переменного значения, на которые имеется ссылка в выражении, совпадают только если они действительно необходимы для получения результирующего значения. Используйте функцию ОПРЕД, что гарантировать наличие переменной, которая имеет значение, до установки ссылки на нее. Выражение 2 + ПКЗД является ненадежным, поскольку ПКЗД может не существовать вообще или у него может не быть значения.
  4. Вместо этого используйте следующее выражение: 2 + если (if) ОПРЕД (ПКЗД) тогда ПКЗД в ином случае <некое_определенное_значение> если (fi).

  1. Для обеспечения правильности компьютерной обработки используйте круглые скобки.
  2. Запомните, что ВСЕ части оператора 'если (if)' являются обязательными. Не забудьте поставить маркер 'если (if)' в конце условного оператора.

© MICROMINE Pty Ltd 2016