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:
- Tabellenauswahl
- Felder ziehen
- Gruppierung, Sortierung
- 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.
Keine Antworten