Шаг 11.
Вкладка QReport. Компонент TQRExpr

    На этом шаге мы рассмотрим компонентTQRExpr.

    С помощью компонента TQRExpr в отчет включаются данные, получаемые на основе обычных или условных выражений, составленных из значений полей, математических, статических и другого рода функций, а также нескольких системных переменных. Выражение в компоненте TQRExpr формируется с помощью специального мастера создания выражений, который вызывается в окне инспектора объектов щелчком на кнопке с многоточием в строке свойства Expression этого компонента:


Рис.1. Окно мастера создания выражений

    В поле Enter expression можно ввести вручную или составить с помощью мастера выражение, которое вычисляется в момент генерации отчета и помещается на место, занимаемое компонентом TQRExpr.

    С помощью кнопок раздела Insert at cursor position можно вставить на место, занимаемое курсором в поле Enter expression, имя поля данных (кнопка Database field), одну из более чем 20 функций (кнопка Function), одну из 7 системных переменных (кнопка Variable), знак математической, логической операции или операции отношения.


    Замечание. Важно помнить, что для правильной работы компонента TQRExpr его нужно размещать только на полосе TQRBand типа rbDelail или полосе TQRSubDetail, так как фактически он заменяет собой вычисляемое поле НД.

    Кнопка Function заставит мастера сформировать обращение к одной из встроенных функций и вставить возвращаемый ею результат на место курсора в поле Enter expression. Доступные в мастере встроенные функции разбиты по функциональному назначению на несколько групп и перечислены в таблице 1.

Таблица 1. Встроенные функции мастера создания выражений
Функция Описание
Группа Date & time
DATE
TIME

Возвращает строку текущей даты
Возвращает строку текущего времени
Группа Math & trig
INT ( X )
FRAC ( X )
SQRT ( X )
DIV ( X , Y )

Возвращает целую часть аргумента
Возвращает дробную часть аргумента
Возвращает корень квадратный из аргумента
Возвращает результат деления X на Y
Группа Statistical
SUM ( X )
COUNT
MAX ( X )
MIN ( X )
AVERAGE ( X )

Возвращает сумму аргумента
Возвращает количество итераций
Возвращает максимальное значение аргумента
Возвращение минимальное значение аргумента
Возвращает среднее значение аргумента
Группа Logical
IF( Exp , X , Y )
TRUE
FALSE

Если условие Exp истинно, возвращает X, в противном случае - Y
Возвращает значение True
Возвращает значение False
Группа Information
TYPEOF ( Exp )

Возвращает тип данных для выражения Exp
Группа Other
SRT ( X )
UPPER ( X )
LOWER ( X )
PRETTY ( X )
COPY ( S , ST , LEN)
FORMATNUMERIC ( F , N )

Возвращает строковое представление аргумента
Преобразует буквы строки X к прописным
Преобразует буквы строки X к строчным
Делает первую букву строки X прописной, остальные – строчными
Копирует не более LEN символов строки S в строку ST
Форматирует число N в соответствии со строкой формата F

    После выбора функции мастер создает дополнительное окно для формирования значений аргумента (аргументов), например такое, как показано на рисунке 2.


Рис.2. Пример окна для формирования значений аргументов

    Рядом с каждой строкой Argument N (по количеству аргументов функции) расположена кнопка, щелчок на которой открывает основное окно мастера (рис.1). Это позволяет формировать сложные обращения к функциям, аргументы которых могут содержать произвольные выражения.

    Кнопка Variable в основном окне мастера открывает доступ к одной из системных переменных:

    Приведем пример программы демонстрирующей работу компонента TQRExpr. Для этого изменим пример шага 10 "Создание простейшего отчета": объединим поля BOOK, IZDAT, AUTHOR; добавим колонку подсчета суммы по товару и подсчитаем общую сумму книг.

    Окно отчета на этапе конструирования выглядит следующим образом:


Рис.3. Окно отчета на этапе конструирования

    Для объенинения полей BOOK, IZDAT, AUTHOR разместим в отчете компонент TQRExpr1 на полосе TQRBand2 типа rbDelail. В свойстве Expression необходимо реализовать выражение:

                  BOOK + ' \ '  + IZDAT + ' \ ' + AUTHOR

    Для подсчета суммы разместим в отчете компонент TQRExpr2 на полосе TQRBand2 типа rbDelail. В свойстве Expression необходимо реализовать выражение:

                     KOLVO * PRICE

    Для подсчета общей суммы разместим в отчете компонент TQRExpr3 на полосе TQRBand2 типа rbSummary. В свойстве Expression необходимо реализовать выражение:

                     SUM ( KOLVO * PRICE )

    После выполнения программы отчет должен содержать следующее:


Рис.4. Окно предварительного просмотра отчета

    Текст этого примера можно взять здесь.

    На следующем шаге мы рассмотрим компонентTQRExprMemo.




Предыдущий шаг Содержание Следующий шаг