[ 1 ] [ 2 ] [ 3 ] [ 4 ] [ 5 ] [ 6 ]

Der Einsatz eines DataEnvironment im Report hat zwei Vor- und einen Nachteil:

  • Vorteil 1: Alle Felder von im DataEnvironment enthaltenen Tabellen erscheinen im Reportdesigner in diversen Auswahllisten, aus denen man sich z.B. Expressions per Maus zusammenklicken kann. Außerdem kann man Felder per Drag&Drop aus dem DataEnvironment auf die Arbeitsfläche des Reportdesigners ziehen (NB: Dies funktioniert übrigens auch aus dem Datenbankdesigner auf die Reportdesigner-Arbeitsfläche).
  • Vorteil 2: Je nach Einstellungen der Optionen im DataEnvironment werden die benötigten Tabellen beim Abarbeiten des Reports ggf. automatisch geöffnet und wieder geschlossen.

  • Nachteil: Man kann einen Report mit eigenem DataEnvironment nur sehr eingeschränkt auf zwar gleich strukturierte, aber anders benannte Datenquellen anwenden (andere Dateinamen, andere Lage der Dateien auf der Festplatte, Verwendung des SQL-Selects als Datenquelle für einen Report).

Aus diesem Grund muß man die Vor- und Nachteile abwägen und sich für einen Weg entscheiden

Wenn man mit einem reportinternen DataEnvironment arbeitet, dann kann man dem Report für die Abarbeitung außerdem eine eigene Private DataSession zuweisen. Damit erreicht man eine automatische Abschottung der bei der Report-Ausgabe verwendeten Tabellen und Arbeitsbereiche von den anderen Arbeitsbereichen der Applikation.

NB: Diese Verfahrensweise ist natürlich nicht möglich, wenn ein Report auf Basis gepufferter und noch ungespeicherter Daten ausgegeben werden soll.

Die Report-Bands (I)

Als Report Bands werden die einzelnen Teilbereiche eines Reports bezeichnet. Standardmäßig besteht ein Report aus 3 Report Bands, dem "Page Header", dem "Detail Band" sowie dem "Page Footer":

Ein besonderes Geheimnis verbirgt sich hinter dem DoubleClick auf eines der Separator Bars, die die Bands im Designer voneinander trennen:

Hier kann man die Höhe des jeweiligen Bereichs millimetergenau angeben und außerdem bestimmte Expressions eintragen.

Die Macht des "Print-When"

Ein sehr weitreichendes Potential liegt in der sogenannten "Print When"-Expression. Diese logische Expression findet sich an jedem Objekt, welches man zur Ausgabe auf der Arbeitsfläche plazieren kann. Kern des zugehörigen Dialogfeldes ist die "Print only when Expression is true"-Expression:

Mit Hilfe der dort zu hinterlegenden Expression kann man bestimmen, ob das jeweilige Objekt gedruckt werden soll oder auch nicht.

Diesen Mechanismus kann man zu folgenden Zwecken benutzen:

  • Print-When-Expression in Abhängigkeit vom Satzartkennzeichen gesteuert wird.

  • Im einfachsten Fall kann man mit einer Bedingung (z.B. Customer.MaxOrdAmt>12000) über die Sichtbarkeit eines Anzeigeelements entscheiden.
  • Kombiniert man nun die entgegengesetzte Bedingung (z.B. Customer.MaxOrdAmt<=12000) mit einer kopie dieses control, dann erscheint je nach inhalt der daten entweder die eine oder die andere variante dieses controls.

  • Unterscheiden sich die Controls nun z.B. nur in der Schriftfarbe oder der Schriftart, kann man damit eine dateninhaltsabhängige Färbung oder Schriftart der Werte erreichen (wenn man denn die beiden Controls noch übereinander auf die gleiche Stelle der Arbeitsfläche stapelt).
  • Wenn man diesen Mechanismus noch weiter ausreizt, kann man je nach Typ des Datensatzes optisch völlig unterschiedliche Detailbereiche erscheinen lassen, indem die Sichtbarkeit der jeweiligen Controls über eine 

    [ 1 ] [ 2 ] [ 3 ] [ 4 ] [ 5 ] [ 6 ]