Im Report gruppieren und rechnen
Report-Objekt: Format-Ereignis; Funktionszuweisungen in ControlSource-Eigenschaft; Format-Funktion;
Date-Typ; Gruppieren (Report);
Für das Finanzamt soll eine Übersicht über das Anlagevermögen (Tabelle BGA der Beispieldatenbank dieses
Kapitels) erstellt werden und zwar getrennt für Anschaffungen unter- und oberhalb der 400-Euro-Grenze
(bezogen auf den Netto-Anschaffungspreis).
Die hier vorgestellte Lösung zeigt, wie man die Fähigkeiten des Berichtsgenerators sinnvoll durch VBA-
Code ergänzen kann.
Oberfläche
Öffnen Sie einen neuen Bericht, dessen Datensatzquelle auf BGA zu setzen ist. Aktivieren Sie über das
Kontextmenü die Ansicht Berichtskopf/-fuß.
Bestücken Sie die Oberfche wie folgt mit Bezeichnungs- und Textfeldern (von oben nach unten, von links
nach rechts):
Berichtskopf Ein Bezeichnungsfeld (Bezeichnungsfeld0)
Seitenkopf Vier Bezeichnungsfelder ( Bezeichnungsfeld1 bis Bezeichnungsfeld4)
Detailbereich Vier Textfelder (Text1 bis Text4), Text2 und Text4 werden über ihre Steuerelement-
inhalt-Eigenschaft direkt mit den Feldern Name und Netto verbunden.
Gruppenkopf Um, wie abgebildet, einen Gruppenbereich für das Kriterium »Netto < 400« einzufügen,
wählen Sie den Befehl Gruppieren und sortieren (Registerkarte Gruppierung und Sum-
men) und stellen im entsprechenden Dialog die Sortierkriterien gemäß der Abbildung
ein.
Abbildung 4.28 Entwurfsansicht des Berichts
229
Praxisbeispiele
Kapitel 4: Berichte
Abbildung 4.29 Dialog zum Sortieren und Gruppieren
Innerhalb der Gruppe wird nach fallenden Nettobeträgen geordnet, bei Gleichheit wird das Rechnungs
datum herangezogen. Die variable Zwischenüberschrift erscheint in einem später anzubindenden Textfeld
(Text5).
Gruppenfuß Ein vorerst ungebundenes Textfeld (Text6) dient der Anzeige der jeweiligen Gruppen-
summe.
Seitenfuß Am unteren Rand rechts soll die Seitenziffer (und die Gesamtanzahl der Seiten) in einem
Textfeld (Text7) bereitgestellt werden. Den Steuerelementinhalt weisen wir am besten mit
dem Ausdrucks-Editor zu (»Gebräuchliche Ausdrücke«, »Seite N von M«, Schaltfläche
»Einfügen«).
Berichtsfuß Hier soll in einem, vorerst ungebundenen, Textfeld (Text8) die Gesamtsumme erscheinen.
Bereits in diesem Zwischenstadium können Sie den Bericht erstmalig starten. Name und Nettopreis aller
Geräte müssen, in zwei Gruppen aufgeteilt, aufgelistet werden. Vergessen Sie aber nicht, die Format-Eigen-
schaft der Textfelder (Text4 bis Text9 ) auf Währung bzw. Euro umzustellen.
Quelltext
Private nrg, nrb As Integer ' Zähler für lfd. Nr
Private Function calcShortDate(RDatum As Date) As String ' Kurzform Monat/Jahr aus Datum ermitteln
calcShortDate = Format$(RDatum, "mm\/yy")
End Function
Private Function num(netto As Currency) As String ' zählt BGA u. GWG getrennt
If netto >= 400 Then
nrg = nrg + 1
num = Str(nrg) & "." ' BGA
Else
nrb = nrb + 1
num = Str(nrb) & "." ' GWG
End If
End Function
Private Function gHeader(netto As Currency) As String ' setzt Gruppenüberschrift
If netto < 400 Then
gHeader = "II. Geringerwertige Gebrauchsgüter (GWG)"
Else
gHeader = "I. Betriebsgrundausrüstungen (BGA)"
End If
End Function
230
Private Sub Gruppenkopf0_Format(Cancel As Integer, FormatCount As Integer)
nrg = 0 ' Zähler bei Gruppenanfang initialisieren
nrb = 0
End Sub
Private Sub Report_Open(Cancel As Integer) ' Start
' Zuweisen der Steuerelementeinhalte:
Text1.ControlSource = "=num([Netto])" ' lfd. Nr. innerhalb Gruppe
Text3.ControlSource = "=calcShortDate([RDatum])"
Text5.ControlSource = "=gHeader([Netto])" ' Zwischenüberschrift für Gruppen
Text6.ControlSource = "=Sum([Netto])"
Text8.ControlSource = Text6.ControlSource ' Endsumme
End Sub
Test
Öffnen Sie den Bericht und überzeugen Sie sich von seiner Funktionsfähigkeit:
Abbildung 4.30 Die erste Seite des Berichts
231
Praxisbeispiele

Get Microsoft Office Access 2007-Programmierung - Das Handbuch now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.