
- •6. Разработка приложений
- •7. Работа с базами данных
- •7.8. Добавление записей
- •7.9. Удаление записей
- •8. Работа с запросами sql
- •Visual query builder (vqb)
- •9. Отчеты
- •Procedure NewPage;
- •Procedure Preview;
- •Property Enabled: Boolean;
- •Property ForceNewPage: Boolean;
- •Property BeforePrint: tqrBeforePrintEvent;
- •Property Data : tqrSysData Type;
- •Property DataSet: tDataSet;
- •Property Bands : tqrSubDetailGroupBands;
- •Property HasHeader : Boolean; property HasFooter: Boolean;
Property Enabled: Boolean;
указывает, печатается в отчете (True) или нет (False) информация, содержащаяся в компоненте TQRBand.
Свойство
Property ForceNewPage: Boolean;
указывает, должна ли информация в составе TQRBand всегда печататься с новой страницы (True) или нет (False).
Событие
Property BeforePrint: tqrBeforePrintEvent;
наступает перед печатью информации, размещенной в области компонента TQRBand.
9.2. Создание простейшего отчета
Компоненты TQuickRep и TQRBand являются минимально достаточными для создания простого отчета, не содержащего внутри себя группировок информации. Пусть имеется таблица БД Rashod.DB, содержащая сведения об отпуске материалов со склада. В состав таблицы входят поля
• N_RASH - уникальный номер события отпуска товара;
• OrderNO - номер накладной
• DEN - номер дня;
• MES - номер месяца;
• GOD - номер года;
• TOVAR - наименование отпущенного товара;
• POKUP - наименование покупателя;
• KOLVO - количество единиц отпущенного товара;
• CENA - цена.
Заметим, что дата отпуска товара хранится в разбивке на день, год и месяц. Сделано так специально, с целью показать, как в отчетах используются выражения и вычисляемые поля.
Пример. Простейший отчет, состоящий из заголовка и сведений об отпуске
товара.
В отчет включаются все факты отпуска товара. Сортировка производится по номеру события отпуска товара.
Создайте новое приложение.
Разместите в форме компонент ТТаЫе.
Установите свойство TableName в Rashod.DB
откройте таблицу (Active = True).
Разместите в форме компонент TQuickRep.
Установите свойство DataSet отчета в значение Tablei, назначив таким образом отчету НД, записи из которого будут выводиться в отчет.
Добавьте в отчет компонент TQRBand. Свойство BandType компонента QRBand.1 по умолчанию установлено в значение rbTille, то есть компонент QRBandi определяет заголовок отчета.
Разместите в пространстве отчета, занимаемом компонентом QRBand1, компонент TQRLabel (статический текст).
Установите свойство Caption этого компонента в значение «Отпуск товаров со склада»
Установите в свойстве Font жирный наклонный шрифт высотой 16 пунктов. Вид отчета показан на рис. 9.4.
Разместите в отчете данные, соответствующие текущей записи таблицы Rashod. Для этого поместите в отчет новый компонент TQRBand.
Установите свойство BandType в значение rbDetail.
Разместите в группе шесть компонентов TQRDBText.
Свяжете их соответственно с полями НД - N_RASH, TOVAR, KOLVO, DEN, MES, GOD. Для этого в свойство DataSet каждого компонента QRDBText установим значение Table1, а в свойство DataField -значение имени соответствующего поля. Вид отчета показан на рис.9.5.
Для просмотра получившегося отчета щелкнем по нему правой кнопкой мыши и из всплывающего меню выберем элемент Preview. Получим окно предварительного просмотра отчета (рис. 9.6).
Использование компонента TQRExpr для определения выражений
Из рис.9.6. видно, что в простейшем отчете выводится дата, составленная из трех полей - DEN, MES, GOD. Объединим значения из этих трех полей в одно значение, являющееся результатом вычисления выражения. Выражение в отчетах формируется при помощи компонента TQRExpr.
Пример. Использование в отчетах вычислений.
Удалите из компонента QRBand1 компоненты QRDBText4 ... QRDBText6, связанные с полями DEN, MES, GOD.
Разместите в отчете компонент TQRExpr.
Для того чтобы войти в редактор формул данного компонента, выберите в инспекторе объектов свойство Expression и нажмем кнопку в поле данных этого свойства. Появится окно редактора формул - или, если дословно переводить Expression builder, построителя выражений (рис. 9.7).
Группа Constant позволяет включить в выражение константы, при этом комбинированный список предназначен для выбора типа константы – числовая (Numeric) или строковая (String). Группа Function позволяет включить в выражение функцию, при этом выпадающий список Category определяет категорию функции (по умолчанию показываются все функции, значение АН). Группа DataField позволяет включить в выражение поля набора данных, причем список DataSet определяет НД, а в списке Fields перечисляются поля текущего НД.
В каждой из указанных групп присутствует кнопка Add. Она позволяет добавить константу, функцию или поле непосредственно в текст выражения (самая нижняя группа без названия).
Выберите в списке Available functions функцию STR, она преобразует числовое значение в строковое, и нажмите кнопку Add в группе функций. Над текстом выражения появится надпись Str(<Expr>.
Поскольку функция имеет параметр, редактор формул перейдет в режим ввода параметра. Выберите в группе Data Field в окне DataSet набор данных Tablei и в списке полей - DEN
Нажмите кнопку Add и затем Ок. В поле формулы будет сформирована часть формула STR(TablelDEN).
На панели Operators нажмите кнопку '+'. В группе констант установите тип строковой константы (String) и введите точку, после чего нажмем кнопку Add (рис. 9.8).
Аналогичным образом введите другие части формулы, чтобы она в конечном виде была такой:
STR (TableLDEN) + '.' + STR (Table 1.MES) + 7 + STR (TableLGOD)
Затем нажмите кнопку Ок и выйдите в инспектор объектов.
Установите в свойство AutoSize компонента QRExpii значение False
Измените размеры компонента QRExpr1 так, чтобы он занимал примерно 10 символов.
Установите выравнивание вправо (свойство Alignment = taRightJustify).
Запустите режим предварительного просмотра содержимого отчета (рис. 9.9). Как видим, дата отпуска товара приобрела более привычный вид.
Использование TQRBand для представления заголовков столбцов
Компонент TQRBand, у которого в свойство BandType установлено значение rbColumnHeader, используется для представления заголовков столбцов. Заголовки столбцов определяются при помощи компонентов TQRLabel.
Пример. Использование в отчетах заголовка столбцов.
В отчете, рассмотренном в предыдущих примерах, разместите компонент TQRBand и установите его свойство BandType в значение rb ColumnHeader.
Разместите в пространстве отчета, определяемом QRBand3, четыре компонента TQRLabel
Установите в свойства Caption этих компонентов соответственно компонентов установим режим подчеркивания шрифта, а сам шрифт определим как наклонный.
Выйдете в окно предварительного просмотра отчета. Для каждой страницы отчета вверху страницы будут выводиться названия столбцов (рис. 9.10).
Использование TQRBand для показа заголовка и подвала страницы
Компонент TQRBand, у которого в свойство BandType установлено значение rbPageHeader, используется для показа заголовка страницы. Он выводится для каждой новой страницы перед выводом другой информации. Компонент TQRBand, у которого в свойство BandType установлено значение rbPageFooter, используется для показа подвала страницы. Он выводится для каждой страницы после вывода любой иной информации.
Информация в заголовке и подвале страницы может формироваться на основе статического текста (компоненты TQRLabel), значений полей (компоненты TQRDBText) и результатов вычисления выражений (компоненты TQRExpr).
Пример. Использование в отчетах заголовка и подвала страниц.
В отчете, рассмотренном в предыдущих примерах, разместите компонент TQRBand (имя QRBand4) и установите в его свойство BandType значение rbPageHeader.
Не будем размещать в заголовке страницы никакого текста, просто отчеркнем линию вверху страницы. Для этого установите в свойство компонента заголовка страницы Frame.DrawTop значение True, что обеспечивает вывод линии по верхнему краю области, занимаемой компонентом.
Аналогичным образом определите в отчете компонент подвала страницы (имя QRBand5) и установите в его свойство Frame.DrawBottom значение True, что обеспечивает вывод линии по нижнему краю области, занимаемой компонентом.
Войдите в режим предварительного просмотра отчета. Вверху и внизу каждой страницы отчета выводятся линии.
Использование компонента TQRSysData для показа вспомогательной и системной информации
Компонент TQRSysData используется для показа вспомогательной и системной информации. Вид показываемой информации определяется свойством