Beim Anpassen oder Erstellen von Berichtsvorlagen in SeminarDesk mit dem DevExpress Berichtsdesigner (Report Designer) wird auf eine vorgegebene Datenquelle zurückgegriffen. Welche Datenquelle wir wählen, bestimmt, welche Felder und verbundenen Objekte dann im Bericht zur Verfügung stehen. Dieser Artikel gibt einen Überblick über die verfügbaren Datenquellen und zeigt anhand häufiger Anwendungsfälle, wie Felder über Ausdrücke (Expressions) adressiert werden.

Was sind Datenquellen
Eine Datenquelle ist die Datenstruktur, mit der eine Berichtsvorlage befüllt wird. Sie wird beim Anlegen einer neuen Berichtsvorlage festgelegt und bestimmt bspw., ob eine Liste von Buchungen, eine Liste von Gästen oder eine Liste von Veranstaltungsterminen zur Verfügung steht. Verbundene Objekte – etwa die Buchung zu einem Gast oder der Termin zu einer Buchung – sind dabei als Unter-Objekte direkt mit ansprechbar.
Die Datenquelle einer bestehenden Vorlage ist in der Übersicht unter Verwaltung – Berichtsvorlagen in der gleichnamigen Spalte sichtbar. Sie lässt sich im Berichtsdesigner auch nachträglich austauschen – dafür müssen wir die bereits verwendeten Expressions an die neue SeminarDesk-Datenstruktur anpassen.
Häufig genutzte Datenquellen
Die folgenden Datenquellen decken die meisten Anwendungsfälle ab.
- Buchungen – Liste von Buchungen, jeweils mit zugehörigen Gästen, Termin, Zahlungen, Rechnungen sowie weiteren Unter-Objekten. Geeignet für buchungsbezogene Dokumente und Listen.
- Buchungsgäste – Liste einzelner Gäste, jeweils mit zugehöriger Buchung und Termin. Standard für Teilnehmerlisten sowie gästebezogene Dokumente.
- Veranstaltungstermine – Liste von Terminen, jeweils mit zugehörigen Buchungen, Gästen, Raumbuchungen, Equipment, Stundenplan usw. Geeignet für Termin-/Veranstaltungsübersichten sowie Functionsheets.
- Veranstaltungen – Liste übergeordneter Veranstaltungen, mit allen zugehörigen Terminen. Geeignet für veranstaltungsbezogene Auswertungen, die nicht an einen einzelnen Termin gebunden sind.
- Zeitraum (übergreifend) – Kombiniert mehrere Listen (Tage, Termine, Buchungen, Gäste, Belegungen, Raumbuchungen, weitere Listen) für komplexe Auswertungen über einen Zeitraum.
- Rechnungen – Liste von Rechnungen mit Rechnungspositionen und Zahlungsbezug. Datenquelle der Standard-Rechnungsvorlagen.
- Angebote – Liste von Angeboten mit Angebotspositionen.
- Zertifikate – Datenstruktur für Zertifikate wie bspw. Teilnahmebescheinigungen
- Finanzbericht – Aggregierte Zahlungen und Umsätze für Finanzauswertungen.
- Zimmerbelegungsliste, Zimmerbelegung nach Tagen, Zimmerbelegungsdetails, Zimmerverteilung – verschiedene Zuschnitte für Berichte rund um Zimmer und Belegung.
Weitere Datenquellen für Spezialfälle
Zusätzlich stehen Datenquellen für speziellere Anwendungsfälle zur Verfügung. Sie werden seltener gebraucht, sind aber für die jeweiligen Themen die passende Wahl:
- Abrechnung – Datenstruktur für Abrechnungsdokumente einer Veranstaltung.
- Anreisemanagement – Daten rund um An- und Abreise.
- Belegungsstatistik – Zimmerbelegungs-Statistiken.
- Buchungstage – Buchungen, aufgeschlüsselt nach einzelnen Tagen.
- Functionsheet – Datenstruktur für Functionsheets einer Veranstaltung.
- Gästeliste – Spezialisierte Gästeliste auf Veranstaltungs-/Terminebene.
- Profildaten – Profil-bezogene Daten (bspw. für Profilauswertungen).
- Raumbuchungen – Liste von Raumbuchungen.
- Tagesstatistik – Tagesbezogene Auswertungen.
- Umfragen – Datenstruktur für Umfrage-Auswertungen.
- Zahlungen – Liste einzelner Zahlungen.
Navigation zwischen verbundenen Objekten
Von der jeweils zentralen Liste der Datenquelle aus lassen sich verbundene Objekte über die Punktnotation ansprechen.
Beispiel: In der Datenquelle „Buchungsgäste“ ist jeder Gast direkt verfügbar. Die zugehörige Buchung wird über Buchung adressiert, der Termin der Buchung über Buchung.Termin, und die übergeordnete Veranstaltung über Buchung.Termin.Veranstaltung. Ein Ausdruck für den Veranstaltungsnamen in einer Teilnehmerliste lautet entsprechend:
[Buchung.Termin.Veranstaltung.Name]
In der Datenquelle „Buchungen“ entfällt der vorangestellte Buchung.-Pfad – der Termin wird also direkt über Termin adressiert:
[Termin.Veranstaltung.Name]
Im Feldbrowser des Berichtsdesigners sind alle verbundenen Objekte sowie ihre Felder hierarchisch aufklappbar – das ist die einfachste Möglichkeit, den korrekten Pfad zu finden.
Häufige Anwendungsfälle
Buchungsformular-Zusatzfelder in Berichte einbinden
Die unter Verwaltung – Setup – Zusatzfelder – Buchungsformular angelegten Zusatzfelder liegen in der Datenquelle nicht als benannte Spalten pro Feld-ID vor. Stattdessen sind sie als gefilterte Unter-Liste unter dem Namen Zusatzangaben an Buchung und Buchungsgast verfügbar. Zur Adressierung eines konkreten Zusatzfeldes wird dabei über die FrageID des Feldes gefiltert.
Die FrageID ist in den Details der Zusatzfelder ersichtlich. Die folgenden Beispiele beziehen sich auf ein Zusatzfeld mit FrageID = 2.
Datenquelle „Buchungsgäste“, Zusatzfeld pro Gast:
[Zusatzangaben][[FrageID] = 2].Single([AntwortText])
Datenquelle „Buchungsgäste“, Zusatzfeld auf Buchungsebene:
[Buchung.Zusatzangaben][[FrageID] = 2].Single([AntwortText])
Datenquelle „Buchungen“, Zusatzfeld auf Buchungsebene:
[Zusatzangaben][[FrageID] = 2].Single([AntwortText])
Neben AntwortText stehen in den Zusatzangaben u. a. auch Frage, FrageName sowie Typ als Felder zur Verfügung.
Veranstaltungsdaten in Buchungs- oder Gästelisten einbinden
In Berichten mit Buchungs- oder Gäste-Listen sind die Daten zur jeweiligen Veranstaltung über das Termin-Objekt erreichbar.
Aus der Datenquelle „Buchungsgäste“:
[Buchung.Termin.Name] – Titel des Termins
[Buchung.Termin.Beginn] – Startdatum
[Buchung.Termin.Ende] – Enddatum
[Buchung.Termin.Terminnummer]
[Buchung.Termin.Veranstaltung.Name] – Name der übergeordneten Veranstaltung
Aus der Datenquelle „Buchungen“:
[Termin.Name]
[Termin.Beginn]
[Termin.Ende]
[Termin.Terminnummer]
[Termin.Veranstaltung.Name]
Praktischer Tipp
Im Feldbrowser des Berichtsdesigners sind alle verfügbaren Felder hierarchisch aufgelistet. Ziehen wir sie per Drag & Drop in eine Berichtszelle, setzt das den Pfad automatisch korrekt – das ist deutlich verlässlicher, als die Expressions von Hand zu tippen. Für gefilterte Ausdrücke wie bei den Zusatzangaben ist die Drag-&-Drop-Variante ein Ausgangspunkt, sodass wir den Filter anschließend ergänzen können.
