Berichterstellung: Wie kann ich Berichte in Access erstellen und anpassen?

Berichte.
Unterschätzt, aber oft das Einzige, was beim Kunden auf dem Schreibtisch landet.
Wenn der Bericht gut aussieht, wirkt die ganze Datenbank professionell. Wenn nicht – eben nicht.

Ich zeig Dir hier, wie Du Berichte in Access richtig erstellst und anpasst.
Mit einem Fokus auf das, was wichtig ist: Flexibilität, Automatisierung und saubere Datenbasis.

Wann nutze ich Berichte – und wann nicht?

Berichte sind gut für:

  • Druckausgaben (PDF, Papier, Mail)
  • strukturierte Zusammenfassungen
  • Etiketten, Listen, Rechnungen
  • exportierbare Ergebnisse mit Layout

Nicht geeignet für:

  • interaktive Analysen (dafür: Formulare oder Power BI)
  • Echtzeitfilterung durch Benutzer (besser mit Formular und Unterformular)

Bericht erstellen: Klassisch mit Assistent

Klar, kannst Du machen:

  1. Tabellenauswahl
  2. Felder ziehen
  3. Gruppierung, Sortierung
  4. Fertig

Taugt als Basis.
Aber spätestens bei komplexen Layouts oder Business-Logik musst Du ran – mit VBA.

Bericht per VBA öffnen

DoCmd.OpenReport "rptUmsatzProKunde", acViewPreview, , "Jahr=2024", acWindowNormal

Wichtig:

  • acViewPreview: Vorschau
  • letzter Parameter: Fensterstil (Modal, Popup etc.)
  • WHERE-Klausel als Filter (funktioniert wie WHERE in SQL)

Bericht dynamisch per VBA erstellen

Willst Du keinen statischen Bericht, sondern eine flexible Lösung – z. B. für einen Export-Button? Dann brauchst Du:

Schritt 1: Berichtsvorlage mit Platzhaltern

Erstelle einen Bericht mit gebundenen Feldern.
Verwende z. B. ein leeres Abfrage-Resultat als Datenquelle:

SELECT * FROM qryLeererDatensatz WHERE 1=0

So bleibt das Layout erhalten, aber Du kannst später per Code Daten reindrücken.

Schritt 2: RecordSource zur Laufzeit setzen

Public Sub BerichtMitSQL()
    Dim strSQL As String
    strSQL = "SELECT Kunde, SUM(Umsatz) AS Gesamt FROM tblUmsaetze WHERE Jahr=2024 GROUP BY Kunde"

    DoCmd.OpenReport "rptUmsatzFlex", acViewPreview
    Reports!rptUmsatzFlex.RecordSource = strSQL
End Sub

Funktioniert nur, wenn der Bericht bereits geöffnet ist – Access lädt die Datenquelle beim Öffnen.

Alternativ: TempVars als Datenquelle-Filter

TempVars.Add "FilterJahr", 2024
DoCmd.OpenReport "rptUmsatzMitFilter", acViewPreview
TempVars.Remove "FilterJahr"

Im Bericht dann in der Abfrage:

SELECT * FROM tblUmsaetze WHERE Jahr=TempVars!FilterJahr

Flexibel, sauber, verständlich.

Berichte mit Parametern aufrufen

Mach’s modular. Beispiel:

Public Sub PrintRechnung(KundenID As Long)
    Dim strFilter As String
    strFilter = "KundenID=" & KundenID

    DoCmd.OpenReport "rptRechnung", acViewPreview, , strFilter
End Sub

So kannst Du von überall aufrufen – Formular, Button, Menü.

Ausgabe automatisieren (PDF, Mail, Datei)

Public Sub BerichtAlsPDF()
    Dim strPfad As String
    strPfad = CurrentProject.Path & "\Bericht_" & Format(Date, "yyyymmdd") & ".pdf"

    DoCmd.OutputTo acOutputReport, "rptUmsatzProKunde", acFormatPDF, strPfad, False
End Sub

Läuft stabil.
Für E-Mail-Versand mit Outlook brauchst Du einen kleinen Wrapper.

Layout-Anpassungen per VBA?

Nur sehr eingeschränkt.
Access ist nicht Excel. Layoutänderungen wie Me.Controls("txtUmsatz").Left = 1000 gehen – aber sind fummelig.

Besser:
Nutze sichtbare Felder + bedingte Sichtbarkeit in Kombination mit Logik in der Datenquelle.

Me.txtKundengruppe.Visible = (Me.Kundengruppe = "A")

Oder gleich zwei Versionen des Berichts – je nach Use Case.

Mein Fazit

Berichte in Access sind unterschätzt.
Aber wenn Du sie strukturiert einsetzt, bekommst Du aus einer 08/15-Access-Lösung eine saubere Reporting-Schicht.

Baue Dir wiederverwendbare Bausteine:

  • Eine zentrale Berichtsroutine
  • Dynamische SQL-Abfragen per Parameter
  • Ausgabeoptionen: Vorschau, PDF, Mail

Dann klappt das auch im KMU-Alltag mit wechselnden Anforderungen und wenig Zeit.

Nach oben scrollen