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

Achtung: Dies ist nicht der vollständige Artikel, sondern nur ein paar Seiten davon. Wenn Sie hier nicht erfahren, was Sie wissen möchten, finden Sie am Ende Informationen darüber, wie Sie den ganzen Artikel lesen können.

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:

Gedrucktes Heft

Diesen Beitrag finden Sie in Ausgabe 5/2003.

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

Berichte zur Laufzeit anpassen

André Minhorst, Duisburg

Wenn Sie Ihren Anwendern wahren Luxus gönnen möchten, spendieren Sie ihnen doch einfach mal die einfache Möglichkeit, einen Bericht nach eigenen Wünschen zu gruppieren, ohne sich gleich in Access einarbeiten zu müssen. Das brauchen Sie nicht, da Sie lieber zahllose unterschiedliche Berichte mit allen denkbaren Gruppierungs- und Sortierungskombinationen programmieren? Und was passiert, wenn sich das Corporate Design Ihres Kunden einmal ändert? Im vorliegenden Beitrag lernen Sie, wie Sie mit ein wenig VBA das Maximum aus einem einzigen Bericht herausholen können.

Beispieldatenbank

Der vorliegende Beitrag verwendet die in einem weiteren Beitrag dieser Ausgabe beschriebene Musterlösung Einnahmen-Überschussrechnung mit Access als Beispieldatenbank. Dabei wird besonderes Augenmerk auf das Formular frmAuswertung und den Bericht rptAuswertungVBA gerichtet.

Hinweis

Sie finden die Beispieldatenbank in Versionen für Access 97 (EÜ97.mdb), Access 2000 und höher (EÜ2000.mdb) auf der beiliegenden Heft-CD. (

Berichtsbereiche ermitteln

Bevor Sie per VBA auf Berichtsbereiche oder darin enthaltene Steuerelemente zugreifen können, müssen Sie diese zunächst einmal mit Namen kennen. Dazu verwenden Sie die Prozedur aus Quellcode 1.

Die Prozedur gibt alle Section-Elemente des Berichtes mit dem angegebenen Namen aus. Die Ausgabe sieht beispielsweise wie in Abb. 1 aus.

Mit der Kenntnis der Namen der einzelnen Bereiche eines Berichts können Sie beispielsweise einen Bereich ein- oder ausblenden. Wenn Sie dies zur Laufzeit tun möchten, benötigen Sie optimalerweise ein Formular, das alle Berichtsbereiche anzeigt und Steuerelemente zum Einstellen der gewünschten Eigenschaften bereitstellt.

Eine weitere interessante Information ist die Gruppierungsebene. Diese und weitere Informationen erhalten Sie mit der Prozedur aus Quellcode 2. Achten Sie bei ihrer Verwendung darauf, dass der gewünschte Bericht auch geöffnet ist.

Abb. 1: Ausgabe der Bereiche eines Berichts

Gruppieren per VBA

Obwohl das Einrichten von Gruppierungen über den herkömmlichen Weg nicht besonders kompliziert ist, erfordert es doch ein gewisses Maß an Know-how. Das können Sie von den Endanwendern Ihrer Datenbank natürlich nicht erwarten, sofern diese nicht über Access-Kenntnisse verfügen. Um die Anwender dennoch zufrieden zu stellen, haben Sie zwei Möglichkeiten:

Public Function BerichtsbereicheAusgeben(Bericht As _
    String)

    On Error Resume Next

    Dim i As Integer

    i = 0

    Do While Err.Number = 0

        Debug.Print i, Reports(Bericht).Section(i).Name

        i = i + 1

    Loop

End Function

Quellcode 1

Public Sub GruppierungsinformationenAusgeben _
    (Berichtsname As String)

    On Error Resume Next

    Dim i As Integer

    Dim rpt As Report

    Set rpt = Reports(Berichtsname)

    i = 0

    Do While Not Err.Number > 0

        Debug.Print i, _
            rpt.GroupLevel(i).ControlSource, _
            rpt.GroupLevel(i).GroupFooter, _
            rpt.GroupLevel(i).GroupHeader

        i = i + 1

    Loop

End Sub

Quellcode 2

  • Sie erstellen für jede Konfiguration einen eigenen Bericht. Der Nachteil dabei ist, dass grundlegende Änderungen wie zum Beispiel des Layouts in allen Berichten durchgeführt werden müssen.
  • Sie erstellen einen Bericht, dessen Aussehen vom Benutzer dynamisch angepasst werden kann. Dazu stellen Sie dem Benutzer ein Formular zur Verfügung, mit dem er die Gruppierung, Filter und so weiter auswählen kann.
  • Da die erste Variante eher konventionell ist, lernen Sie hier die zweite Methode kennen. Dazu erstellen Sie zunächst ein Formular, mit dem Sie den Zeitraum sowie die Gruppierungen auswählen können.

    Formular zum Einstellen von Gruppierungsoptionen

    Das Formular hat zwei Funktionen. Es dient der Auswahl eines Zeitraums für die auszugebenden Geschäftsvorfälle sowie der Festlegung von Gruppierungsoptionen.

    Das Formular soll wie in Abb. 2 aussehen. Der obere Bereich dient zum Festlegen des anzuzeigenden Zeitraums. Im unteren Bereich kann festgelegt werden, nach welchen Kriterien überhaupt gruppiert werden soll und in welcher Reihenfolge. Für das Gruppierungskriterium kann außerdem das Gruppierungsintervall festgelegt werden.

    Die beiden Schaltflächen mit den Pfeilen dienen dem Vertauschen der Reihenfolge der Gruppierungskriterien. Man hätte auch einfach ein Textfeld zum Eintragen von Zahlen zur Angabe der Reihenfolge verwenden können, aber das Auge isst schließlich auch mit.

    Wenn Sie mehr als zwei unterschiedliche Gruppierungen verwenden möchten, wird die Programmierung natürlich etwas aufwändiger.

    Für weitere Informationen sehen Sie sich den Entwurf des Formulars und die darin verwendeten Prozeduren an.

    Auswertung des Formulars

    Die Einstellung des gewünschten Zeitraums im Bericht erfolgt über die Zuweisung einer entsprechenden WhereCondition beim Aufruf des Formulars.

    Abb. 2: Berichtsoptionen einstellen per Formular

    Wesentlich interessanter ist die Einstellung der Gruppierungen anhand der im Formular festgelegten Informationen.

    Abb. 3: Der Bericht rptAuswertung_Rohfassung in der Entwurfsansicht

    Vorbereiten des Berichts

    Der vorliegende Bericht rptAuswertungVBA soll zwischen null und zwei Gruppierungsebenen aufweisen, die mit dem im vorherigen Kapitel beschriebenen Formular festgelegt werden.

    Es gibt zwei Möglichkeiten, einen Bericht dynamisch zu gruppieren:

  • Der Bericht wird in der Entwurfsansicht geöffnet. Dort werden die Gruppierungen und sämtliche benötigten Steuerelemente per VBA hinzugefügt.
  • Der Bericht wird bereits im Vorfeld mit den notwendigen Gruppierungsebenen und den erforderlichen Steuerelementen ausgestattet. Zur Laufzeit werden nur noch die Felder festgelegt, nach denen gruppiert werden soll, und die Steuerelemente mit Beschriftungen versehen.
  • Die erste Möglichkeit ist sehr viel programmieraufwändiger als die zweite. Jedes Steuerelement muss zentimetergenau eingesetzt werden und der Zeitaufwand für die Anpassung des Berichtes zur Laufzeit ist im Vergleich zur zweiten Lösung sehr hoch. Der wichtigste Punkt aber ist, dass der Bericht definitiv in der Entwurfsansicht geöffnet werden muss. Das ist aber beispielsweise in einer .mde-Datenbank nicht möglich. Daher wird nachfolgend die zweite Variante beschrieben.

    Hinzufügen von Gruppierungen

    Der erste Schritt besteht darin, die gewünschte Menge Gruppierungsebenen anzulegen und diese mit den entsprechenden leeren Steuerelementen zu versehen. Gleichzeitig können Sie die Gruppenköpfe und Gruppenfüße farblich oder auf andere Weise optisch hervorheben.

    Wenn Sie die nachfolgenden Schritte nachvollziehen möchten, verwenden Sie den Bericht rptAuswertung_Rohfassung aus der Musterlösung.

    Der Bericht zeigt die einzelnen Geschäftsvorfälle mit den Netto- und Bruttoumsätzen und einigen weiteren Zahlen an (s. Abb. 3). Im Berichtsfuß werden die Beträge addiert.

    Nun fügen Sie dem Bericht drei Sortierungen beziehungsweise Gruppierungen hinzu. Wie diese angeordnet sind, zeigt Abb. 4.

    Tab. 1 zeigt, welche der Einträge im Dialog Sortieren und Gruppieren einen Gruppenkopf und einen Gruppenfuß enthalten müssen. Die Einträge befinden sich in der gleichen Reihenfolge wie in Abb. 4.

    Der linke Teil des Berichts mit den Gruppierungen sieht nun wie in Abb. 5 aus.

    Abb. 4: Manuell angelegte Gruppierungen

    Abb. 5: Frisch gruppiert ist halb gewonnen ...

    Sie haben das Ende des frei verfügbaren Teils des Artikels erreicht. Lesen Sie weiter, um zu erfahren, wie Sie den vollständigen Artikel lesen und auf viele hundert weitere Artikel zugreifen können.

    Sind Sie Abonnent?Jetzt einloggen ...
     

    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:

    Verwandte Beiträge:

    Berichte manuell füllen

    Termine in Berichten darstellen

    Gruppensummen ohne Gruppen im Berichtsfuß

    © 2003-2015 André Minhorst Alle Rechte vorbehalten.