Warum noch ein Access-Buch?
Für wen ist das Buch?
Jetzt bestellen
+ direkter Download des eBooks!
Nur EUR 59,95!
Fehler gefunden?
Bitte melden!
Wünsche an das Buch?
Her damit!
Was denken die Leser über dieses Buch?
Lesen Sie aktuelle Rezensionen!
Kapitel des noch nicht veröffentlichten Buchs zum Downloaden, Probelesen und Kommentieren
Beispieldatenbanken
Zusätzliches Material

Das Buch im HTML-Format

Für unbestimmte Zeit bieten Addison-Wesley und André Minhorst den kompletten Inhalt des Buchs als Download an. Schauen Sie rein und informieren Sie sich über den Inhalt! Und wenn Ihnen das Buch nützlich erscheint und Sie glauben, dass Sie etwas gelernt haben oder durch das Gelesene sogar etwas Zeit und somit Geld bei Ihrer Arbeit einsparen konnten, können Sie sich ja beim Autor und beim Verlag revanchieren - beispielsweise durch den Kauf dieses Buchs.

Am schönsten wäre es natürlich, wenn Sie das Buch direkt hier bestellen - Sie erhalten das Buch dann direkt vom Verlag, und der Autor und Verlag haben dann noch mehr davon, als wenn Sie es anderswo kaufen.

Danke für Ihr Interesse!

6.9.7 Überschriften für Folgeseiten und Rechnungsübertrag

6.9.8 Rechnungsentwurf im Zusammenhang und Restarbeiten

Wenn Sie den Rechnungsbericht, dessen Entwurf Sie in Abbildung 6.46 im Überblick sehen, nun öffnen, werden Sie noch kleinere Schönheitsfehler entdecken.

Es beginnt nicht jede Rechnung auf einer neuen Seite, der Seitenkopfbereich erscheint auch auf der ersten Seite einer Bestellung mit dem Gruppenkopf und der Seitenfuß erscheint auch auf der letzten Seite, wo er eigentlich nicht sichtbar sein sollte. Diese Ungereimtheiten räumen Sie jetzt nacheinander aus.

Bereiche auf neuer Seite anzeigen

In der aktuellen Fassung beginnt nicht jede Rechnung auf einer neuen Seite, die Rechnungen werden einfach nacheinander weggedruckt. Um die Anzeige jeder Rechnung auf einer neuen Seite zu erreichen, ist nur eine kleine Änderung vonnöten: Stellen Sie die Eigenschaft Neue Seite des Kopfbereichs der Gruppierung BestellungID auf den Wert Vor Bereich ein. Dadurch wird vor jedem Gruppenkopf ein Seitenumbruch eingefügt.

Abbildung 6.46: Entwurf der Rechnung im Überblick

Seitenkopf und Seitenfuß nur auf bestimmten Seiten anzeigen

Nun wenden Sie sich dem Seitenkopf und dem Seitenfuß zu. Der Seitenkopf erscheint dummerweise auch auf der ersten Seite über dem Briefkopf und der Seitenfuß soll nicht auf Seiten angezeigt werden, die den Gruppenfuß enthalten. Würden Sie hier die weiter oben angesprochene Variante des Rechnungsberichts verwenden, bei der jede Rechnung in einem einzelnen Bericht angezeigt wird und sich der Briefkopf mit den allgemeinen Rechnungsdaten im Berichtskopf statt im hier verwendeten Gruppenkopf befindet, wäre das Problem leicht zu lösen: Sie würden dann einfach die Eigenschaft Seitenkopf des Berichts auf den Wert Außer Berichtskopf einstellen (siehe Abbildung 6.47).

Abbildung 6.47: Seitenkopf nicht mit dem Berichtskopf auf einer Seite anzeigen

Nachdem Sie nun wissen, wie dies normalerweise funktionieren würde, kommen Sie nun zur anspruchsvolleren Variante: Und da ist schon ein wenig Gehirnschmalz notwendig. Die wichtigste Information, die Sie zum Ein- beziehungsweise Ausblenden von Berichtsbereichen haben müssen, ist folgende: Es funktioniert nicht zuverlässig, wenn Sie den Bereich mit der Visible-Eigenschaft sichtbar oder unsichtbar machen. Auf der sicheren Seite sind Sie, wenn Sie die Cancel-Eigenschaft der Beim Formatieren-Eigenschaft des jeweiligen Bereichs auf True setzen, um die Anzeige des Bereichs zu unterbinden.

Ob einer der beiden Bereiche Seitenkopf oder Seitenfuß angezeigt werden soll, entscheidet sich freilich nicht in der jeweiligen Beim Formatieren-Eigenschaft, sondern in anderen Ereignisprozeduren.

Nun der Reihe nach: Das folgende Listing enthält das komplette Klassenmodul des Berichts. Die Ereignisprozeduren sind nach der Reihenfolge ihres Auftretens geordnet, wobei das Beim Öffnen-Ereignis des Berichts nur einmal ausgelöst wird. Um festzulegen, ob die Anzeige von Seitenfuss oder Seitenkopf unterbunden werden soll, verwenden Sie zwei Boolean-Variablen namens bolCancelSeitenfuss und bolCancelSeitenkopf.

Beim Öffnen des Berichts wird das Ereignis Beim Öffnen ausgelöst. Die erste Seite des Berichts enthält logischerweise die erste Seite einer Rechnung. Daher wird hier auf jeden Fall der Gruppenkopf der Rechnung angezeigt; der Seitenkopf soll dann nicht erscheinen - die Variable bolCancelSeitenkopf wird auf True eingestellt.

Vor dem Anzeigen des Gruppenkopfs wird dessen Beim Drucken-Ereignis ausgelöst. Hier wird die Variable bolCancelSeitenfuss prophylaktisch auf False eingestellt. Das kann sich allerdings schnell ändern, wenn die Gruppierung so wenige Datensätze enthält, dass der Gruppenkopf noch auf der gleichen Seite angezeigt wird. Das dann ausgelöste Ereignis Beim Drucken des Gruppenfußes stellt die Variable bolCancelSeitenfuss dann auf True ein. Damit steht auch fest, dass auf der nächsten Seite eine neue Rechnung beginnt - der Seitenkopf soll also wieder dem Gruppenkopf weichen: Dazu erhält die Variable bolCancelSeitenkopf ebenfalls den Wert True.

Geht es dann an das Formatieren des Seitenfußes, prüft das Ereignis Beim Formatieren den Wert bolCancelSeitenfuss und weist diesen dem Cancel-Parameter zu. Ist dieser True, wird der Bereich nicht angezeigt. Soll der Bereich doch angezeigt werden, wird nach dem Beim Formatieren-Ereignis auch noch das Beim Drucken-Ereignis ausgelöst. In diesem stellen Sie dann direkt die Variable bolCancelSeitenkopf auf den Wert False ein, denn wenn noch nicht die letzte Seite der Rechnung erreicht ist, soll auf der Folgeseite auf jeden Fall der Seitenkopf angezeigt werden.

Dim bolCancelSeitenfuss As Boolean
Dim bolCancelSeitenkopf As Boolean

Private Sub Report_Open(Cancel As Integer)
    'auf erster Seite wird auf jeden Fall der Gruppenkopf sichtbar,
    'also Seitenkopf ausblenden
    bolCancelSeitenkopf = True
End Sub

Private Sub Gruppenkopf0_Print(Cancel As Integer, PrintCount As Integer)
    'Seitenfuß soll erstmal nicht ausgeblendet werden...
    bolCancelSeitenfuss = False
End Sub

Private Sub Gruppenfuß1_Print(Cancel As Integer, PrintCount As Integer)
    '... außer, der Gruppenfuß wird angezeigt.
    'Dann gibt es keinen Seitenfuß.
    bolCancelSeitenfuss = True
    'Und wenn der Gruppenfuß angezeigt wird, kommt auf der nächsten Seite
    'eine neue Rechnung, also soll auch der Seitenkopf nicht angezeigt
    'werden.
    bolCancelSeitenkopf = True
End Sub

Private Sub Seitenfußbereich_Format(Cancel As Integer, _
    FormatCount As Integer)
    'Abbrechen, wenn bolCancelSeitenfuss True ist
    Cancel = bolCancelSeitenfuss
    Me!txtUebertrag = Me!txtZwischensumme
End Sub

Private Sub Seitenfußbereich_Print(Cancel As Integer, _
    PrintCount As Integer)
    'Wenn Seitenfuß, dann auf jeden Fall Seitenkopf auf nächster Seite
    bolCancelSeitenkopf = False
End Sub

Private Sub Seitenkopfbereich_Format(Cancel As Integer, _
    FormatCount As Integer)
    'Abbrechen, wenn bolCancelSeitenkopf True ist
    Cancel = bolCancelSeitenkopf
End Sub

Listing 6.11: Inhalt des Klassenmoduls des Berichts rptRechnungen

Auf diese Weise zeigt der Bericht auch Rechnungen über zwei oder mehr Seiten mit Zwischensumme, Übertrag und Gesamtsumme an (siehe Abbildung 6.48).

Abbildung 6.48: Mehrseitiger Rechnungsbericht

Rechnungen stellen ist mehr als Berichte drucken ...

Zum Schluss darf der Hinweis nicht fehlen, dass Sie Rechnungen unbedingt dokumentieren sollten - am besten, indem Sie Rechnungen und die enthaltenen Positionen in separaten Tabellen sichern. Das ist unumgänglich, wenn Sie die Rechnung später noch einmal ausdrucken möchten - ansonsten laufen Sie Gefahr, dass die Rechnung einen völlig anderen Betrag enthält, weil sich beispielsweise in der Zwischenzeit die Mehrwertsteuer erhöht hat.

Nächster Abschnitt:

6.10 Die Berichtsansicht

© 2006-2008 André Minhorst Alle Rechte vorbehalten.