CrystalReports: Verknüpfen von Tabellen: Unterschied zwischen den Versionen

Aus GEVITAS
Wechseln zu: Navigation, Suche
Zeile 22: Zeile 22:
  
 
[[Datei:CrystalReport_Bsp_Datenbank_Relationen.jpg]]
 
[[Datei:CrystalReport_Bsp_Datenbank_Relationen.jpg]]
 +
 +
=== Verknüpfungen sind dynamisch! ===
 +
 +
Was heißt das?
 +
 +
Nun, in der Datenbank sind die Tabellen untereinander '''nicht''' verknüpft. Erst bei der '''Abfrage der Daten''' wird bestimmt, in welcher Beziehung die Tabellen zueinander stehen. Das ist ein mächtiges Werkzeug, macht die Sache aber etwas schwieriger. Wie soll man wissen, wie man die Tabellen verknüpft?
 +
 +
Entscheidend ist immer die Frage, welche Tabelle die "führende" ist, also welche Information steht im '''Mittelpunkt''' der Abfrage (im Detailbereich des Reports). Danach muss man sich fragen:
 +
 +
* Welche Informationen will man '''zusätzlich''' haben.
 +
* In welchen Tabellen stehen die zusätzlichen Daten?
 +
* Mit welchem Feld kann man die Daten verknüpfen?
 +
 +
Versuchen wir, uns der Sache mit Beispielen zu nähern.
 +
 +
==== Beispiel: Liste ausgegebener Artikel ====
 +
 +
Wir wollen eine Liste der aktuell ausgegebenen Einzel-Artikel. Auf der Liste sollen die Artikeldaten stehen, aber auch Teile der Auftragsdaten. Welche Tabelle ist nun die "führende"?
 +
 +
Nun, da es um die ausgegebenen Einzelartikel-Daten geht, ist es die Tabelle der Einzelartikel (MARTEINZ). Um die geht es! Weil wir im Report aber auch Teile der Auftragsdaten sehen wollen (z.B. den Kunden, den Veranstaltungsort usw.), müssen wir den Auftragskopf (MAUFKO) mit der Tabelle der Einzelartikel (MARTEINZ) verknüpfen:
 +
 +
[[Datei:CrystalReport_Bsp_Datenbank_Relationen_MARTEINZ_MAUFKO.jpg]]
 +
 +
Die Beziehung ist dabei '''von''' MARTEINZ zu '''MAUFKO'''.

Version vom 3. Februar 2013, 00:33 Uhr

1 Allgemeines

Das Verknüpfen von Tabellen in einem Report ist eine der schwierigsten Aufgaben beim Erstellen eines Reports! Nur wenn man die Systematik und Logik verstanden hat, kann man einen Report mit mehreren Tabellen richtig aufbauen. Wenn man die Tabellen falsch verknüpft, können schwere Fehler passieren!

2 Hintergrund

Die Datenbank von REFLEX bzw. GEVAS-Professional ist eine sog. "Relationale Datenbank". Vereinfacht gesagt bedeutet das, dass die Tabellen der Datenbank nicht "festdrahtet" miteinander verbunden sind, sondern durch Verknüpfungen (Relationen) miteinander verbunden werden. Das bedeutet, dass man bei einer Abfrage der Daten festlegen kann, wie die Daten verknüpft werden sollen. Je nach Aufgabenstellung kann die Verknüpfung anders sein!

3 Verknüpfung

Eine Verknüpfung bestimmt, wie die Daten zueinander in Beziehung stehen. Beispiel:

Wenn man sich einen Auftrag anschaut, so besteht er im Wesentlichen aus drei Tabellen:

  • Auftragskopf
  • Positionen
  • Auftragsfuß

Zu einem Auftragskopf gibt es mehrere Positionen. Die Anzahl der Positionen ist variabel. Man spricht hier von einer 1:n-Relation: Zu einer Auftragsnummer gibt es eine variable Anzahl (n) von Positionen.

Zu einem Auftragskopf gibt es immer einen Auftragsfuß. Man spricht hier von einer 1:1-Relation. Zu einer Auftragsnummer gibt es immer nur einen Fuß-Datensatz.

CrystalReport Bsp Datenbank Relationen.jpg

3.1 Verknüpfungen sind dynamisch!

Was heißt das?

Nun, in der Datenbank sind die Tabellen untereinander nicht verknüpft. Erst bei der Abfrage der Daten wird bestimmt, in welcher Beziehung die Tabellen zueinander stehen. Das ist ein mächtiges Werkzeug, macht die Sache aber etwas schwieriger. Wie soll man wissen, wie man die Tabellen verknüpft?

Entscheidend ist immer die Frage, welche Tabelle die "führende" ist, also welche Information steht im Mittelpunkt der Abfrage (im Detailbereich des Reports). Danach muss man sich fragen:

  • Welche Informationen will man zusätzlich haben.
  • In welchen Tabellen stehen die zusätzlichen Daten?
  • Mit welchem Feld kann man die Daten verknüpfen?

Versuchen wir, uns der Sache mit Beispielen zu nähern.

3.1.1 Beispiel: Liste ausgegebener Artikel

Wir wollen eine Liste der aktuell ausgegebenen Einzel-Artikel. Auf der Liste sollen die Artikeldaten stehen, aber auch Teile der Auftragsdaten. Welche Tabelle ist nun die "führende"?

Nun, da es um die ausgegebenen Einzelartikel-Daten geht, ist es die Tabelle der Einzelartikel (MARTEINZ). Um die geht es! Weil wir im Report aber auch Teile der Auftragsdaten sehen wollen (z.B. den Kunden, den Veranstaltungsort usw.), müssen wir den Auftragskopf (MAUFKO) mit der Tabelle der Einzelartikel (MARTEINZ) verknüpfen:

CrystalReport Bsp Datenbank Relationen MARTEINZ MAUFKO.jpg

Die Beziehung ist dabei von MARTEINZ zu MAUFKO.