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 1/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

Programmieren Sie flexible Berichte mit mehreren Spalten oder Leerzeilen zwischen Datensätzen.

Techniken

Berichte

Voraussetzungen

Access 97 und höher

Beispieldatei

FlexibleBerichte97.mdb, FlexibleBerichte.mdb

Shortlink

433

Flexible Berichte mit MoveLayout, NextRecord und PrintSection

André Minhorst, Duisburg

Berichte lassen sich dank der unterschiedlichen Bereiche bereits sehr flexibel gestalten. Manchmal reicht dies aber nicht aus - zum Beispiel, wenn mehrere Datensätze in eine Zeile, mehrfach oder gar nicht gedruckt werden sollen. In diesem Fall helfen die drei Eigenschaften MoveLayout, NextSection und PrintSection in diversen Kombinationen weiter.

Wozu mehr Flexibilität?

Das Standardbeispiel für den Einsatz zumindest von zwei der oben genannten Eigenschaften ist der Etikettendruck. Es sollen meist mehrere Datensätze in einer Zeile gedruckt werden und die Anzahl der Exemplare je Datensatz variiert von keinem bis beliebig vielen.

Dass man dazu allenfalls noch die Eigenschaft MoveLayout benötigt, wenn man die Datenherkunft des Berichts vorher entsprechend anpasst, haben wir bereits in [1] gezeigt.

Access-Berichte bieten nur wenig Flexibilität, wenn es beispielsweise um mehrspaltige Berichte geht. So können Sie beispielsweise ohne Unterbericht und sonstige Tricks keinen einspaltigen Gruppenkopf mit zweispaltigen Detaildatensätzen realisieren. Die Seiteneinrichtung liefert zwar die Möglichkeit, mehrspaltige Berichte einzurichten und auch die Reihenfolge (von links nach rechts, von oben nach unten) festzulegen, aber Bereiche wie Gruppenköpfe oder -füße werden dort nicht berücksichtigt. Wenn Sie etwa den Bericht mit der Entwurfsansicht aus Abb. 1 mit den Einstellungen aus Abb. 2 ausgeben, erhalten Sie den Bericht aus Abb. 3.

pic001.tif

Abb. 1: Entwurf eines zweispaltigen Berichts

pic002.tif

Abb. 2: Einstellungen für einen zweispaltigen Bericht

pic003.tif

Abb. 3: Verunglückter zweispaltiger Bericht mit Gruppierung nach Kategorien

Ein besseres Ergebnis erhalten Sie, wenn Sie die Mehrspaltigkeit selbst realisieren. Dazu stellen Sie einfach die Spaltenanzahl wieder auf den Wert 1 ein und gehen wie folgt vor.

MoveLayout – nächste Zeile oder nicht?

Die Eigenschaft MoveLayout legt fest, ob der Inhalt des folgenden Bereichs in den aktuellen Bereich hineingeschrieben werden soll. Um dies zu verstehen, muss man wissen, dass Access Berichte Bereich für Bereich aufbaut. Bei allen Bereichen gibt es wiederum Prüfungen, ob diese noch auf die aktuelle Seite passen, ansonsten werden die notwendigen Schritte unter den gegebenen Bedingungen noch einmal wiederholt.

Im vorliegenden Fall wird Access zunächst den Gruppenkopf-Bereich der ersten Artikelkategorie anlegen und dann mit den Detaildatensätzen fortfahren – bis ein Datensatz nicht mehr auf die aktuelle Seite passt und eine neue Seite begonnen wird.

Sie können in das Erstellen von Bereichen einwirken, indem Sie VBA-Code etwa für die Beim Formatieren-Ereignisprozeduren anlegen. Eine Möglichkeit, den Ablauf zu beeinflussen, ist das Setzen der Eigenschaft MoveLayout auf den Wert False. Diese Eigenschaft wird von Access standardmäßig vor dem Abarbeiten dieser Ereigniseigenschaft auf den Wert True gesetzt, sodass normalerweise nach dem Schreiben des aktuellen Bereichs der folgende Bereich beschrieben wird.

Wenn Sie die Ereignisprozedur, die beim Formatieren des Detailbereichs ausgelöst wird, wie folgt füllen, springt Access bei keinem der Detaildatensätze zum nächsten, darunterliegenden Bereich, sondern schreibt alle Datensätze in den gleichen Bereich. Dass dies keinen Sinn ergibt, zeigt Abb. 4.

pic004.tif

Abb. 4: Stellt man die Eigenschaft MoveLayout für den Detailbereich auf False, druckt Access alle Datensätze einer Grupierung in den gleichen Detailbereich.

Die gleiche Wirkung erhalten Sie übrigens auch, wenn Sie MoveLayout für andere Bereiche wie Berichts-, Seiten- oder Gruppierungsköpfe und -füße auf False einstellen – Sie erhalten dann einen Bericht in sehr kompakter, aber ziemlich schlecht lesbarer Form.

MoveLayout will daher sehr gezielt eingesetzt werden, etwa, um Daten in zwei oder mehr Spalten anzuzeigen, was bedeutet, dass man nach dem Ausgeben des jeweils ersten Datensatzes MoveLayout auf False einstellt und die Steuerelemente des zweiten Datensatzes weiter rechts platziert.

Wenn Sie einen Bericht mit der Entwurfsansicht aus Abb. 5 zweispaltig gestalten möchten, legen Sie die Ereigniseigenschaft Beim Formatieren des Detailbereichs an (Detailbereich markieren, Doppelklick in Eigenschaft Beim Formatieren, Klick auf die danebenliegende Schaltfläche) und füllen diese wie in Listing 1.

pic005.tif

Abb. 5: Entwurfsansicht eines Berichts, der zweispaltig ausgegeben werden soll. Im Gegensatz zu einem Bericht, bei dem Sie über die Seiteneinrichtung Zweispaltigkeit erreichen wollen, müssen Sie die Breite dieses Berichts direkt auf zwei Spalten auslegen.

Listing 1: Aufteilen von Steuerelementen auf zwei Spalten

Dim intArtikel As Integer

Const intAbstand As Integer = 4000

Private Sub Detailbereich_Format(Cancel As Integer, FormatCount As Integer)

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:

© 2003-2015 André Minhorst Alle Rechte vorbehalten.