Извештај со два нивоа на податоци (Мајстор-Детал)
Извештај со два нивоа на податоци (Мајстор-Детал)
Досега нашите примерни извештаи користеле само една група на податоци (“Прво ниво на податоци” или ”МајсторПодатоци”) за контрола на излезот на податоците. Ова беше доволно за излезот на податоци од една база на податоци. Пантheon исто така дозволува извештаи да се дизајнираат со до шест нивоа на податоци, сите на една страница за дизајн. Понатаму, неограничен број на нивоа на податоци во извештаите може да се постигне со користење на објектот “Подизвештај” - овој објект ќе биде опфатен подоцна. Повеќето извештаи генерално потребуваат само едно, две или три нивоа на податоци, поголемиот број на нивоа на податоци е редок.
Да видиме како да дизајнираме извештај со две нивоа на податоци. Извештајот ќе излезе податоци од табелите: “tHE_SetSubj” и “tHE_Order”. Првата табела е список на предмети и втората е список на нарачки направени од тие предмети (клиенти).
Втората табела содржи список на сите нарачки направени од сите клиенти. За да ги видите нарачките од tHE_Order табелата кои се направени од еден клиент во табелата Клиенти, двете табели се поврзани на полето “acSubject” од клиентите и полето "acConsignee" од табелата за нарачки.
Да го дизајнираме извештајот. Создајте нов извештај и поставете два компоненти “TfrxDlDBTable” на формата. Поставете ги својствата на компонентите како што е прикажано тука:
Табела1:
Име на табела = 'tHE_SetSubj'
Корисничко име = 'Предмети'
Табела2:
Име на табела = 'tHE_Order'
Корисничко име = 'Нарачки'
Сега додадете “МајсторПодатоци” и “ДеталПодатоци” група на страницата:

Забележете дека групата “МајсторПодатоци” мора да биде поставена над групата “ДеталПодатоци”! Повлечете ја таму ако е потребно. Ако Мајсторот е поставен под Деталот, Пантheon ќе генерира порака за грешка кога ќе го прегледате извештајот.
Ако го прегледавте извештајот сега, ќе видите дека списокот на нарачки останува ист за секој клиент и содржи сите записи од табелата “Нарачки”. Во кодот на извештајот додадете две линии како што можете да видите и на сликата

Сега имаме поставено 'Мајстор-Детал' релација и врска помеѓу полињата во двете извори.
Кога се создава прегледот, FastReport прави следново. Откако ќе се излезе запис од главната табела (Клиент), се поставува филтер на деталната табела (Нарачки). Само оние записи кои ги исполнуваат условот 'Нарачки.acConsignee = Предмети.acSubject' ќе останат во табелата. Ова значи дека за секој клиент само оние нарачки кои припаѓаат на тековниот клиент ќе бидат прикажани во деталната група. Ова е важен концепт за разбирање. Иако групите на податоци можат да бидат од типот мајстор или детал, тие само контролираат позиционирањето на податоците на излезната страница (нарачка и број на пати прикажани). Податоците прикажани од објектите во групите зависат од тоа на кои полиња објектите се поврзани и од надворешното поврзување на двете табели.
Ова е конечниот излез:

Извештаи кои можат да содржат до 6 нивоа на податоци можат да се конструираат на сличен начин.
Во многу случаи релацијата Мајстор-Детал е поставена во програмскиот код.
Да погледнеме пример на извештајот '3C0 - Извештај за управување со патувања' кој е во програмското мени 'Персонал | Управување со патувања | Извештаи' .
Во извештајот главната табела е 'главна' табела на патувања, деталната табела е табелата со позиции на патувањето. Во овој случај имаме и едно ниво повеќе (подетална табела) а тоа се трошоците на позицијата на патувањето.

Во овој извештај имаме и две групи со својството "RowCount" поставено на вредност 1 и подизвештаи кои ќе ги сретнеме подоцна.