На этом шаге мы рассмотрим компонентTQRExpr.
С помощью компонента TQRExpr в отчет включаются данные, получаемые на основе обычных или условных выражений, составленных из значений полей, математических, статических и другого рода функций, а также нескольких системных переменных. Выражение в компоненте TQRExpr формируется с помощью специального мастера создания выражений, который вызывается в окне инспектора объектов щелчком на кнопке с многоточием в строке свойства Expression этого компонента:
Рис.1. Окно мастера создания выражений
В поле Enter expression можно ввести вручную или составить с помощью мастера выражение, которое вычисляется в момент генерации отчета и помещается на место, занимаемое компонентом TQRExpr.
С помощью кнопок раздела Insert at cursor position можно вставить на место, занимаемое курсором в поле Enter expression, имя поля данных (кнопка Database field), одну из более чем 20 функций (кнопка Function), одну из 7 системных переменных (кнопка Variable), знак математической, логической операции или операции отношения.
Кнопка Function заставит мастера сформировать обращение к одной из встроенных функций и вставить возвращаемый ею результат на место курсора в поле Enter expression. Доступные в мастере встроенные функции разбиты по функциональному назначению на несколько групп и перечислены в таблице 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.