Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
OOP / BorlandC++Builder1.doc
Скачиваний:
76
Добавлен:
20.02.2016
Размер:
1.68 Mб
Скачать

Создание отчетов "master-detail"

Преобразуем созданный отчет в отчет "master-detail". Для этого следует добавить компонент TTable, установить его свойство DatabaseName равным BCDEMOS, свойство TableName равным ORDERS.DB, а затем установить свойство Active равным true. После этого установим свойство MasterSource равным DataSource1. Затем выберем свойство MasterFields, вызвав диалоговую панель для установки связи master/detail (рис. 4 ) и из списка доступных индексов выберем CustNo. Затем выделим имя поля CustNo в обоих списках полей и нажмем кнопку Add, а кнопку OK.

Рис. 4. Установка связи master/detail

Добавим на форму компонент TDataSource, установив его свойство DataSet равным Table2 . Затем добавим к форме новый компонент TQRBand (c именем QRBand6). После этого добавим компонент TQRDetailLink, предназначенный для установки связей между источниками данных в отчетах, и установим его свойство DataSource равным DataSource2. Затем установим его свойство Master равным QuickReport, а свойство DetailBand равным QRBand6. Свойство BandType компонента QRBand6 автоматически примет значение rbSubDetail.

Наконец, поместим два компонента TQRDBText на QRBand6, установим их свойства DataSource равными DataSource2, а свойства DataField равными OrderNo и AmountPaid. Слева от них поместим два компонента TQRLabel с названиями этих полей (рис. 5).

Рис. 5. Форма отчета "master-detail".

  1. Выберем опцию Preview Report из контекстного меню компонента QuickReport для предварительного просмотра отчета (рис.6).

Рис. 6. Отчет "master-detail".

Отметим, что если компонент QuickReport не связан с компонентом DataSource, то при печати отчета выводится только одна запись из набора данных, что легко позволяет печатать текущую запись.

Отображение графических и мемо-полей в отчетах

QuickReport позволяет создавать отчеты с использованием любых типов данных. Если вместо определения DataSource создать обработчик события OnNeedData, можно с помощью QuickReport напечатать любые данные, меняя свойства компонентов TQRLabel, что во многих случаях используется для печати произвольной информации (иногда не имеющей отношения к базам данных).

QuickReport не имеет собственного компонента для отображения графических полей. Вместо этого можно использовать стандартные компоненты Timage или TDBImage (рис. 7).

Рис. 7. Использование TDBImage для отображения графических полей

Следует отметить, что графические поля баз данных может печатать далеко не всякий профессиональный генератор отчетов. Например, ReportSmith, входивший в комплект поставки ряда продуктов Borland, может печатать графические изображения, не имеющие непосредственного отношения к данным (например, взятые из файлов формата *.bmp), но отнюдь не графические поля таблиц.

Для отображения мемо-полей можно использовать компонент TQRDBText. Если содержимое мемо-поля, отображаемого с помощью этого компонента, не умещается в одну строку, высота этого компонента (и высота содержащего его компонента TQRBand) в режиме предварительного просмотра и при печати отчета увеличивается таким образом, чтобы внутри компонента TQRDBText уместилось все содержимое memo-поля. Чтобы избежать наложения получившегося текста на другие элементы отчета при его печати, можно просто размещать компоненты TQRDBText, отображающие memo-поля, в нижней части TQRBand (рис 7).

Рис. 7. В левой нижней части данного отчета компонент TQRDBText отображает memo-поле

Рис. 8. А вот так выглядят memo-поля в отчете

Если таких memo-полей несколько и они должны быть размещены друг под другом, можно использовать несколько компонентов TQRBand одного типа для одной записи. В этом случае печататься они будут в порядке их создания.

Соседние файлы в папке OOP