Startseite > Tipps & Tricks > Berichte in Access
Team-Moeller.de - Datenbankentwicklung und mehr ...

Berichte in Access

Berichte in Access

Es gibt eine Vielzahl von Fragestellungen rund um die Erstellung von Berichten mit Access. Einige interessante Aspekte möchte ich hier beleuchten:

 

 

Datensätze nummerieren

 

Frage:

Wie kann ich die Datensätze in einem Bericht nummerieren?
 

Antwort:

Du fügst ein neues, ungebundenes Textfeld ein. Als Steuerelementinhalt trägst Du "=1" ein. Jetzt setzt Du die Eigenschaft "Laufende Summe" auf "Über Alles". Fertig.
 

ZusatzInfo:

Wenn Du für diese Eigenschaft den Wert "Über Gruppe" auswählst beginnt die Nummerierung in jeder Gruppe neu mit 1.
zurück nach oben

 

  Variable Höhe für Textfelder
 

Frage:

Ich habe Textfelder mit unterschiedlich viel Inhalt. Wenn ich die Textfelder sehr groß mache, wird zwar alles angezeigt, bei wenig Inhalt entstehen jedoch Leerräume. Mache ich die Textfelder klein vermeide ich zwar die Leerräume, es wird aber nicht alles angezeigt. Was kann ich tun?
 

Antwort:

Du stellst die Eigenschaften "Vergrößerbar" und "Verkleinerbar" des Textfeldes auf "Ja".
  ZusatzInfo: Außerdem musst Du diese Eigenschaften auch für den Bereich des Berichts, in dem sich dein Textfeld befindet, setzen.
zurück nach oben

 

  Zeilenweise Hintergrundfarbe ändern
 

Frage:

Wie kann ich die Datensätze abwechselnd mit einem grauen Hintergrund versehen um so die Lesbarkeit zu erhöhen?
 

Antwort:

Dazu fügst Du den folgenden Code im Ereignis "Beim Formatieren" ein:

If Me.Section(0).BackColor = 16777215 Then
    Me.Section(0).BackColor = 12632256  '(weiß)
Else
    Me.Section(0).BackColor = 16777215  '(grau)
End If
  ZusatzInfo:  
zurück nach oben

 

  Druckerauswahl-Dialog von Access öffnen
 

Frage:

Ich möchte vor dem Ausdruck einen anderen Drucker auswählen. Wie kann ich den Druck-Dialog von Access starten?
 

Antwort:

Du öffnest den Bericht in der Vorschauansicht:

DoCmd.OpenReport "rptDeinBericht", acPreView

und benutzt dann den folgenden Befehl:

DoCmd.RunCommand acCmdPrint
  ZusatzInfo: Wenn der Bericht nicht in der Seitenansicht geöffnet wird greift der Druck-Dialog auf das aktuell geöffnete Objekt zu.
zurück nach oben

 

  Bestimmte Seite eines Berichts drucken
 

Frage:

Ich möchte nur eine bestimmte Seite eines Berichts drucken. Was muss ich tun?
 

Antwort:

Du öffnest den Bericht in der Vorschauansicht:

DoCmd.OpenReport, "rptDeinBericht", acPreView

und verwendest den Befehl "PrintOut", z.B.

DoCmd.PrintOut acPages, 10, 10
  ZusatzInfo: Weitere Informationen zu diesem Befehl gibt es in der Access-Hilfe.
zurück nach oben

 

  Mehrere 'OpenArgs' übergeben
 

Frage:

Seit Access 2002 gibt es die Möglichkeit einen Bericht mit 'OpenArgs' zu öffnen. Wie kann ich mehrere 'OpenArgs' übergeben?
 

Antwort:

Du kannst alle Argumente, durch ein spezielles Zeichen getrennt, in einen String packen und als 'OpenArgs' übergeben. Innerhalb des Berichts zerstückelst Du diesen String wieder in seine Einzelteile.

  ZusatzInfo: Dabei könnten Dir die Funktionen 'Join' und 'Split' behilflich sein.
zurück nach oben

 

  Keine 'OpenArgs' bis Access 2000
 

Frage:

Bis einschließlich Access 2000 gibt es beim Öffnen eines Berichts nicht die Möglichkeit, 'OpenArgs' zu übergeben. Welche alternativen Wege gibt es?
 

Antwort:

Du rufst den Bericht von einem Formular aus auf. Auf diesem Formular platzierst Du ein unsichtbares Textfeld. In dieses Textfeld schreibst Du vor dem Öffnen des Berichts die 'OpenArgs' hinein. Jetzt öffnest Du den Bericht und greifst auf das Textfeld im Formular zu.

  ZusatzInfo: Wenn das geöffnete Formular stört kannst Du dieses unsichtbar machen.
zurück nach oben

 

  Recordset als Datenquelle
 

Frage:

Gibt es eine Möglichkeit, ein Recordset, dass per Programmcode erzeugt wurde als Daten-Quelle für einen Report zu verwenden?
 

Antwort:

1. Schritt: Du deklarierst in einem Standard-Modul eine globale Variable vom Typ Recordset 

Public rstRpt as DAO.Recordset


2. Schritt: Du erzeugst Dein Recordset und öffnest den Bericht

Set rstRpt = CurrentDb.OpenRecordset("SELECT * FROM tbl_DeineTabelle;")
DoCmd.OpenReport "rpt_DeinBericht", acViewPreview
rstRpt.Close
Set rstRpt = Nothing

3. Schritt: Im Open-Ereignis des Berichts weist Du dem Bericht als Datenquelle das Recordset zu

Me.RecordSource = rstRpt.Name
  ZusatzInfo: Das Ganze lässt sich noch mit etwas Fehlerbehandlung ausschmücken.
zurück nach oben

 

  Neue Seite nach x Datensätzen
 

Frage:

Wie kann ich jeweils nach x Datensätzen im Detailbereich eine neue Seite beginnen?
 

Antwort:

- Du fügst ein zusätzliches Textfeld ein (txtCounter)
- Dieses Textfeld formatierst Du unsichtbar.
- Dort trägst Du als Steuerelementinhalt ein: "=1"
- Die Eigenschaft "Lfd. Summe" stellst Du auf "Über Alles".
- Unterhalb der Daten des Detaildatensatzes fügst Du einen Seitenumbruch ein (brkDetails)
- Beim Ereignis Formatieren des Detailbereichs fügst Du folgenden Code ein:

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

    If Int(Me!txtCounter / 10) = Me!txtCounter / 10 Then
        Me!brkDetails.Visible = True
    Else
        Me!brkDetails.Visible = False
    End If

End Sub
  ZusatzInfo: Bei jedem 10. Datensatz wird der Seitenumbruch sichtbar gemacht. Sonst bleibt er unsichtbar (und verliert somit seine Wirkung).
zurück nach oben

 

  Mehrere Berichte, ein Druckauftrag
 

Frage:

Wie kann ich mehrere Berichte mit nur einem Druckauftrag drucken um diese z.B. als Fax zu versenden?
 

Antwort:

Du erstellst einen neuen Bericht und fügst die zu druckenden Berichte als Unterberichte in diesen Bericht ein.
Wenn Du jetzt den neuen Bericht druckst werden alle Berichte mit nur einem Druckauftrag gedruckt.

  ZusatzInfo: Die Seitenköpfe und -füsse werden in Unterberichten nicht gedruckt. Du musst diese Informationen ggfs. in den Berichtskopf bzw. -fuss verschieben.
zurück nach oben

 

  Seitenfuss auf letzter Seite ausblenden
 

Frage:

Ich habe im Seitenfuss drei Punkte stehen um anzudeuten, dass weitere Seiten folgen. Wie kann ich den Seitenfuss auf der letzten Seite ausblenden?
 

Antwort:

- Beim Ereignis Formatieren des Seitenfusses fügst Du folgenden Code ein:

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

    If Me.Page = Me.Pages Then
        Cancel = True
    End If

End Sub
  ZusatzInfo: Damit der Code funktioniert müssen Sie ein Steuerelement mit dem Inhalt "=[Seiten]" einfügen. Dadurch wird die Variable "Pages" mit Inhalt gefüllt.
zurück nach oben

 

  Deckblatt für Bericht
 

Frage:

Wie kann ich ein Deckblatt für einen Bericht erstellen?
 

Antwort:

  • Du fügst einen Berichtskopf ein.
  • Hierin platzierst Du Deine Informationen für das Deckblatt.
  • In den Eigenschaften des Berichtskopfs stellt Du bei "Neue Seite" den Wert "nach Bereich" ein.
  ZusatzInfo:  
zurück nach oben

 

  Bericht als FAX versenden
 

Frage:

Wie kann ich einen Bericht direkt als Fax versenden?
 

Antwort:

Das ist im wesentlichen vom verwendeten Fax-Programm abhängig. Nicht alle Programme bieten die Möglichkeit per VBA die Fax-Nummern anzugeben.
Wenn Ihr Programm die Möglichkeit unterstützt, hilft ein Blick in die Dokumentation. I.d.R. wird die Fax-Nummer in die Registry geschrieben und der Bericht gedruckt. Das Fax-Programm verschickt dann den Bericht an die eingestellte Fax-Nummer.

  ZusatzInfo: Wie Sie Ihre Berichte mit FRITZ!Fax 3 versenden können Sie in diesem Whitepaper von Gunter Avenius nachlesen.
zurück nach oben

 

  Snapshot-Datei: Probleme in Access 2003
 

Frage:

Wenn in Access 2003 eine Shnapshot-Datei erstellt werden soll versagt der Code, der unter Access 2002 funktioniert. Wo liegt der Fehler?
 

Antwort:

In Access 2002 kann mit folgendem Code eine SnapShot-Datei erstellt werden:

DoCmd.OutputTo acOutputReport, "MeinBericht", acFormatSNP

Unter Access 2003 versagt dieser Code. Es erscheint eine Fehlermeldung.
Wenn man statt der Konstante acFormatSNP den Text "Snapshot Format" als Parameter an die Funktion übergibt, funktioniert alles wieder wie gewohnt.

  ZusatzInfo:  
zurück nach oben

 

  Problem mit Berichts-Assistent
 

Frage:

Wenn ich versuche mit dem Assistenten einen Bericht zu erstellen, bricht dieser den Vorgang ab. Es erscheint folgende Fehlermeldung: "Der Assistent konnte Ihren Bericht nicht erstellen."
 

Antwort:

Sorge dafür, dass der User einen Standarddrucker hat.
Manchmal hilft es auch testweise einen anderen Drucker zu installieren.
Probleme kann es auch geben, wenn ein Netzdrucker als Standarddrucker definiert ist und die Online-Verbindung zu diesem unterbrochen ist.

  ZusatzInfo: Der installierte Standarddrucker muss physikalisch nicht vorhanden sein.
zurück nach oben

 

Letzte Bearbeitung: 26.08.2015, 20:28

Microsoft MVP - Thomas Möller


06.05.2017:
TM-VBALineNumbers
Version 1.29.01 bereitgestellt.


27.03.2016:
TM VBA-Inspector:
Installationsroutine überarbeitet.


23.05.2014:
TM-RebuildDatabase
Version 1.75 bereitgestellt.


07.12.2014:
TM-DatenKlassenGenerator
Version 3.55 bereitgestellt.


Powered by CMSimple - Template by CMSimple-Styles.com - Autor:Thomas Möller