Ü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
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.
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
-
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]. -
Ü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.
Datenfelder per Drag-and-Drop an Steuerelemente binden
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
-
Gruppenkopf hinzufügen
Rechtsklick auf die Designfläche → „Insert Band“ → „Group Header“.
-
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). -
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.
-
Gruppenfuß für Zwischensummen
Der zugehörige Gruppenfuß wird automatisch erstellt. Hier können Sie Aggregatfunktionen platzieren (siehe Abschnitt „Ausdrücke und Formeln“).
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
Berechnete Felder
-
Feld hinzufügen
Rechtsklick auf einen Datenquellen-Knoten in der Feldliste → „Add Calculated Field“.
-
Ausdruck definieren
Im Eigenschaftenfenster des neuen Felds klicken Sie auf „Expression“ und geben die Formel ein, z. B.:
[Vorname] + ' ' + [Nachname](Textverkettung)
[Menge] * [Einzelpreis](Berechnung) -
Datentyp festlegen
Setzen Sie den Feldtyp passend zum Ergebnis:
String,Int32,Decimal,DateTimeusw. -
Im Bericht verwenden
Das berechnete Feld erscheint in der Feldliste und kann wie ein normales Datenfeld auf die Designfläche gezogen werden.
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 |
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]) |
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]). |
Tutorial: Gruppierten Bericht mit Parameter erstellen
Aufbauend auf dem tabellarischen Kundenbericht aus Teil 1 fügen wir Gruppierung, Aggregat und Parameterfilter hinzu.
-
Parameter anlegen
Wechseln Sie auf den Tab „Parameter“ der Berichtsvorlage. Erstellen Sie einen Parameter
Berichtsmonatvom TypDateTime, markiert als „Notwendig“. Speichern Sie die Vorlage. -
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. -
Anzahl pro Gruppe anzeigen
Im automatisch erstellten Gruppenfuß platzieren Sie ein Label mit dem Ausdruck:
'Anzahl Kunden: ' + Count()
Gruppenfuß mit Anzahl der Kunden pro Ort
-
Filterausdruck mit Parameter
Klicken Sie auf die leere Designfläche. Im Eigenschaftenfenster öffnen Sie „Filter String“ und geben ein:
[Erstelldatum] >= ?Berichtsmonat -
Parameterwert im Kopf anzeigen
Fügen Sie im Berichtskopf ein Label hinzu mit dem Ausdruck:
'Bericht ab: ' + FormatString('{0:MMMM yyyy}', ?Berichtsmonat) -
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.
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), ...). |