Отчет типа «мастер/детальный» 


Мы поможем в написании ваших работ!



ЗНАЕТЕ ЛИ ВЫ?

Отчет типа «мастер/детальный»



Построим отчет «Список строек по заказчикам» из двух связанных таблиц заказчиков (мас­тер‑таблица или главная таблица) и строек (детальная или подчиненная таблица) (рис. 3.10.5.2).

1. Создадим новый проект из одной формы.

2.
 
 

Создадим вторую форму, используя шаблон для формирования отчета типа «мастер/детальный», выполнив команду File/New/Forms/Quick Report Master/Detail (рис. 3.10.5.1).

Рис. 3.10.5.1. Окно проектирования отчета QuickRep

3. Зададим свойства компоненту MasterTable (описание глав­ной таблицы): DatabaseName=«stroiki», TableName=«zakazhiki.db», Active=True, IndexFieldName=Kz (код заказчика).

4. Зададим свойства компоненту DetailTable (подчиненная
таблица): DatabaseName=«stroiki», TableName=«stroiki.db», Active=True. IndexField­Name=Kz (код заказчика), MasterSource=MasterDS, Index­FieldsName=Kz,Ns (сортировка подчиненной таблицы), MasterFields=Kz (по­ле связи таблиц).

Рис. 3.10.5.2. Окно просмотра сформированного отчета Preview

 

5. Зададим свойства компоненту QuickRep1: Band (HasColumn­Header=True, HasDetail=True, HasPageHeader=True, HasSummary=True, Has­Page­Footer=False, HasTitle=False), DataSet=MasterTable.

6. Разместим в полосе Detail компонент QRDBText для вывода поля Nz (наименование заказчика) из главной таблицы заказчиков со свойс­твами DataSet=MasterTable, DadaField=Nz. Для того чтобы не выводить наименование заказчика, если у него нет строек, составим обработчик события BeforePrint для данной полосы:

Procedure TQRMDForm.DetailBand1BeforePrint(Sender: TQRCustomBand;

var PrintBand: Boolean); Begin Printband:=DetailTable.RecordCount>0 end.

Внимание! При выполнении команды Preview, в отличие от одно­имен­ного метода, условия вывода групп отчета игнорируются.

7. Разместим в полосе Sub Detail компоненты QRExpr для вывода из подчиненной таблицы (DetailTable) строек полей Ns (наименование строй­ки), Ss (смета), Fs (освоенная сумма).

8. Для компонента QRSubDetail установим свойства: HasFooter=True, HasHeader=False (состав­но­го свойства Bands) и FooterBand=GroupFooterBand1. Появится полоса GroupFooterBand1 (подно­жие полосы QRSubDetail. На этой полосе разместим итоги (компоненты QRExpr) по текущему заказчику со свойствами: ResetAfterPrint=True, Master= QRSubDetail1.

9. На полосе Summary разместим итоги (компоненты QRExpr) по всему отчету со свойством Master= QRSubDetail1.

10. Разместим все остальные надписи и служебные поля.

11. На первой форме разместим кнопку Отчет с процедурой обра­бо­тки события OnClick (вывода отчета):

Procedure TForm1.Button1Click(Sender: TObject);

Begin QRMDForm.QuickRep1.Preview;{формирование отчета} End;

12. Выполним приложение и проверим отчет (рис. 3.10.5.2).

Составной отчет

Для физического объединения нескольких небольших отчетов в один составной отчет (например, с целью экономии бумаги) необходимо:

1. Отдельно подготовить объединяемые отчеты.

2. Разместить на форме компонент QRCompositeReport и подгото­вить для него обработчик события OnAddReport, например:

procedure TForm1.QRCompositeReport1AddReports(Sender: TObject);Begin QRCompositeReport1.Reports.Add(Form2.QuickRep1);

QRCompositeReport1.Reports.Add(Form3.QuickRep1); End;

Свойство Report содержит список отчетов, дополняемый методом Add.

3. Подготовить кнопку или пункт меню для вызова составного отчета методом Preview (QRCompositeReport1.Preview).

Отчеты будут выводиться в порядке их описания в обработчике со­бы­тия OnAddReport.



Поделиться:


Последнее изменение этой страницы: 2017-02-08; просмотров: 480; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 52.14.84.29 (0.004 с.)