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.

Kategorien:

Keine Antworten

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert