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.

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.

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

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.

    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

    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

    Möchten Sie weiterlesen? Dann lösen Sie Ihr Ticket!
    Hier geht es zur Bestellung des Jahresabonnements des Magazins Access im Unternehmen:
    Zur Bestellung ...
    Danach greifen Sie sofort auf alle rund 1.000 Artikel unseres Angebots zu - auch auf diesen hier!
    Oder haben Sie bereits Zugangsdaten? Dann loggen Sie sich gleich hier ein:

    Schreibe einen Kommentar