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

Rechnungen mit Berichten ausgeben

Manfred Hoffbauer, Düsseldorf

Der Entwurf von Berichten durch den bloßen Einsatz von Menübefehlen und der Maus ist eine herausragende Stärke von Access. Bei den Anhängern anderer Programmiersysteme können Sie damit immer wieder neidvolle Blicke ernten. Wenn Sie dann noch in die VBA-Trickkiste greifen, bringen Sie das Fass zum überlaufen. Microsoft hat die Programmiersprache nahtlos in Berichte integriert.

VBA beim Rechnungsdruck

Eine typische Anwendung für Berichte ist der Ausdruck einer Rechnung. Die Beispieldatenbanken RechnungenMitBerichten97.mdb beziehungsweise RechnungenMitBerichten2000.mdb zu diesem Beitrag enthalten unter dem Namen repRechnungen ein Rechnungslayout, das auf den Daten der Nordwind-Datenbank basiert. Lediglich die Tabelle tblBestellungen wurde um das Feld MwSt erweitert. Es hat den Datentyp Double und das Format Prozentzahl.

Informationen im Kopfbereich

Den Bericht zum Ausdruck von Rechnungen finden Sie im Register Berichte unter dem Namen repRechnungen. Der Bericht druckt eine Rechnung passend zu einer vorhandenen Bestellung. Er hat folgenden Aufbau: Im Kopfbereich der Rechnung befinden sich Logo, Name und Anschrift des Absenders. Um die Rechnung in einem Fensterumschlag versenden zu können, wird die Anschrift des Rechnungsempfängers meistens im unteren, linken Bereich des oberen Drittels angeordnet. Am rechten Rand befinden sich Zusatzinformationen wie beispielsweise Kunden- und Bestellnummer.

Datenherkunft des Berichts

Die Daten des Berichts stammen aus mehreren Tabellen, die über eine Abfrage zusammengefügt werden. Um sich die Daten anzusehen, öffnen Sie in der Entwurfsansicht das Eigenschaftsfenster des Berichts. Klicken Sie in den Berichtseigenschaften auf das Register Daten und auf die Eingabehilfe-Schaltfläche der Eigenschaft Datenherkunft.

Access zeigt dann einen Abfrageentwurfsbereich mit der Datenherkunft des Berichts an (s. Abb. 1). Die Kopfdaten der Rechnung stammen aus den Tabellen Bestellungen und Versandfirmen. Die Daten für die Rechnungspositionen entnimmt der Bericht aus der Tabelle Bestelldetails.

Abb. 1: Die Datenherkunft des Berichts besteht aus drei verknüpften Tabellen.

Gruppierung

Wegen der Verknüpfung der Tabellen Bestellungen und Bestelldetails enthält das Abfrageergebnis für jede Rechnungsposition einen Datensatz. Bei einer Rechnung mit mehreren Positionen werden die Kopfdaten pro Position wiederholt.

Abb. 2: Im Fußbereich der Gruppierung sehen Sie die Frachtkosten und den Rechnungsbetrag.

Innerhalb des Berichts müssen Sie die Positionen einer Rechnung zu einer Gruppe zusammenfassen. Mit dem Befehl Ansicht/Sortieren und gruppieren öffnen Sie ein Fenster, mit dem die Gruppierung nach dem Feld Bestell-Nr eingestellt ist. Wegen dieser Einstellung druckt Access die Positionen einer Rechnung - soweit der Platz ausreicht - auf einer Seite aus (s. Abb. 2).

Der Detailbereich des Berichts enthält Steuerelemente zur Anzeige der Rechnungspositionsdaten.

Dies sind der Artikelname, der Einzelpreis, die Anzahl und der Rabatt. Eine Besonderheit ist das Textfeld txtPreis.

Es hat die folgende Formel als Steuerelementinhalt:

=[txtEinzelpreis]*[txtAnzahl]*(1-[txtRabatt])

Diese Berechnung ermittelt aus dem Einzelpreis, der Menge und dem Rabatt den Preis für eine Rechnungsposition. Das Beispiel verzichtet auf die Berechnung der Mehrwertsteuer. Aus einem Preis von 100 EUR, einer Menge von 1 und einem Rabatt von 10% berechnet sich ein Preis von90 EUR.

Rechnungssumme ermitteln

Die Rechnungssumme berechnet sich aus der Summe der Einzelpositionen. Die Berechnung erfolgt in einem Textfeld im Fußbereich der Gruppe Bestellung-Nr. Eine nahe liegende Idee wäre nun, das Textfeld mit folgendem Ausdruck auszustatten:

=Summe([txtPreis])

Dieser Ausdruck funktioniert aber leider nicht. Access öffnet bei einem Wechsel in die Seitenansicht einen Dialog zur Eingabe eines Wertes für txtPreis. Der Grund dafür ist, dass sich die Summenfunktion auf die Werte eines Steuerelements aus einem anderen Bereich (in diesem Fall aus dem Detailbereich) nicht anwenden lässt. Auch der Ausdruck Summe([txtEinzelpreis] * [txtAnzahl] * (1-[txtRabatt])) führt entweder zu einer Fehlermeldung oder zu fehlerhaften Werten. Es ist deshalb empfehlenswert, den Preis pro Position im Detailbereich des Berichts zu aggregieren. Das Textfeld txtSummeEinzelpositionen hat folgenden Steuerelementinhalt:

=[txtEinzelpreis]*[txtAnzahl]*(1-[txtRabatt])

oder einfacher

=[txtPreis]

Außerdem ist die Eigenschaft Laufende Summe für dieses Textfeld auf Über Gruppe eingestellt. Das führt dazu, dass Access den Wert des Feldes über alle Rechnungspositionen aggregiert. Erst beim Wechsel zur nächsten Bestellung beginnt die Summenbildung wieder bei 0. Damit der Rechnungsbetrag im Gruppenfuß angezeigt werden kann, erhält das Textfeld txtSumme folgenden Ausdruck:

=txtSummeEinzelpositionen

Es zeigt also einfach den Wert des Feldes txtSummeEinzelpositionen, also die Summe aller Rechnungspositionen an.

Rechnungsposition hinzufügen

Bei Rechnungen mit mehreren Positionen kann es manchmal hilfreich sein, wenn sich einzelne Posten im Gespräch mit anderen Personen einfach identifizieren lassen. Aus diesem Grund enthält der Detailbereich das Textfeld txtPosition.

Abb. 3: Über das Register Ereignis geben Sie die Prozedur für das Beim Drucken-Ereignis ein.

Rechnungspositionen zählen

Der Steuerelementinhalt dieses Textfeldes ist leer. Es erhält seinen Wert über VBA-Befehle, die den Wert des Textfeldes pro Position um eins erhöhen. Zur Eingabe des VBA-Befehls öffnen Sie das Eigenschaftsfenster des Detailbereichs. Klicken Sie auf das Register Ereignis und die Eingabehilfe-Schaltfläche für das Ereignis Beim Drucken (s. Abb. 2)

Ergänzen Sie die Prozedur mit der folgenden Anweisung:

If PrintCount = 1 Then txtPosition = txtPosition + 1

Diese Anweisung erhöht den Wert des Textfeldes txtPosition um den Wert 1. Access durchläuft die Ereignisprozedur für das Beim Drucken-Ereignis unter bestimmten Umständen mehrfach und erhöht dabei jeweils den Wert der Variablen PrintCount. Mit der Bedingung If PrintCount = 1 erreichen Sie, dass die Positionsnummern nur einmal pro Seite addiert werden.

Zähler zurücksetzen

Eine wichtige Anforderung an die Rechnungsposition besteht darin, dass die Zählung bei jeder Bestellung mit Eins beginnt. Andernfalls würden Sie mit dem Steuerelement die Anzahl der Positionen von der ersten bis zur letzten Rechnung fortlaufend nummerieren.

Um die Positionsnummer für jede neue Rechnung zurückzusetzen, müssen Sie die folgende Anweisung für die Ereigniseigenschaft Beim Drucken des Bereichs Bestell-Nr-Kopfbereich eingeben:

txtPosition = 0

Access führt diesen VBA-Code für jede neue Bestellnummer einmal aus.

Praxis-Tipp

Statt mit VBA können Sie die Rechnungsposition auch als laufende Summe realisieren. Fügen Sie dem Detailbereich ein Feld namens txtRechnungsposition und dem Steuerelementinhalt =1 hinzu. Öffnen Sie das Eigenschaftsfenster für dieses Steuerelement und wählen Sie für die Eigenschaft Laufende Summe den Wert Über Gruppe. (

Unschöne Seitenumbrüche
verhindern

Bei Rechnungen mit vielen Positionen kann wie in Abb. 4 der Fall eintreten, dass die Summenzeilen auf die zweite Druckseite rutschen, obwohl dort keine Rechnungspositionen zu drucken sind. Die Ursache für diesen unschönen Effekt ist schnell gefunden: Beim Ausdruck der Rechnung versucht Access so viele Positionen wie möglich auf eine Seite zu drucken. Der verfügbare Platz berechnet sich aus der Seitenhöhe abzüglich der Höhen von Gruppenkopf-, Gruppenfuß-, Seitenkopf- und Seitenfußbereich, wobei der Gruppenfußbereich natürlich nur dann eine Rolle spielt, wenn er auf der aktuellen Seite auch gedruckt wird.

Abb. 4: Wenn nur die Summenzeilen auf die zweite Seite rutschen, dann sieht das nicht gerade elegant aus.

Im Fall der Rechnung ist es aber gewünscht, dass der verbleibende Platz nicht vollständig durch Wiederholungen des Detailbereichs verbraucht wird. Um beispielsweise auf jeder Seite nur 10 Datensätze zu drucken, benötigen Sie nur ein kleines VBA-Programm. Ein Beispiel finden Sie in dem Bericht repRechnungen10.

Ein Zähler für Datensätze

Das Zählen der Rechnungsdatensätze pro Seite erfolgt über die Integervariable AnzahlDatensätze. Damit das Beispiel mit den weiter oben beschriebenen Lösungen konform läuft, sollte das Zählen der Datensätze beim Formatieren des Berichts erfolgen.

Die Addition des Zählers übernimmt die folgende Anweisung:

AnzahlDatensätze = AnzahlDatensätze + 1

Fügen Sie diese Anweisung in die Ereignisprozedur Beim Formatieren des Detailbereichs ein. Außerdem sollten Sie die Variable im Kopfbereich des Moduls definieren:

Dim AnzahlDatensätze As Integer

Aber zurück zum Detailbereich. Der Zähler ermittelt die Anzahl der Wiederholungen des Detailbereichs. Wenn die Zahl 10 erreicht ist, dann soll Access einen Seitenumbruch durchführen. Dies erreichen Sie mit folgender Anweisung:

If AnzahlDatensätze = 10 Then

    Me.Section("Detailbereich"). _
        ForceNewPage = 1

Else

    Me.Section("Detailbereich"). _
        ForceNewPage = 0

End If

Zähler zurücksetzen

Abb. 5: Bei diesem Layout steht die Summenzeile nicht alleine auf einer Seite.

Da Access vor dem elften Datensatz einen Seitenumbruch durchführt, können Sie den Zähler sehr schön in der Ereignisprozedur Beim Formatieren des Seitenkopfbereichs zurücksetzen.

Fügen Sie dort folgende Anweisung hinzu:

AnzahlDatensätze = 0

Damit beginnt die Zählung wieder von vorne. Falls Sie diese Anweisung einmal vergessen sollten, dann druckt Access nur auf der ersten Seite zehn Datensätze und auf allen Folgeseiten so viele Datensätze, wie auf die Seite passen.

Mit diesen Änderungen erreichen Sie, dass auf der Druckseite, auf der Access die Rechnungssumme ausdruckt, auf jeden Fall vorher auch mindestens eine Position gedruckt wird (s. Abb. 5). In Quellcode 1 finden Sie die Prozeduren des Beispielberichts repRechnungen10.

Wird fortgesetzt...

Wie bei nicht enden wollenden Fernsehserien gibt es auch bei Druckberichten manchmal die Anforderung, dass auf eventuelle Fortsetzungen hingewiesen wird. Damit vermeiden Sie beispielsweise, dass jemand die letzten Seiten mit den unangenehmen Wahrheiten "vergisst".

Insbesondere bei Dokumenten wie beispielsweise einer Rechnung kommt es darauf an, dass der Empfänger ihre Vollständigkeit überprüfen kann. Eine einfache Lösung für dieses Problem ist ein Textfeld, mit dem Sie auf eventuell vorhandene Folgeseiten hinweisen.

Option Compare Database

Option Explicit

Dim AnzahlDatensätze As Integer

Private Sub Detailbereich_Print(Cancel As Integer, PrintCount As Integer)

    If PrintCount = 1 Then txtPosition = txtPosition + 1

End Sub

Private Sub Gruppenkopf0_Print(Cancel As Integer, PrintCount As Integer)

    txtPosition = 0

    AnzahlDatensätze = 0 'Anzahl Datensätze zurücksetzen.

End Sub

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

    AnzahlDatensätze = AnzahlDatensätze + 1 'Anzahl Datensätze zählen.

    If AnzahlDatensätze = 10 Then 'Seitenumbruch

        Me.Section("Detailbereich").ForceNewPage = 1

    Else 'kein Seitenumbruch

        Me.Section("Detailbereich").ForceNewPage = 0

    End If

End Sub

Quellcode 1

Für die Anzeige des Fortsetzungstextes benötigen Sie ein Textfeld, das am besten im Seitenfußbereich aufgehoben ist. Die bedingte Anzeige des Fortsetzungstextes erreichen Sie mit folgendem Steuerelementinhalt:

=Wenn([Seite]<[Seiten];"- Seite "+Str([Seite]+1) & "-")

Der Ausdruck wird direkt in das Eigenschaftsfenster (und nicht in VBA) eingegeben. Aus diesem Grund sind die deutsche Schreibweise der Eigenschaften und die Verwendung von Semikola als Trennzeichen erforderlich.

Die Eigenschaft Seite enthält die Nummer der aktuellen Druckseite und die Eigenschaft Seiten die Gesamtzahl der Druckseiten.

Wenn also die Nummer der aktuellen Seite kleiner als die Gesamtzahl der Seiten ist, zeigt das Textfeld den in Anführungszeichen enthaltenen Text und sonst einen leeren Text an.

Wenn Sie einen Bericht mit diesem Ausdruck öffnen, dann druckt Access unten auf Seite 1 den Text

- Seite 2 - 

aus. Beim Ausdruck einer einzelnen Rechnung druckt Access auf jeder Seite außer der letzten den Hinweis auf die jeweilige Folgeseite. Für Berichte, die mehrere Rechnungen nacheinander drucken, ist dieses Verfahren aber leider nicht geeignet. Hier müsste Access den Seitenzähler nach dem Ausdruck der Rechnungssumme zurücksetzen. Da es hierfür keinen Befehl gibt, wird eine Programmierung mit VBA erforderlich.

Seitennummerierung pro
Rechnung

Die Schwierigkeit bei der Seitennummerierung pro Rechnung besteht darin, dass Access für die Ermittlung der Seitenzahlen pro Gruppe keine Funktion hat. Eine einfache Lösung für dieses Problem besteht darin, die Seitennummerierung mit jeder Rechnung von vorne zu beginnen.

Sie erreichen dies mit der Festlegung eines VBA-Befehls für das Ereignis Beim Drucken des Gruppenfußbereichs. Geben Sie folgende Anweisung ein:

Me.Page = 0

Private Sub Report_Open(Cancel As Integer)

    DoCmd.SetWarnings False

    DoCmd.RunSQL "Delete * From tblAnzahlSeitenJeBestellnummer;"

    DoCmd.SetWarnings True

    Set db = DBEngine.Workspaces(0).Databases(0)

    Set rstAnzahlSeitenJeBestellnummer = _
        db.OpenRecordset("tblAnzahlSeitenJeBestellnummer", dbOpenDynaset)

End Sub

Quellcode 2

Die Page-Eigenschaft eines Berichts hat auch schreibenden Zugriff. Durch die Zuweisung im Gruppenfuß legen Sie die Seitenzahl für die jeweils nächste Rechnung fest. Bei der Ausführung des Seitenkopfbereichs erhöht Access den Wert um eins, sodass die Page-Eigenschaft auf der nächsten Rechnung den Wert 1 hat.

Um den Wert anzuzeigen, sollten Sie ein Textfeld mit dem folgenden Steuerelementinhalt im Kopfbereich der Rechnung positionieren:

=[Seite]

Bei einem Wechsel in die Seitenansicht zeigt Access die Seitenzahl pro Rechnung an.

Gesamtseiten pro Rechnung

Eine kleine Nuance zu der bisherigen Lösung hat eine große Wirkung. Wenn die Anforderung darin bestehen sollte, der aktuellen Seite pro Rechnung auch die Gesamtzahl der Seiten pro Rechnung gegenüberzustellen, dann benötigen Sie ein VBA-Programm.

Eine funktionierende Lösung findet sich in der Microsoft Knowledge Base unter der Artikelnummer 131937. Wir haben diese Access-2.0-Lösung für Sie auf Access 97 und 2000 portiert und dem vorliegenden Beispiel angepasst. Das Ergebnis finden Sie unter dem Namen repRechnungenMitSeitenzahlen in der Beispieldatenbank.

Bericht öffnen und Tabelle leeren

Das Hauptproblem bei der angestrebten Lösung besteht darin, die Anzahl der Druckseiten pro Rechnung herauszufinden.

Da hierbei möglichst viele Sonderfälle beim Ausdruck von Berichten berücksichtigt werden sollen, können Sie die Seitenzahl nur während des Formatierens ermitteln. Als Zwischenspeicher für die Seitenzahl pro Rechnung dient die Tabelle tblAnzahlSeitenJeBestellnummer.

Diese Tabelle hat die beiden Felder Bestell-Nr und AnzahlSeiten. Beides sind Zahlenfelder mit der Feldgröße Long Integer. Das Feld Bestell-Nr ist der Primärschlüssel der Tabelle.

Das Füllen der Tabelle erfolgt während der Formatierung des Berichts. Das Klassenmodul zum Bericht definiert zwei Variablen. Die Variable db hat den Typ DAO.Database. Die Variable rstAnzahlSeitenJeBestellnummer hat den Typ Recordset. Beide Variablen kommen erstmals in der Ereignisprozedur Beim Öffnen des Berichts zum Einsatz (s. Quellcode 2).

Beim Öffnen des Berichts wird die Tabelle tblAnzahlSeitenJeBestellnummer zunächst einmal geleert. Anschließend öffnet das Programm das Recordset namens rstAnzahlSeitenJeBestellnummer mit der Tabelle.

Tabelle mit Seitenzahlen füllen

Der Programmcode zum Füllen der Tabelle wird während des Formatierens des Seitenfußes ausgeführt. Die folgende Anweisung prüft zunächst, ob es für die aktuelle Bestellnummer in der Tabelle rstAnzahlSeitenJeBestellnummer schon einen Datensatz gibt:

rstAnzahlSeitenJeBestellnummer.FindFirst "[Bestell-Nr] = " & Me.[Bestell-Nr]

Function AnzahlSeitenJeGruppe()

   rstAnzahlSeitenJeBestellnummer.FindFirst "[Bestell-Nr] = " & Me![Bestell-Nr]

   If Not rstAnzahlSeitenJeBestellnummer.NoMatch Then

      AnzahlSeitenJeGruppe = Me.Page & "/" _
          & rstAnzahlSeitenJeBestellnummer![AnzahlSeiten]

   End If

End Function

Quellcode 3

Abb. 6: Kleine Ursache, große Wirkung: Um diesen Text pro Rechnung drucken zu können, ist ein VBA-Programm erforderlich.

Falls es noch keinen Datensatz mit der Bestellnummer gibt, wird er mit .AddNew und .Update hinzugefügt. Falls bereits ein Datensatz vorhanden ist, wird er mit .Edit und .Update aktualisiert. In beiden Fällen speichert Access die mit Me.Page ermittelte aktuelle Druckseite des Berichts zu der Bestellnummer ab. So erhalten Sie eine Tabelle, die pro Bestellnummer die Nummer der jeweils letzten gedruckten Seite speichert.

Normalerweise würde die Page-Eigenschaft die Nummer der Seite innerhalb des Berichts ermitteln. Damit Sie stattdessen die Seitennummerierung innerhalb einer Rechnung erhalten, müssen Sie die Format-Ereigniseigenschaft des Gruppenkopfbereichs um folgende Anweisung ergänzen:

Me.Page = 1

Damit erreichen Sie, dass die Zählung bei jeder neuen Rechnung von vorne beginnt. Das Ergebnis aller Bemühungen besteht nun in einer Tabelle, die pro Bestellnummer die Anzahl der Druckseiten enthält. Aber wie gelangt der Ausdruck Seite 1 von 2 in den Bericht (s. Abb. 6)?

Seitennummerierung drucken

Der Ausdruck der Seitennummerierung erfolgt über das Textfeld txtSeitenzahl im Seitenfußbereich des Berichts. Der Steuerelementinhalt des Textfeldes ruft die Funktion AnzahlSeitenJeGruppe auf:

="Seite " & AnzahlSeitenJeGruppe()

Diese Funktion ist ebenfalls im Klassenmodul des Berichts definiert und sieht wie in Quellcode 3 aus.

Die Funktion sucht mittels der FindFirst-Methode nach dem Datensatz, in dem die Seitenzahl für die aktuelle Bestellnummer hinterlegt ist. Falls dieser gefunden wird, setzt die Funktion eine Zeichenkette mit der Form 1 / 2 zusammen.

Dabei ist 1 die aktuelle Seitenzahl innerhalb der Rechnung und 2 die Gesamtzahl der Seiten pro Rechnung. Bei einseitigen Rechnungen liefert die Funktion den Wert 1 / 1.

Option Compare Database

Option Explicit

Dim db As DAO.Database

Dim rstAnzahlSeitenJeBestellnummer As Recordset

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

    Me.Page = 1

End Sub

Private Sub Seitenfußbereich_Format(Cancel As Integer, FormatCount As Integer)

    rstAnzahlSeitenJeBestellnummer.FindFirst "[Bestell-Nr] = " & Me.[Bestell-Nr]

    If Not rstAnzahlSeitenJeBestellnummer.NoMatch Then

        If rstAnzahlSeitenJeBestellnummer![AnzahlSeiten] < Me.Page Then

            rstAnzahlSeitenJeBestellnummer.Edit

            rstAnzahlSeitenJeBestellnummer![AnzahlSeiten] = Me.Page

            rstAnzahlSeitenJeBestellnummer.Update

        End If

    Else

        rstAnzahlSeitenJeBestellnummer.AddNew

        rstAnzahlSeitenJeBestellnummer![Bestell-Nr] = Me![Bestell-Nr]

        rstAnzahlSeitenJeBestellnummer![AnzahlSeiten] = Me.Page

        rstAnzahlSeitenJeBestellnummer.Update

    End If

End Sub

Quellcode 4

Bericht mit zwei Phasen

Der Bericht basiert darauf, dass Access mehrere Formatierungsdurchläufe hat. Im ersten Durchlauf wird die Tabelle mit den Seitenzahlen gefüllt, im zweiten Durchlauf erfolgt dann der Ausdruck.

Sie können dies leicht ausprobieren, indem Sie für die Ereigniseigenschaft Beim Formatieren des Berichtsfußes eine Prozedur mit folgendem Inhalt hinterlegen:

MsgBox ("Berichtsfuß wird formatiert.")

Beim Öffnen des Berichts durchläuft Access dann die gesamte Formatierung, zeigt die Meldung an und erst danach wird die Seitenansicht geöffnet.

Bevor Sie also die erste Druckseite auf dem Bildschirm sehen, hat Access schon alle Druckseiten einmal formatiert.

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:

Gruppensummen ohne Gruppen im Berichtsfuß

Berichte manuell füllen

Termine in Berichten darstellen

© 2003-2015 André Minhorst Alle Rechte vorbehalten.