Bisher haben wir nur Reporte betrachtet, die nur ein Band "MasterData" (Daten 1. Ebene) enthielten. Dies erlaubte die Daten einer DB-Tabelle darzustellen. FastReport erlaubt jedoch die Darstellung von bis zu 6. Ebenen der Daten (es geht auch mehr indem man das Objekt "Unterreport", dazu jedoch später mehr). In der Regel sind Reporte auf 1-3 Ebenen beschränkt, selten mehr.
Betrachten wir die Erstellung eines 2. Ebenen Reports. Dieser soll die Daten der Tabellen Kunden und Aufträge enthalten. Die erste Tabelle enthält die Kundenliste, die zweite die Bestellungen der Kunden. Die Tabellen sehen wie folgt aus:
Kunden:
Kund.-Nr.Company
1221Kauai Dive Shoppe
1231Unisco
1351Sight Diver
Bestellungen:
Bestellnr.Kund.-Nr.Verkaufsdatum
1003135112.04.1988
1023122101.07.1988
1052135106.01.1989
1055135104.02.1989
1060123128.02.1989
1123122124.08.1993
Wie man sieht, enthält die zweite Tabelle die gesamte Liste aller Bestellungen, von allen Unternehmen. Um eine Liste mit Bestellungen zu erhalten, die nur ein Unternehmen gemacht hat, muss man aus der ersten Tabelle die gewünschte Kund.-Nr. auswählen. Der Report sieht nun wie folgt aus:
1221Kauai Dive Shoppe
1023 01.07.1988
1123 24.08.1993
1231Unisco
1060 28.02.1989
1351Sight Diver
1003 12.04.1988
1052 06.01.1989
1055 04.02.1989
Im Designer des Reports verknüpfen wir die Datenquellen im Fenster "Report|Daten..." und legen zwei Bänder auf die Seite "MasteData" ("Daten 1. Ebenen") und "DetailData" "Daten 2. Ebene":
Beachten Sie das Band "MasterData" dieser muss oben liegen! Wenn man ihn unter das Band "Daten 2. Ebene" setzt, wird FastReport dies beim Start des Reports melden.
Wenn wir den Report nun starten, sehen wir das die Bestellliste für jeden Kunden gleich ist und alle Einträge der Liste Bestellungen enthalten. Dies geschieht, weil wir den Listenfilter in der Tabelle Bestellungen eingestellt haben. Bei der Komponente Table2 stellen wir die Eigenschaft MasterSource = DataSource1 ein, dadurch stellen wir die Verbindung "master-detail" her. Jetzt muss man die Bedingung des Filters festlegen. Hierfür rufen Sie den Editor der Eigenschaft MasterFields der Komponente Table2 auf:
Wir müssen die beiden Felder CustNo der beiden Quellen verknüpfen. Wählen Sie die beiden(?) in der Liste oben aus und klicken Sie auf "Add". Die verknüpften Felder erscheinen im unteren Fenster. Sie können das Fenster jetzt schließen indem Sie auf OK klicken.
Beim Start des Reports macht FastReport folgendes. Nach Auswahl eines Datensatzes aus der Master-Tabelle (Kunde), filtert es die Detail-Tabelle (Orders). Danach werden nur Datensätze angezeigt, die die Bedingung Orders.CustNo = Customer.CustNo erfüllen (sprich für jeden Kunden werden nur seine Bestellungen angezeigt):
Auf diese Weise kann man Reporte mit bis zu 6. Datenebenen anlegen.