Инструменты пользователя

Инструменты сайта


Боковая панель

Если вам не пришло письмо с регистрационными данными, проверьте папку «Спам»

Новости:

02 ноября
* Новая версия DataExpress



Обратная связь

Wiki-синтаксис
Как написать хорошую статью
Полигон

rukovodstvo_po_polzovaniu_dx:vyrazhenija:vyrazhenija

Содержание

8. Выражения

При вводе данных могут проиходить какие-то вычисления. Например вы вводите цену и количество товара, а программа автоматически вычисляет сумму. Это чем-то похоже на вычисления в Excel, когда изменения в ячейках тут же заставляют пересчитаться формулы. Вычисления реализуются при помощи выражений. У полей есть свойство Выражение, которое открывает редактор выражений, в котором, собственно, выражение и составляется.

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

Поле, в котором есть выражение, невозможно изменить вручную, причем не важно есть ли реальные вычисления или там просто комментарии. Такой прием можно использовать, чтобы просто запретить редактирование в поле, не выполняя каких-либо реальных вычислений. Если все-таки есть необходимость редактировать поле с выражением, отметьте свойство поля Разрешить редактирование.

Выражение состоит из:

Полей

Названия полей формы, заключены в квадратные скобки:

[Номер], [дата], [Название]

Если поле является объектом, то запись такая:

 [Объект|поле объекта]. Например, [Сотрудник|ФИО], [Товар|Единица измерения|Название]

Можно обратиться к полю родительской формы. Для этого перед названием поставьте восклицательный знак:

[!Статус]

Регистр букв в названии не имеет значения.

Функций

Функции выполняют какое-либо действие и возвращают результат. Аргументы функции записываются в скобках и разделяются запятой. Если функция не имеет аргументов, то скобки можно не писать. Примеры:

ToWords([сумма]), LENGTH([Название]), cstr([цена]), date, period([Начальная дата], [начальное время], [Конечная дата], [конеЧное ВРемя])

Чисел

Дробная часть отделяется точкой.

Текста

Текст заключается в одинарные или двойные кавычки. Например:

"Закрыто", 'В наличии'

Знаков операций

Арифметические операции:

+ - * /

Операции сравнения:

= <> < <= > >=

Логические операции:

 & (логическое И) | (логическое ИЛИ) ! (логическое НЕ)

Унарные операции

Все операции являются бинарными, кроме логической операции НЕ. Примеры:

!([Статус]='Выполнено' | [Статус]='В работе').

Минус тоже может быть унарной операцией:

-45, -[цена]

Приоритет знаков операций

Приоритет означает какая операция будет выполнена в первую очередь. Наивысший приоритет у выражений в скобках, затем функции, в порядке убывания: умножение/деление, сложение/вычитание, сравнение, логические.

Совместимость типов

Каждый операнд - текст, число, поле, результат функции, аргумент - имеет тип. Не допускается в операции использовать операнды разных типов. Например, «343» + 23 недопустимо, а так можно: cnum(«343») + 23. Т. е. в таких случаях нужно выполнять преобразование типов. Это выполняется с помощью функций cnum, cstr, cdate, ctime.

Примеры выражений:

[цена] * [количество]
SUM('услуги', 'сумма') * 1.15
RurToWords([сумма])
IIF([дата]<>Null, [дата], 'дата не указана')
YearsBetween(date, cdate('12.10.2008'))

Ошибки в выражении:

Несовместимость типов.

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

Некорректная операция со строками.

Допускается складывать строки операцией сложения, а также сравнивать. Остальные операции недопустимы.

Некорректная операция с числами.

Допускаются все операции, кроме & и |.

Некорректная операция с датой или временем.

Даты и время допускается только сравнивать. Складывать и вычитать можно при помощи функций.

Некорректная булева операция.

Для логического типа допустимы операции: = <> & | !.

Деление на нуль.

Попытка деления на нуль.

Некорректное число.

Число записано некорректно. Например: 34..234 или 23.432.34.

Ожидается аргумент.

При записи функции пропущен аргумент. Например:

sum (‘услуги’, )

Ожидается конец строки.

При записи строки пропущена кавычка.

Ожидается квадратная скобка.

При записи поля пропущена закрывающая квадратная скобка.

Ожидается скобка.

При записи выражения пропущена закрывающая скобка.

Ожидается операция.

Пропущен знак операции.

Ожидается операнд.

Пропущен операнд (текст, поле и пр.).

Функция не найдена.

Ошибка в названии функции.

Неверное количество аргументов.

При вызове функции было указано большее, либо меньшее количество аргументов.

Несовместимый тип аргумента.

Тип введенного аргумента и требуемый тип не совпадают. Проверьте, аргументы какого типа нужно передавать функции.

Пропущена запятая.

При записи аргументов функции была пропущена запятая.

Не указано имя поля.

Имя поля не указано, например:

[] + 3

Поле не найдено.

Указанное поле не найдено. Проверьте правильность имени поля.

Неизвестный источник списка.

Попытка обратиться к полю объекта, для которого не указан источник списка.

Поле не является объектом.

Например, выражение

[Дата|Название]

даст такую ошибку, т. к. поле Дата не является объектом.

Комментарии в выражениях.

Комментарии используются для пояснения действий выражения. Однострочные комментарии начинаются символами //, многострочные парой /* … */.

rukovodstvo_po_polzovaniu_dx/vyrazhenija/vyrazhenija.txt · Последние изменения: 2018/03/30 19:56 — jurist23rus