8.9 Berichtsdesigner — Daten & Ausdrücke

8.9 Berichtsdesigner — Daten & Ausdrücke

Weisen Sie Datenfelder zu, sortieren und gruppieren Sie Daten, nutzen Sie Parameter und erstellen Sie berechnete Ausdrücke für dynamische Berichtsinhalte.

1

Überblick

Nachdem Sie in 8.8 Oberfläche & Grundlagen das Layout-Gerüst erstellt haben, geht es nun um die Datenbindung und Datenaufbereitung. Sie lernen, wie Sie:

  • Datenfelder aus der Feldliste an Steuerelemente binden
  • Daten sortieren, gruppieren und filtern
  • Parameter in Ausdrücken verwenden
  • Berechnete Felder und Aggregatfunktionen erstellen
Unser Beispiel für diese Anleitung
Gruppierter Kundenbericht mit Monatssummen

Aufbauend auf dem Kundenbericht aus Teil 1 wollen wir die Kunden nach Ort gruppieren, pro Gruppe die Anzahl der Kunden anzeigen und den Bericht über einen Parameter nach Monat filtern.

2

Datenfelder zuweisen

Jede Berichtsvorlage ist mit einer oder mehreren Datenquellen verbunden. Die verfügbaren Felder werden in der Feldliste (Field List) im Designer angezeigt.

Datenquellen in UDM

UDM verwendet JSON-Datenquellen, die automatisch aus den konfigurierten Datenquellen der Berichtsvorlage erzeugt werden. Im Designer erscheinen sie als Baumstruktur in der Feldliste:

  • Berichtsdaten (Primäre Datenquelle) — Enthält die Hauptdaten für den Bericht. Sie wird auf dem Vorlagen-Tab unter „Primäre Datenquelle“ festgelegt.
  • Weitere Datenquellen — Zusätzliche Datenquellen, die auf dem Tab „Weitere Datenquellen“ der Berichtsvorlage konfiguriert werden. Jede hat einen eigenen Knoten in der Feldliste.

Felder binden

  1. Per Drag-and-Drop

    Ziehen Sie ein Feld aus der Feldliste direkt auf einen Berichtsbereich. Es wird automatisch ein Label mit Datenbindung erzeugt. Der Feldname erscheint in eckigen Klammern, z. B. [Firmenname].

  2. Über das Eigenschaftenfenster

    Wählen Sie ein bestehendes Steuerelement aus. Im Eigenschaftenfenster finden Sie die Eigenschaft „Expression“ (oder „Text“ bei Labels). Klicken Sie auf die Schaltfläche (...), um den Expression Editor zu öffnen und ein Feld auszuwählen.

Drag-and-Drop eines Datenfelds aus der Feldliste

Datenfelder per Drag-and-Drop an Steuerelemente binden

Weitere Datenquellen im Designer Wenn mehrere Datenquellen konfiguriert sind, erscheint jede als eigener Knoten in der Feldliste. Für Steuerelemente, die auf eine weitere Datenquelle zugreifen sollen (z. B. Chart, Cross Tab), legen Sie die Datenquelle in den Eigenschaften des Steuerelements fest.
Berichtsdesigner → Datenbindung im Eigenschaftenfenster
Datenbindung
Datenquelle
DS_Kunden
Datenmember
Kunden · Detail
Gebundenes Feld
{Firma}
Format
Filter
Filter-Ausdruck
[Status] = 'aktiv'
Parameter
@Branche @Stichtag
3

Daten aufbereiten

Sortierung

Um die Daten im Bericht zu sortieren, wählen Sie den Detailbereich (Detail Band) aus und öffnen Sie im Eigenschaftenfenster die Eigenschaft „Sort Fields“. Fügen Sie ein oder mehrere Sortierfelder hinzu und legen Sie die Richtung fest (aufsteigend / absteigend).

Gruppierung

  1. Gruppenkopf hinzufügen

    Rechtsklick auf die Designfläche → „Insert Band“„Group Header“.

  2. Gruppierungsfeld festlegen

    Wählen Sie den Gruppenkopf aus. Im Eigenschaftenfenster öffnen Sie „Group Fields“ und wählen das Feld, nach dem gruppiert werden soll (z. B. Ort).

  3. Gruppentitel anzeigen

    Ziehen Sie das Gruppierungsfeld aus der Feldliste in den Gruppenkopf-Bereich. So wird der Gruppenname (z. B. der Ortsname) als Überschrift über jeder Gruppe angezeigt.

  4. Gruppenfuß für Zwischensummen

    Der zugehörige Gruppenfuß wird automatisch erstellt. Hier können Sie Aggregatfunktionen platzieren (siehe Abschnitt „Ausdrücke und Formeln“).

Bericht mit Gruppierung nach Ort

Gruppierung nach Ort mit Gruppenkopf und Gruppenfuß

Filterung

Der Bericht kann Daten über den Filter-Editor einschränken. Klicken Sie auf die leere Designfläche (den Bericht selbst) und öffnen Sie im Eigenschaftenfenster die Eigenschaft „Filter String“. Dort können Sie Bedingungen mit Feldern und Parametern definieren, z. B.:

[Erstelldatum] >= ?Berichtsmonat

Tipp: Filter mit Parametern kombinieren Verwenden Sie Parameter (erkennbar am ?-Präfix) in Filterausdrücken, damit Anwender den Bericht dynamisch filtern können. Parameter werden auf dem Tab „Parameter“ der Berichtsvorlage definiert (siehe 8.6 Berichtsvorlagen).

Berechnete Felder

  1. Feld hinzufügen

    Rechtsklick auf einen Datenquellen-Knoten in der Feldliste → „Add Calculated Field“.

  2. Ausdruck definieren

    Im Eigenschaftenfenster des neuen Felds klicken Sie auf „Expression“ und geben die Formel ein, z. B.:
    [Vorname] + ' ' + [Nachname] (Textverkettung)
    [Menge] * [Einzelpreis] (Berechnung)

  3. Datentyp festlegen

    Setzen Sie den Feldtyp passend zum Ergebnis: String, Int32, Decimal, DateTime usw.

  4. Im Bericht verwenden

    Das berechnete Feld erscheint in der Feldliste und kann wie ein normales Datenfeld auf die Designfläche gezogen werden.

4

Parameter verwenden

Berichtsparameter werden auf dem Tab „Parameter“ der Berichtsvorlage definiert (siehe 8.6 Berichtsvorlagen). Im Designer stehen sie automatisch zur Verfügung und können in Ausdrücken referenziert werden.

Einsatzort Syntax Beispiel
Filter String ?Parametername [Datum] >= ?VonDatum
Label / Expression ?Parametername 'Bericht für: ' + ?Berichtsmonat
Berechnetes Feld ?Parametername Iif([Betrag] > ?Schwellwert, 'Hoch', 'Normal')
Sichtbarkeit ?Parametername ?DetailAnzeigen == true
Wichtig: Parameter nicht im Designer anlegen Legen Sie Parameter nicht direkt im Designer an, sondern ausschließlich über den Tab „Parameter“ der Berichtsvorlage. Nur dort definierte Parameter werden beim Erstellen des Berichts korrekt an den Anwender übergeben und an die Datenabfrage weitergeleitet.
5

Ausdrücke und Formeln

Der Expression Editor ist das zentrale Werkzeug für dynamische Inhalte. Sie erreichen ihn über die (...)-Schaltfläche neben Eigenschaften wie „Expression“, „Text“ oder „Visible“.

Ausdruck-Syntax

Kategorie Syntax Beispiel
Datenfeld [Feldname] [Firmenname]
Parameter ?Name ?Berichtsmonat
Text-Verkettung + [Vorname] + ' ' + [Nachname]
Bedingte Logik Iif(Bedingung, Wahr, Falsch) Iif([Betrag] > 1000, 'Premium', 'Standard')
Datumsfunktionen GetYear(), GetMonth(), Today() GetYear([Erstelldatum])
Textfunktionen Upper(), Lower(), Substring() Upper([Nachname])
Formatierung FormatString() FormatString('{0:dd.MM.yyyy}', [Datum])

Aggregatfunktionen

Aggregatfunktionen werden typischerweise im Gruppenfuß oder Berichtsfuß verwendet:

Funktion Beschreibung Beispiel
Sum() Summe eines Felds Sum([Betrag])
Count() Anzahl der Datensätze Count()
Avg() Durchschnitt Avg([Bewertung])
Min() / Max() Minimum / Maximum Max([Erstelldatum])
Tipp: Aggregat im Gruppenfuß Wenn Sie Count() in einem Gruppenfuß platzieren, zählt die Funktion automatisch nur die Datensätze innerhalb der Gruppe. Im Berichtsfuß dagegen wird über alle Datensätze aggregiert.

UDM-Spezialfunktionen

Funktion Beschreibung
LoadImage(Pfad) Lädt ein Bild über einen Dateipfad aus dem UDM-Dateisystem. Kann in Picture-Box-Steuerelementen als Expression verwendet werden, z. B. LoadImage([LogoPfad]).
Ausdrucks-Editor → berechnete Felder im Bericht
Ausdruck
Feldname
Bruttoumsatz
Typ
Decimal
Formel
[Nettoumsatz] * (1 + [SteuerSatz] / 100)
Format
N2 (1.234,56)
Aggregat (Gruppenfuß)
Funktion
Sum([Bruttoumsatz])
Bereich
Gruppe: Branche
6

Tutorial: Gruppierten Bericht mit Parameter erstellen

Aufbauend auf dem tabellarischen Kundenbericht aus Teil 1 fügen wir Gruppierung, Aggregat und Parameterfilter hinzu.

  1. Parameter anlegen

    Wechseln Sie auf den Tab „Parameter“ der Berichtsvorlage. Erstellen Sie einen Parameter Berichtsmonat vom Typ DateTime, markiert als „Notwendig“. Speichern Sie die Vorlage.

  2. Gruppierung einrichten

    Zurück im Designer: Rechtsklick → „Insert Band“„Group Header“. Wählen Sie den Gruppenkopf und setzen Sie unter „Group Fields“ das Feld Ort. Ziehen Sie [Ort] als Label in den Gruppenkopf.

  3. Anzahl pro Gruppe anzeigen

    Im automatisch erstellten Gruppenfuß platzieren Sie ein Label mit dem Ausdruck:
    'Anzahl Kunden: ' + Count()

    Gruppenfuß mit Count()-Aggregat

    Gruppenfuß mit Anzahl der Kunden pro Ort

  4. Filterausdruck mit Parameter

    Klicken Sie auf die leere Designfläche. Im Eigenschaftenfenster öffnen Sie „Filter String“ und geben ein:
    [Erstelldatum] >= ?Berichtsmonat

  5. Parameterwert im Kopf anzeigen

    Fügen Sie im Berichtskopf ein Label hinzu mit dem Ausdruck:
    'Bericht ab: ' + FormatString('{0:MMMM yyyy}', ?Berichtsmonat)

  6. Vorschau testen

    Wechseln Sie in den PREVIEW-Modus. Der Parameter-Dialog erscheint — geben Sie ein Datum ein und prüfen Sie, ob die Gruppierung und Filterung korrekt funktionieren.

Ergebnis Sie haben einen gruppierten, parametrisierten Bericht erstellt. Im nächsten Teil (8.10 Layout & Export) lernen Sie Formatierungs- und Exportoptionen kennen.
7

Häufige Fragen

Frage Antwort
Warum sehe ich keine Felder in der Feldliste? Stellen Sie sicher, dass die Datenquelle auf dem Vorlagen-Tab korrekt zugewiesen und die Vorlage gespeichert ist. Prüfen Sie, ob die Datenquelle selbst gültige Daten liefert.
Wie referenziere ich Felder aus weiteren Datenquellen? Felder aus zusätzlichen Datenquellen erscheinen unter einem eigenen Knoten in der Feldliste. Für Chart- oder Cross-Tab-Steuerelemente setzen Sie die Eigenschaft „Data Source“ auf die gewünschte Datenquelle.
Kann ich verschachtelte Funktionen verwenden? Ja. Ausdrücke können beliebig verschachtelt werden, z. B. Iif(Sum([Betrag]) > 10000, 'Top', 'Standard').
Was passiert, wenn ein Parameter leer ist? Als „Notwendig“ markierte Parameter müssen ausgefüllt werden. Optionale Parameter, die leer bleiben, liefern null — berücksichtigen Sie dies in Ihren Ausdrücken mit Iif(IsNull(?Param), ...).