Шаг 23 - Некоторые особенности синтаксиса формул, часть 2

Продолжаем обсуждение темы "Шаг 20 - Некоторые особенности синтаксиса формул".

Функции даты и времени

Мы уже рассмотрели функции форматирования значений даты/времени. Однако по своей сущности, тип данных дата/время – числовой, что подразумевает некоторые арифметические операции. В Crystal Reports допустимы две таких операции:

Вычитание одной даты из другой.
Например: {Orders.PayDate}-{Orders.OrderDate}
Возвращает разницу (в днях) между датой оплаты и датой заказа.

Сложение даты с целым числом

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

Формулы If-Then-Else

Людям, мало-мальски знакомым с программированием нет смысла объяснять предназначение этой формулы. В Crystal Reports ее синтаксис таков:

If <проверка> Then <результат для true> Else <выражение для false>

Ключевое слово Else и выражение для него необязательны. Тестовая часть формулы использует операторы сравнения. Для создания сложных условий проверки можно одновременно использовать несколько операторов, объединенных булевыми операторами And, Or и Not.

If IsNull({Orders.Pay}) Then
	“Не оплачено”
Else	
	{Orders.Pay}

Для того, чтобы формула работала, необходимо привести выражения к одинаковому типу:

Так правильно:

If IsNull({Orders.Pay}) Then
	“Не оплачено”
Else	
	ToText({Orders.Pay},”#0.00”)

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

Формулы "контролирующие" поля БД

Бывает, что для каких-либо действий необходимо знать значение предыдущего или следующего поля БД. Для этого Crystal Reports содержит специальные функции Previous(fld) и Next(fld).

Пример:

If {Persons.LName}=Previous({Persons.LName}) Then
	“  -----/------ “
Else
	{Persons.LName}

Эта формула подавляет повторение фамилий в отчете.

Область действия переменных

Основная идея применения переменных заключается в сохранении информации во время обработки отчета. Бывает необходимо уточнить, как долго и где будет храниться переменная. Для этого при объявлении переменной можно указать область ее действия

Примеры:

Local NumberVar  Bonus;
Global StringVar BonusName;
Shared DateVar BonusDate;

По умолчанию, если не указано ключевое слово области действия, область действия переменной - Global.


Предыдущий Шаг | Следующий Шаг | Оглавление
Автор Юрий Гвоздев - 17.01.2003