Datenanbindung Bericht-Designer

Grundsätzliches

Der erste Schritt zur Erstellung eines Reports ist die Definierung der benötigten Daten. Die Daten-Definierung baut auf dem Klassenmodell von Vertec und der OCL-Abfragesprache auf.

Die Definierung der Datenquellen wird in der Grundfunktion Daten des Bericht-Designers durchgeführt. Bei Klick auf den Reiter Daten wird in diese Funktion gewechselt.

Datenquellen

Die benötigten Datenquellen werden jeweils in Form einer Box dargestellt. Beim Erstellen eines neuen Reports steht jeweils bereits eine Standarddatenquelle zur Verfügung (Hauptquelle).

Weitere Datenquelle können jederzeit über das Menü Datei > Neu erstellt werden.

datenquelle_liste.png

Datenquellen sind in der Regel wie folgt aufgebaut:

Eine Hauptquelle:

Diese bezieht sich auf die Daten auf welchen der Report ausgeführt wird. Ein Beispiel für eine solche Hauptquelle könnten z.B. die Rechnungen in Vertec sein.

Keine, eine oder mehrere Zusatzquellen:

Diese stehen in Relation zu einer anderen Datenquelle. Dies könnten zum Beispiel Leistungen sein, die den Rechnungen der Hauptdatenquelle zugeordnet sind.

Auch die Zusatzquellen können wiederum Zusatzquellen enthalten.

Datenquellen können als Basis das gesamte System, aber auch den aktuell eingeloggten Benutzer verwenden.

Definition einer Datenquelle

Die Definition einer Datenquelle kann über den Button bearbeiten... angepasst werden:

datenquelle_bearbeiten.png

Die Definition ist wie folgt aufgebaut:

  • Name: Der Namen der Datenquelle. In unserem Beispiel heisst diese Liste. Alle Referenzen auf die Datenquelle läuft über diesen Namen.
  • Master: Legt fest, auf wenn sich die Datenquelle bezieht. Für die Hauptquelle wird mit Eintraege angezeigt, dass die Datenquelle sich auf den Ausgangspunkt des Reports bezieht. Für Zusatzquellen wird hier der Namen der Datenquelle angezeigt, auf welche sich die Zusatzquelle bezieht. Es können auch Datenquellen definiert werden, die sich z.B. auf den aktuell eingeloggten Benutzer beziehen (CurrentUser).
  • Basistyp: Enthält die Klasse (analog dem Vertec-Klassenmodell), welche als Ausgangspunkt dient.
  • Expression: Enthält eine OCL-Expression, welche festlegt, wie sich die Datenquelle berechnet. Für die Hauptquelle lautet die Expression immer self.

Von einer Datenquelle auf eine andere zugreifen

  • var<Name>: Es gibt den Fall, dass Daten einer Datenquelle auf Angaben einer anderen Datenquelle zugreifen müssen. Das kann in den Expressions über var und den Namen der gewünschten Datenquelle angegeben werden.Sie erhalten so das aktuelle Objekt in der Datenquelle (z.B. das aktuelle Projekt aus einer Liste von Projekten).
  • var<Name>List: Ab Version 5.3.0.40. Damit erhalten Sie die aktuelle Liste der Datenquelle (z.B. alle Projekte der Liste)

Beispiel

In diesem Beispiel heisst die Datenquelle Projekte. Der Bericht ist ein Listenreport, er wird auf einer Liste von Projekten ausgeführt.

varProjekte.summeoffeneLeistungen: Summe der offenen Leistungen des einzelnen Projekts
varProjekteList.summeoffeneLeistungen: Summe der offenen Leistungen aller Projekte in der Liste

Felder in einer Datenquelle:

Wurde eine Datenquelle definiert, kann festgelegt werden, mit welchen Feldern aus dieser Datenquelle gearbeitet werden soll. Die hier definierten Felder können später im Bericht angezeigt werden.

Um ein neues Feld zu erzeugen, klicken Sie mit der rechten Maustaste in die Felderliste (der weisse Bereich). Danach erscheint folgendes Menü:

datenquelle_felder.png

Es kann nun mit der Auswahl neu... ein einzelnes Feld angefügt werden. Es können zudem mit der Auswahl Attribute importieren alle verfügbaren Felder auf einmal eingetragen werden. Dies empfiehlt sich jedoch in der Regel nicht, da die Felderliste so unübersichtlich lang wird.

Nach Klick auf neu... bzw. editieren... erscheint folgendes Fenster:

datenfeld_bearbeiten.png

Dieses ist wie folgt aufgebaut:

  • Alias: Hier wird der Name des Feldes eingegeben. Mit diesem Namen wird später Zugriff auf das Feld genommen.
  • Format: Hier kann eine Ausgabeformatierung für das Feld vordefiniert werden. In der Regel empfiehlt es sich jedoch, die Formatierung bei der Plazierung eines Elementes im Layout eines Reports zu bestimmen. Es wird deshalb hier nicht näher darauf eingegangen.
  • Breite: Hier gilt das selbe wie mit der Formatierung. Die Festlegung der Breite erfolgt sinnvollerweise bei der Plazierung.
  • Ausrichtung: Hier gilt wiederum dasselbe wie für Formatierung und Breite.
  • Basistyp: Der Basistyp zeigt an, von welcher Klasse ausgehend das Feld gewählt werden kann. Dies entspricht dem Basistyp der Datenquelle.
  • Expression: Per OCL wird festgelegt, wie sich das auszugebende Feld berechnet. In den meisten Fällen wird dies ein Attribut der entsprechenden Basisklasse sein. Es kann aber auch sonst eine gültige OCL-Expression sein.

Eine Vielzahl von vordefinierten Berichten finden Sie im Vertec im Ordner Einstellungen > Berichtsvorlagen. Um einen solchen Bericht zu verwenden, können Sie ihn auf aktiv schalten.

OCL Variablen für Master Datenquellen in Bericht Designer

Es gibt ab der Version 5.6 weitere OCL-Variablen zur Verwendung im Bericht Designer. Die Werte der dem Report zugrundeliegenden Daten werden dadurch direkt via OCL zugänglich. Die Variablen entsprechen dem Inhalt der Master-Datenquellen.

varEintraege
Liste der Objekte auf denen der Report ausgeführt wird (Master-Datenquelle Eintraege)
varRoot
Container oder Objekt auf dem der Report aus-geführt wird (Master-Datenquelle Root)
varCurrentUser
Aktuell eingeloggter Benutzer (Master-Datenquelle CurrentUser)

Beispiel

Folgendes Beispiel wird mit dieser Erweiterung möglich:

Der Report wird auf einer Projektliste ausgeführt. Es sollen aber nur Projekte im Report auftauchen, die in einer bestimmter Periode Leistungen haben. Die Bestimmung dieser Bedingung soll aus Performancegründen mittels GroupLeistungen erfolgen. Es sollen LeistSums nur einmal für die ganze Projektliste berechnet werden.

Datenquellen im Bericht Designer:

Leistsums

Master: Eintraege

Expression: self->groupLeistungenP
(varvonDatum.asstring,
varbisDatum.asstring, 'PROJEKT')

Projekte

Master: Leistsums

Expression: varLeistsumsList.
projekt->oclAsType(Projekt)->
intersection(varEintraege)

So kann man auf die berechneten Objekte (Leistsums) zugreifen, ohne dass diese jedes Mal wieder berechnet werden. Die Hierarchie der Datenquellen für die Berechnung ist trotzdem gewährleistet; so kann sichergestellt werden, dass die Leistsums bei der Berechnung der Projekt-Datenquelle bereits berechnet sind.


03.12.2003 | 09.05.2011: Release 5.6: OCL Variablen für Master Datenquellen, neue Screenshots.