Zur Hauptseite ... Zum Onlinearchiv ... Zum Abonnement ... Zum Newsletter ... Zu den Tools ... Zum Impressum ... Zum Login ...

Gedrucktes Heft

Diesen Beitrag finden Sie in Ausgabe 6/2007.

Unser Angebot für Sie!

Lesen Sie diesen Beitrag und 500 andere sofort im Onlinearchiv, und erhalten Sie alle zwei Monate brandheißes Access-Know-how auf 72 gedruckten Seiten! Plus attraktive Präsente, zum Beispiel das bald erscheinende Buch 'Access 2010 - Das Grundlagenbuch für Entwickler'!

Diesen Beitrag twittern

Zusammenfassung

Nutzen Sie die Gruppierungen in Berichten, um hierarchische Daten auszugeben.

Techniken

Berichte

Voraussetzungen

Access 2000 und höher

Beispieldateien

HierarchischeDaten.mdb

Shortlink

520

Hierarchische Daten in Berichten

André Minhorst, Duisburg

Hierarchische Daten? Brrr ... das ist doch das, was man sonst im TreeView-Steuerelement anzeigt, oder? Schon richtig, nur: Mit hierarchischen Daten arbeiten Sie vermutlich tagtäglich, denn sobald eine oder mehrere 1:n-Beziehungen im Spiel sind, ergibt sich eine gewisse Hierarchie zwischen den in den Tabellen enthaltenen Daten. Und die sollen nun im Bericht angezeigt werden? Nichts leichter als das: Sie brauchen nur eine oder mehrere Gruppierungen.

"Hierarchische Daten" sind eigentlich nichts weiter als die Daten verknüpfter Tabellen: Zwischen Kunden und Projekten ergibt sich beispielsweise eine Hierarchie, an deren Spitze der Kunde steht, der ein oder mehrere Projekte unter sich vereint.

Damit die nachfolgenden Beispiele nicht allzu simpel ausfallen, greifen wir uns direkt eine Konstellation heraus, die mehr als eine Hierarchie-Ebene beherbergt: nämlich eine in der Projektzeiterfassung übliche Hierarchie mit dem Projekt an der Spitze.

Jedes Projekt enthält ein oder mehrere Aufgaben, die wiederum durch eine oder mehrere Tätigkeiten abgearbeitet werden.

Das Datenmodell der Beispieldatenbank finden Sie in Abb. 1.

abb001.tif

Abb. 1: Datenmodell einer Projektzeiterfassung

Ein passendes Frontend für diese Daten ist beispielsweise Outlook - weitere Informationen finden Sie im Beitrag Projektzeiterfassung mit Outlook 2007.

Davon abgesehen wollen wir an dieser Stelle auf die Beschreibung der Formulare zur Eingabe der Daten verzichten und den Schwerpunkt auf die Ausgabe der Daten per Bericht lenken.

Projekte, Aufgaben und Tätigkeiten im
Bericht

Voraussetzung für einen gelungenen Bericht ist immer die passende Datenherkunft: Sie muss alle Daten liefern, die der Bericht anzeigen soll. In diesem Fall umfasst die verwendete Abfrage alle Tabellen der Datenbank, nämlich tblProjekte, tblAufgaben und tblTaetigkeiten, und sieht wie in Abb. 2 aus.

abb002.tif

Abb. 2: Datenherkunft eines hierarchischen Berichts

Beachten Sie, dass Sie in eine Abfrage, die als Datenherkunft eines Berichts vorgesehen ist, erst gar keine Sortierungen einzubringen brauchen - der Bericht schert sich nicht darum, die Sortierungen und Gruppierungen legen Sie komplett im Bericht fest.

Der Bericht soll die Daten der Projekte, Aufgaben und Tätigkeiten ähnlich wie in einem TreeView-Steuerelement anzeigen. Das heißt, dass die jeweils untergeordneten Elemente etwas eingerückt dargestellt werden sollen.

Doch so weit ist es noch nicht: Zunächst müssen Sie überhaupt einmal einen Bericht erstellen und die neu erstellte Abfrage für die Eigenschaft Datenherkunft des Berichts angeben.

Wenn Sie dann den Menüeintrag Ansicht|Feldliste aufrufen, können Sie die in der Abfrage enthaltenen Felder in Form passender Steuerelemente in den Bericht ziehen (s. Abb. 3).

abb003.tif

Abb. 3: Der Bericht ist zum Hinzufügen der gebundenen Steuerelemente bereit.

Zuvor müssen Sie allerdings noch die benötigten Gruppierungen hinzufügen - und darüber sollten Sie sich im Vorfeld ein paar Gedanken machen. Klar ist, dass die Einträge der Tabelle tblTaetigkeiten als unterstes Element der Hierarchie im Detailbereich angezeigt werden. Die gewünschten Einträge können Sie daher schon in den Detailbereich ziehen.

Die Frage ist nur: Wohin mit den Beschriftungsfeldern? Irgendwie soll man ja auch erkennen können, welches Feld welche Information enthält, und das ist zumindest für Außenstehende ohne Beschriftungen möglicherweise nur eingeschränkt möglich. Es gibt mindestens drei Möglichkeiten:

  • Die Beschriftung landet im Detailbereich, und zwar über dem jeweiligen Feld.
  • Die Beschriftung wird jeweils links vom Feld untergebracht.
  • Die Beschriftung soll nur einmal über dem ersten Element erscheinen.

Letzteres scheint den wenigsten Platz zu beanspruchen. Damit die Beschriftungen nur einmal erscheinen, platzieren Sie diese im übergeordneten Bereich.

Wenn der Bericht nur die Tätigkeiten anzeigen würde, wäre dies der Seitenkopf. Auf diese Weise zeigt jede Seite die Spaltenköpfe einmal im oberen Bereich der Seite an.

Da wir es hier aber mit einem hierarchischen Bericht zu tun haben, bei dem der Bezug zwischen Seitenkopf und Detailbereich durch dazwischenliegende Bereiche auseinandergerissen wird, sollten Sie die Beschriftungen besser im Gruppenkopf der übergeordneten Gruppierung anlegen.

Bis dato sieht der Bericht im Entwurf jedoch erst einmal wie in Abb. 4 aus. Das rechte Textfeld stammt nicht aus der Datenherkunft, sondern berechnet mit folgendem Ausdruck die Dauer der Tätigkeit:

abb004.tif

Abb. 4: Der Bericht mit Informationen zu Tätigkeiten

=[Endzeit]-[Startzeit]

Schön sieht der Bericht sicher noch nicht aus, aber wer schon ein paar Berichte hinter sich hat, der weiß: Einen Bericht macht man immer erst schön, wenn er komplett fertig ist und die gewünschten Daten anzeigt.

Einfügen der
Aufgaben-Gruppierung

Nun kümmern Sie sich um die Aufgaben. Diese sollen jeweils in einer Zeile vor den dazugehörenden Tätigkeiten ausgegeben werden:

Aufgabe 1

    Tätigkeit 1_1

    Tätigkeit 1_2

Aufgabe 2

    Tätigkeit 2_1

    Tätigkeit 2_2

Die benötigten Daten sind bereits in der Datenherkunft enthalten. Nun müssen Sie einen Bereich definieren, der die Aufgabendaten anzeigt. Dies erledigen Sie im Dialog Sortieren und Gruppieren, den Sie mit dem Menüeintrag Ansicht|Sortieren und Gruppieren aktivieren.

Dort legen Sie zunächst fest, dass der Bericht die Daten nach dem Feld AufgabeID gruppieren soll. Um auch noch einen passenden Bereich zur Darstellung der Daten zu den Aufgaben bereitzustellen, stellen Sie die Eigenschaft Gruppenkopf auf Ja ein (s. Abb. 5). Der Gruppenkopf erscheint dann auch postwendend im Bericht. Sie können nun - ähnlich wie bei den Tätigkeiten - die aufgabenrelevanten Felder in diesen Bereich ziehen.

abb005.tif

Abb. 5: Einstellen des Gruppenkopfes für die Aufgaben

Die bislang im Seitenkopf befindlichen Beschriftungsfelder fügen Sie dort ebenfalls ein, und die Beschriftungen für die Aufgaben-Felder wandern dafür in den Seitenkopf (normalerweise würden Sie diese Schritte überspringen, es dient hier nur dem besseren Verständnis). Abb. 6 zeigt den Zwischenstand des Entwurfs und Abb. 7 belegt, dass der Bericht auch in der Vorschauansicht den obigen Angaben entspricht.

abb006.tif

Abb. 6: Der Bericht mit Aufgaben und Tätigkeiten in der Entwurfsansicht

abb007.tif

Abb. 7: Zwischenstand des Berichts mit verschachtelten Aufgaben und Berichten

Projekte ganz oben

Fehlen noch die Projekte. Die Vorgehensweise ist genau die gleiche wie im vorherigen Schritt: Sie legen eine neue Gruppierung mit eigenem Kopfbereich an und füllen den so geschaffenen Bereich mit den projektbezogenen Feldern. Zu beachten ist lediglich die Reihenfolge der Gruppierungen im Dialog Sortieren und Gruppieren: Die Gruppierungsbereiche werden nämlich im Bericht in genau der gleichen Reihenfolge wie im Dialog untergebracht. Abb. 8 zeigt den Bericht mit allen Daten und Gruppierungsbereichen. Leider enthält diese Variante einen kleinen Denkfehler: Die Beschriftung der Projekt-Gruppierung muss nämlich in den Gruppenkopf selbst, da sie sonst auf jeder neuen Seite wiederholt wird.

abb008.tif

Abb. 8: Fast fertig: Der Bericht mit allen gewünschten Daten

Interessant wären nun noch ein paar gruppierungsabhängige Zahlen: So ist es beispielsweise interessant, wie viel Zeit für die einzelnen Tätigkeiten und vor allem für die einzelnen Projekte aufgewendet wurde. Dazu brauchen Sie zunächst zwei passende Fußbereiche für die beiden Gruppierungen. In denen bringen Sie zwei Steuerelemente namens txtAufgabeDauer und txtProjektDauer mit dem gleichen Steuerelementinhalt unter - nämlich dem folgenden Ausdruck:

=Summe([Endzeit]-[Startzeit])

Die Struktur des Berichts steht nun, fehlt allein noch ein wenig Übersichtlichkeit. Teilweise sorgen schon die eingerückten Elemente für etwas mehr Übersicht. Noch besser wird es in der Regel, wenn Sie Bereiche durch Linien voneinander abtrennen oder ganze Bereiche mit einer bestimmten Farbe unterlegen. Dazu legen Sie am besten zunächst eine Linie an, die genau von der einen zur anderen Seite des Berichts reicht, und erzeugen dann einige Kopien dieser Linie, die Sie ausschneiden und an den gewünschten Stellen einfügen (s. Abb. 9).

abb009.tif

Abb. 9:
Der Bericht wird durch Einrückungen und Linien strukturiert.

Weitere Einstellungen

Nicht so schön ist an der aktuellen Fassung, dass beispielsweise die Liste der Tätigkeiten einfach auf den Folgeseiten fortgeführt wird, ohne dass man die Zugehörigkeit zum jeweiligen Projekt oder zur Tätigkeit entnehmen kann.

Hier gibt es verschiedene Varianten:

  • Jedes Projekt soll auf einer neuen Seite beginnen: Mit der Einstellung Neue Seite des Gruppenkopfes auf Vor Bereich sorgen Sie dafür, dass jedes Projekt auf einer neuen Seite angezeigt wird.
  • Da dies bei Projekten mit wenigen Informationen viel Platz verschwendet, können Sie auch eine Variante wählen, bei der Gruppen möglichst zusammengehalten und so gegebenenfalls auch einmal zwei oder mehr Projekte auf einer Seite abgebildet werden. Dazu stellen Sie die Eigenschaft Zusammenhalten im Sortieren und Gruppieren-Dialog auf Ganze Gruppe ein.
  • Wenn Projekte schon über mehrere Seiten reichen, sollten Sie zumindest dafür sorgen, dass die wichtigsten Informationen auf den Folgeseiten wiederholt werden. Das erreichen Sie, indem Sie die Eigenschaft Bereich wiederholen für die relevanten Bereiche - hier der Projekte- und der Aufgaben-Bereich - auf den Wert Ja einstellen.

Zusammenfassung und Ausblick

Die Abbildung der Daten aus hierarchisch aufgebauten Tabellen gelingt dank der Gruppierungseigenschaften von Berichten ohne Probleme, und weitere Features sorgen dafür, dass auch mehrseitige Berichte mit solchen Daten möglich sind.

Dennoch fehlt noch einiges - etwa der Hinweis darauf, dass eine Seite die zweite Seite mit Daten zu einem bestimmten Projekt ist. Hierzu ist jedoch der Einsatz von VBA notwendig; mit herkömmlichen Mitteln kommt man hier nicht zum Ziel.

Wie Sie hierarchische Berichte mit zusätzlichen Details versehen, erfahren Sie in einer der folgenden Ausgaben von Access im Unternehmen.

Kompletten Artikel lesen?

Einfach für den Newsletter anmelden, dann lesen Sie schon in einer Minute den kompletten Artikel und erhalten die Beispieldatenbanken.

E-Mail:

Download

Download

Die .zip-Datei enthält folgende Dateien:

HierarchischeDaten.mdb

Beispieldateien downloaden

© 2003-2015 André Minhorst Alle Rechte vorbehalten.