Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
DDD.doc
Скачиваний:
2
Добавлен:
14.11.2019
Размер:
25.86 Mб
Скачать

Property Data : tqrSysData Type;

Ниже указаны возможные значения этого свойства.

  • qrsColumnNo - номер текущей колонки отчета (для одноколоночного отчета всегда 1).

  • qrsDate - текущая дата.

  • qrsDateTime - текущие дата и время.

  • qrsDetailCount - число записей в НД; при использовании нескольких НД - число записей в master-наборе. Для случая, когда НД представлен компонентом TQuery, эта возможность может быть недоступной, что связано с характером работы компонента TQuery, который возвращает столько записей, сколько необходимо для использования в текущий момент, а остальные предоставляет по мере надобности;

  • qrsDetaiINo - номер текущей записи в НД. При наличии нескольких наборов - номер текущей записи в master-наборе.

  • qrsPageNumber - номер текущей страницы отчета.

  • qrsPageCount - общее число страниц отчета.

  • qrsReportTitie - заголовок отчета.

  • qrsTime - текущее время.

  • Пример. Использование в отчете вспомогательной и системной информации.

    1. Разместите в компоненте подвала отчета QRBand5 два компонента TQRSysData (имена QRSysDatai ... QRSysData2).

    2. В свойство Data первого из них установите значение qrsPageNumber (номер текущей страницы отчета), второго - значение qrsDate (текущая дата).

    3. Введите в свойство Text элемента QRSysDatai текст «Стр.»

    4. Войдите в режим предварительного просмотра результатов отчета. Теперь в подвале каждой страницы отчета выводятся номер страницы и текущая дата (рис. 9.11).

9.3. Группировки данных в отчете

Выше мы рассмотрели отчет, в котором информация об отпуске товар из Таблицы Rashod.DB со склада выводилась "как есть". Такое представление информации в отчете не всегда информативно. Пусть, например, в нашем случае требуется сгруппировать информацию по товарам.

Для группировки информации используется компонент TQRGroup. Его свойство Expression указывает выражение. В группу входят записи НД, удовлетворяющие условию выражения. При смене значения выражения происходит смена группы. Для каждой группы, если определены, выводятся заголовок группы и подвал группы. В качестве заголовка группы служит компонент TQRBand со значением свойства BandType, равным rbColumnHeader. В качестве подвала группы служит компонент TQRBand со значением свойства BandType, равным rhGroupFooter. Свойство FooterBand компонента TQRGroup содержит ссылку на компонент подвала группы.

В заголовке группы, как правило, выводится выражение, по которому происходит группировка, и различные заголовки, если они нужны. В подвале группы обычно выводится агрегированная информация - суммарные, средние и т.п. значения по группе. В качестве заголовка может использоваться и сам компонент TQRGroup.

Примечание. Чтобы группировка в отчете производилась правильно, необходимо чтобы данные по полям группировки были отсортированы или проиндексированы.

  • Пример. Использование группировки в отчете.

Построим отчет о расходе товара со склада, в котором информация группируется по наименованию товара.

  1. Установите у элемента Tablei текущий индекс по полю Tovar (в свойстве FieldlndexNames или IndexName).

  2. Измените надпись для заголовка отчета QRLabeH на строку «Расход товара со склада».

  3. Удалите элемент QRBand4, который является заголовок страницы Page Header.

  4. Удалите элемент QRLabel2 с надписью «№№».

  5. Измените свойство Caption элемента QRLabel3 с «Товар» на «Покупатель».

  6. Удалите все элементы TQRText из области Detail.

  7. Удалите все элементы TQRSysData из области PageFooter.

  8. Измените свойство BandType в rbGroupFooter.

  9. Разместите в отчете:

    • группу - компонент TQRGroup с именем QRGroupi;

  10. В компоненте QRGroupi установим:

  • в свойство FooterBand значение QRBand5;

  • в свойство Expression значение Tablel.TOVAR, которое является формулой и строится в редакторе формул.

  1. Поместите компонент TQRText в область GroupHeader и свяжите его с полем Tovar.

  2. Поместите два компонента TQRText в область Detail.

  3. Настройте первый из них на поле POKUP, второй - KOLVO.

  4. В компоненте подвала группы QRBand5 будем подсчитывать сумму по полю Kolvo (сумму отпущенного конкретного товара). Для этого разместите в подвале группы компонент TQRExr и определите значение его свойства Expression так, чтобы оно содержало формулу SUM(TablelKOLVO).

  5. В том же разделе разместите компонент TQRLabel с надписью «Итого по товару» (Рис.9.12).

  6. Запустите режим предварительного просмотра (Рис. 9.13)

Множественная группировка данных в отчете

Часто внутри группы должны содержаться другие группы, например, по названию товара и внутри каждой группы - по покупателям. В этом случае внутри одной группы определяют другую группу посредством дополнительных компонентов TQRGroup.

  • Пример. Отчет с множественной группировкой.

Пусть требуется представить в отчете сведения о расходе товаров со склада, группируя данные по товарам, а внутри группы - по покупателям.

  1. Установите текущий индекс в элементе Table1 по полям Tovar, Pokup.

  2. Добавьте в отчет еще один компонент TQRGroup.

  3. Установите свойство Master в Table1, а свойство Expression в Table1.POKUP.

  4. Перенесите элемент POKUP в QRGroup2. Для этого выделите элемент POKUP и вырежьте его в карман (CTRL+X). Перейдите в QRGroup2 м вставьте из кармана (CTRL+V).

  5. Выделите QRGroup2 и в свойстве Frame. DrawTop установите True.

  6. Выделите GroupFooter и в свойстве Frame.Width в 2.

  7. Выделите QRGroup1 и в свойстве Color установите cISilver.

  1. Установите свойство Transparent элемента QRText4 (TOVAR) в True.

  2. О бщий вид отчета приводится на рис. 9.14.

Построение отчета на основе нескольких наборов данных, связанных в приложении как Master - Detail

Если необходимо выдавать отчет на основе более чем одной таблицей, можно поступить двумя способами:

  1. В рамках компонента TQuery произвести соединение данных из нескольких таблиц БД в один НД, после чего определить в отчете нужные группировки;

  2. Создать в приложении по одному НД на каждую таблицу БД, соединить эти наборы между собой связью Master-Detail (используя свойства MasterSource, MasterFields набора данных) и применить в отчете компонент (или несколько компонентов) TQRSubDetail для вывода информации из подчиненного (Detail). НД (или группы подчиненных НД) для вывода информации из основного (Master) НД, как и в обычных отчетах, применяется компонент TQRBand, у которого в свойстве BandType установлено значение rbDetail.

Построение отчета для первого случая осуществляется аналогично тому, как это описано выше. Построение отчета для второго случая имеет некоторые отличительные особенности.

Рассмотрим второй способ.

Компонент TQRSubDetail предназначен для показа информации в отчете подчиненного НД. Его свойство

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]