Шаг 24 - Проходы отчета и вычисление формул

На результаты вычислений по формулам большое влияние оказывает их место в отчете. Если нужна обработка каждой записи, формула должна находится в области подробностей (Details). Если нужна обработка промежуточных итогов, формула должна находится в колонтитуле группы, и т. д.

Однако расположение формулы в "правильном месте" само по себе не гарантирует правильность вычислений, особенно если в формуле используются переменные. Чтобы понять, давайте посмотрим последовательность формирования отчета.

Отчет формируется за три прохода. В документации Crystal Reports они называются evaluation time (время выполнения):

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

Для явного указания прохода, на котором должна вычисляться формула, в Crystal Reports имеет специальные функции. В окне формул Редактора формул они объединены в группу Evaluation time.

Пример:

WhilePrintingRecords;
CurrencyVar BonusTotal:=BonusTotal+{Orders.Bonus}

И напоследок, хоть и немного не по теме шага.

В Crystal Reports имеется группа функций Additional Functions. Эти функции экспортируются из внешних DLL (URL, User Function Library). И если вам нужна какая-то особая функция, вы можете ее написать и добавить к этой категории. Правда писать ее придется на каком-либо другом языке, поддерживающем создание DLL (например VC++).


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