Функции преобразования типов CSTR, CNUM, CDATE, CTIME.
В арифметических операциях могут участвовать операнды только одного типа. Например, в операциях вычитания, умножения и деления могут участвовать только числа. В операциях сложения только числа или только строки. Иногда возникает необходимость сделать что-то с данными разных типов. Например, составить текст: заявка № 15 от 29.03.2016. Выражение будет иметь вид:
`'заявка № ' + cstr([номер]) + ' от ' + cstr([дата])`
CSTR(число/дата/время) - преобразует значение в текст.
CNUM('текст') - преобразует текст в число, если текст представляет собой число в правильном формате. Разделитель дробной части определяется из настроек операционной системы. В русской версии это запятая.
CDATE('текст') - преобразует текст в дату, если текст представляет собой дату в правильном формате. Формат определяется из настроек операционной системы. В русской версии это дд.мм.гггг. Можно сокращать или опускать год, месяц. В этом случае будут подставляться текущие месяц, год.
CTIME('текст') - преобразует текст в время, если текст представляет собой время в правильном формате. Формат определяется из настроек операционной системы. В русской версии это чч:мм:сс. Можно сокращать или опускать секунды, минуты. В этом случае время будет дополняться нулями.
Использование переменных. SETVAR, GETVAR, VAREXISTS.
Переменная может хранить данные разных типов: число, дата, текст. Запись значения в переменную осуществляется функцией SETVAR. Синтаксис следующий:
`SETVAR('имя переменной', значение)`
Переменная создается при первом обращении к ней и существует в течении всего времени выполнения программы или до перехода в дизайнер. К переменной можно обратиться из любого выражения с помощью функции GETVAR('имя переменной'). Если переменная не найдена, то программа выдаст ошибку. Чтобы проверить существует ли переменная, используйте функцию VAREXISTS('имя переменной'). Функция вернет 1, если переменная существует, в противном случае 0.
Функция RECID.
Эта функция возвращает идентификатор текущей записи (id) родительской формы или запроса (если запрос простой - без группировок и объединений). Синтаксис следующий:
`RECID('имя формы или запроса')`
Функия часто используется в фильтре отбора [в запросе] для выборки данных по текущей записи. Например, вывод платежей текущего клиента.
Функция IIF.
Эта функция возвращает одно из двух значений в зависимости от условия. Синтаксис следующий:
`IIF(логическое выражение, значение1, значение2)`
Если условие истинно, то возвращается первое значение, в противном случае второе. В отличие от других функций, у которых перед вызовом вычисляются все аргументы, у функции IIF вычисляет только один аргумент: второй или третий в зависимости от условия. Это позволяет разветвлять вычисления и использовать переменные не опасаясь коллизий. Разберем простой пример:
`IIF(varexists('my')=1, setvar('my', getvar('my') + 1), setvar('my', 0))`
В этом примере переменная увеличивается на единицу, если она существует, в противном случае переменная создается со значением 0. Если бы вычислялись все аргументы перед вызовом функции, то она всегда возвращала бы 0 (результат вычисления 3 аргумента). Но и этого бы не произошло, т. к. возникнет ошибка: "Переменная my не найдена".
Функция NULL.
В базах данных есть особое значение поля NULL. Это значит, что значение поля не определено. Любые операции (кроме сравнения) с NULL дают в результате тоже NULL. При вводе данных в форму, пустые поля содержат значение NULL. Эта функция нужна для сравнения с этими значениями.
Функции NZ, IFE, IFZ.
Эти функции являются сокращенным вариантов функции IIF.
NZ(значение1, значение2) - возвращает значение2, если значение1=NULL, в противном случае значение1.
IFE(значение1, значение2) - возвращает значение2, если значение1='', в противном случае значение1.
IFZ(значение1, значение2) - возвращает значение2, если значение1=0, в противном случае значение1.
Функции USER, ROLE.
Эти функции возвращают соотвественно имя вошедшего пользователя и его роль. Не имеют параметров. В основном используются в условиях отбора записей при настройке ролей.
Функция RECNO.
Функция возвращает номер текущей записи формы (родительской или подчиненной) или запроса. Синтаксис следующий:
`RECNO('имя формы или запроса')`
В основном используется в вычисляемых полях при печати табличных данных.
Функция BLOCK.
Функция имеет следующий синтаксис:
`BLOCK(значение1, значение2, ..., значениеN)`
Эта функция используется для выполнения последовательности вычислений. Всегда возвращает значение последнего аргумента. Например, в первых аргументах можно выполнить присваивание переменным.