Menü

Beispiel zu verschachtelten Berichten

Zurück | Ebene zurück

 

Dieses Beispiel soll die Zusammenhänge zwischen verlinkten Datenquellen und Unterberichten veranschaulichen, aber gleichzeitig natürlich auch die Zusammenhänge von Bericht und Unterbericht verdeutlichen.

Das Szenario: Wir haben ein einfaches Formular welches alle Rechnungen auflistet, und wir haben ein einfaches Formular welches alle Zahlungseingänge auflistet, unabhängig davon zu welcher Rechnung sie gehören.  Nun wollen wir die Formulare kombinieren, so dass alle Rechnungen und zu jeder Rechnung die Zahlungseingänge aufgelistet werden. Also machen wir aus den Zahlungseingänge-Bericht direkt einen Unterbericht im Rechnungs-Bericht, zunächst ohne jeden Link und anschließend verlinkt.

Das Rechnungsformular mit Datenquelle
Das Zahlungseingänge-Formular mit Datenquelle
Die Kombination ohne Link
Der Ansatz zur Verlinkung
Die Kombination mit Link
 

Das Rechnungsformular

Unser einfaches Rechnungsformular hat folgenden Aufbau:

Es listet zu jeder Rechnung das Rechnungsdatum, Kundenmatch, Rechnungsnummer, offenen Betrag und Fibukonto auf.
Die zugehörige Datenquelle sieht folgendermaßen aus:

Daraus ergibt sich in der Vorschau folgender Bericht:

Die Rechnungen sind nach Kundenmatch sortiert, offene Beträge nur da zu sehen wo auch ein solcher Betrag existiert. Wie man die Sortierung hinbekommt, kann man unter „Eingebettete Datenquellen“ nachlesen.

Das Formular mit den Zahlungseingängen

Das einfache Zahlungseingangs-Formular hat folgenden Aufbau:

Zu jedem Zahlungseingang wird das Datum, der Betrag, Erlöskonto, Auszug und die Bemerkung ausgegeben.
Die zugehörige Datenquelle sieht folgendermaßen aus:

Daraus ergibt sich in der Vorschau folgender Bericht:

Hier sieht es ziemlich unsortiert aus, aber die Einträge sind auch nach Kundenmatch sortiert, doch dieser sowie die zugehörige Rechnungsnummer wurden aus Gründen der Übersichtlichkeit weggelassen.

Erster Versuch der Kombination

Wenn wir uns nun im Rechnungsformular als zweite Datenquelle die Datenquelle „RechnungZE“ aller Zahlungseingänge anlegen...

... so können wir den ursprünglichen Zahlungseingangs-Bericht als Unterbericht in den Rechnungs-Bericht  einfügen:

Dies resultiert dann in folgender Vorschau:

Nun, man sieht, dass zu jeder Rechnung alle verfügbaren Zahlungseingänge aufgelistet werden, ganz gleich ob sie zu der entsprechenden Rechnung gehören oder nicht. Das kann natürlich nicht Sinn der Sachen sein, doch wo liegt der Fehler? - Ganz klar: Der Link fehlt.

Woher soll der Unterbericht denn auch wissen welche Zahlungseingänge er auflisten soll? Ein Unterbericht ist ein vollwertiger Bericht, der für sich alleine arbeitet! Sobald der Unterbericht aufgerufen wurde, wird er zunächst komplett abgearbeitet, und da er alle Zahlungseingänge aus der Datenquelle zur Verfügung hat, so listet er natürlich auch alle auf.
Dieses Problem können wir mit einem Link lösen.

Der Ansatz zur Verlinkung

Wir wissen: Jede Rechnung hat eine ID, und diese ID taucht irgendwo in der Datenquelle der Zahlungseingänge auf, denn sonst könnte man Zahlungseingänge nicht den Rechnungen zuordnen. Es kann allerdings auch nicht die ID eines Zahlungseingangs sein, denn die ist für jeden Zahlungseingang verschieden.
Es ist die KopfID eines Zahlungseingangs. Die KopfID eines Zahlungseingangs ist immer gleich der ID der zugehörigen Rechnung, so dass eine eindeutige Zuordnung von Zahlung und Rechnung möglich ist.

Damit also immer nur die zur aktuellen Rechnung gehörenden Zahlungen aufgelistet werden, müssen wir die KopID der Zahlungen an die ID der Rechnung knüpfen, so dass mit einer neuen Rechnung (=neue ID) auch eine neue KopfID gesetzt wird und somit immer nur bestimmte Zahlungen (nämlich die zur aktuellen Rechnung) im Unterbericht zur Verfügung stehen (denn dann können auch nur diese im Unterbericht geruckt werden).
Dieser Link würde bei nicht eingebetteten Datenquellen im Datenkonfigurator folgendermaßen aussehen:

pRechnung:KopfID=ID

Bei eingebetteten Datenquellen wie hier können wir das einfacher haben. Hier können wir uns einfach die KopfID in der Datenquelle der Zahlungen greifen und per Drag&Drop auf die ID der Datenquelle der Rechnungen ziehen:

 

Die Kombination der beiden Formulare mit Link

Nach dieser Verlinkung sehen unsere Datenquellen nun folgendermaßen aus:

Den Bericht lassen wir unverändert:

Und siehe da ...

... es funktioniert!

 

Wo könnten Probleme auftreten? Einerseits natürlich beim Erstellen der Datenquellen, vor allen wenn diese aus mehreren Tabellen zusammengesetzt werden (z.B. Datenquelle Rechnung enthält gewisse Felder aus OffenePosten). Außerdem vielleicht beim Verlinken der Datenquellen, z.B. Verlinkung falsch herum etc. Dazu können folgende Links weiterhelfen:

Datenquellen verbinden
Erstellen der Datenquellen