Menü

Karteikarte „Berechnungen“

Zurück | Ebene zurück

Allgemeines

Die Funktionen innerhalb des EULANDA®-Berichts-Designers sind sehr mächtig und vielseitig. Es lassen sich jedoch durch statische Verknüpfungen und durch das Setzen von Eigenschaften nicht alle Resultate in anspruchsvollen Berichten realisieren.

Immer dann, wenn Elemente anhand von Bedingungen in ihren Eigenschaften verändert werden sollen, benötigen wir Scripts. Was für MSDOS die Batchdatei ist, ist für moderne Anwendungssysteme die Scriptsprache. EULANDA® benutzt als Scriptsprache für das Berichtswesen die Sprache Pascal. Dies ist naheliegend, da der Berichts-Designer wie auch das komplette EULANDA®-System in Pascal bzw. Delphi erstellt wurde.

Durch Verwendung derselben Scriptsprache lassen sich Berichte nahtlos in EULANDA® integrieren, ohne auf die Vorteile der freien Definition eines Berichts verzichten zu müssen.

Hinweis

Dieses Kapitel ist nur ein kurzer technischer Abriss der Pascal-Script-Möglichkeiten und zeigt in einer kurzen Übersicht die Bedienung des Script-Editors. Die technische Dokumentation zu den einzelnen Script-Befehlen befindet sich in einem eigenen Handbuch der Online-Hilfe.

Kompiler

Scripts sind kleine Programmteile, die durch den Berichts-Designer vorkompiliert (übersetzt) werden. Die verschiedenen Sprachelemente können per Drag&Drop aus der Toolbox  in das Script-Editorfenster gezogen werden. Unter Kompilieren versteht man die Übersetzung einer Sprache, in diesem Fall der Sprache Pascal, in eine für Maschinen verständliche Form. Der EULANDA®-Kompiler erzeugt hierbei keine Maschinensprache, sondern bewegt sich, ähnlich wie JAVA, auf einer unabhängigen Ebene. Der Vorteil der Kompilierung ist vor allem die während der Laufzeit schnellere Ausführungsgeschwindigkeit. Darüber hinaus werden Syntaxfehler (Grammatikfehler) sofort erkannt.

Ereignisgesteuert

Ein Script wird ereignisgesteuert ausgeführt. Hierzu hat jedes Objekt, ob es nun der Hauptbericht, die einzelnen Bänder oder die zu platzierten Objekte selbst sind, eine Reihe von Ereignissen. Diese werden durch eine interne Logik automatisch aufgerufen. Wird so ein Ereignis mit einem Script verknüpft, so wird dieses ausgeführt, sobald das Ereignis eintritt. Es gibt Ereignisse, die direkt bei Druckbeginn ausgelöst werden, andere bei Druckende oder wenn ein Seitenwechsel zustande kommt, wieder andere Ereignisse werden ausgelöst, sobald ein Datensatz wechselt usw.

EULANDA® kennt ca. 100 Ereignisse, so dass man durch Scripts im richtigen Ereignis jede gewünschte Funktionalität erreichen kann.

Eigenschaften und Methoden 

Über Scripts lassen sich Elemente in ihren Eigenschaften verändern und dies in Abhängigkeit von Bedingungen. Bedingungen können hierbei sein, dass eine Rechnung negative Erträge hat, Kunden mit besonders hohem Umsatz kann eine Bedingung sein oder eine Reaktion auf bestimmte Warengruppen, bestimmte Wochentage oder Texte, die in Feldern enthalten sein sollen.

Auf alle diese Bedingungen kann ein Script reagieren und Veränderungen durchführen. Veränderungen können zum Beispiel das Unsichtbarmachen von Elementen, von Regionen oder ganzen Druckbereichen sein, aber auch die Änderung von Schrift, Farbe, Position, Größe oder der Inhalt von Feldern. 

Durch Berechnungen lassen sich Feldänderungen durchführen; hierdurch kann zum Beispiel ein kompletter Zinsplan oder eine Leasingtabelle erstellt und am Ende eines Angebotes ausgeben werden.

Scripts kommen auch dann zum Einsatz, wenn man einen Bericht für verschiedene Zwecke nutzen möchte. Zum Beispiel ist es denkbar, eine Rechnung ohne Briefpapier zu drucken; wird diese aber gefaxt, so soll ein elektronisches Briefpapier hinterlegt werden. Ein Script kann diese Zustände erkennen und das Briefpapier für Ausgaben auf dem Drucker unsichtbar machen.

Fazit

Durch Scripts lassen sich Dinge lösen, die sonst nur im Programm selbst realisiert werden könnten, also nicht mehr von außen frei änderbar wären.

In den Tutoren werden Berichtsvorlagen besonders beschrieben, speziell das Warum und  Wie ist dort genau erläutert. Das Verstehen der Beschreibung setzt Kenntnisse in Pascal-Script und der Abfragesprache SQL voraus. Beide Voraussetzungen (Pascal-Script und SQL) sind in den Zusatzhandbüchern der Onlinehilfe beschrieben.

Beispiel

Die Lieferanschrift soll im Kopfbereich der Rechnung neben der Anschrift nur ausgegeben werden, wenn eine einzige Lieferanschrift vorhanden ist; sind mehrere Lieferscheine zur Rechnung vorhanden, so sollen die Lieferanschriften im Rechnungstext durch Zwischenüberschriften dargestellt werden. Für den Fall, dass Rechnungs- und Lieferanschrift identisch sind, soll die Lieferanschrift ebenfalls nicht gedruckt werden. Eine typische Aufgabe für ein Script. Die Beschreibung genau dieser Problematik finden Sie im Anwenderforum http://www.eulanda.de/Anwender in der Rubrik Knowhow (Pascal-Script) im Beitrag 0002.

Aufbau des Scripteditors

Scripts können direkt im Berichts-Designer erstellt werden. Hierzu wählen Sie die Karteikarte „Berechnungen“ an. Diese Karteikarte ist in vier große Bereiche untergliedert.

Der Script-Editor

Die Elemente

Der Bereich für die Elemente befindet sich oben links. Dort werden alle verwendeten Elemente in einer Gliederung angezeigt. Diese Gliederung ist wie ein umgedrehter Baum aufgebaut, dessen Wurzel ist das Hauptelement, also der „Report“. Davon abgehend sind die einzelnen Bänder (= Äste) und von den Bändern gehen die darauf positionierten Elemente (=Blätter) ab.

Die Ereignisse

Zu jedem der Elemente gibt es eine Reihe von Ereignissen. Diese finden Sie oben rechts. Wird in der Elemente-Auswahl eines der Elemente angewählt, so kann man im Ereignisbereich die zu diesem Element verfügbaren Ereignisse ansehen.

Um die Ereignisse sehen zu können, muss ggf. im Menü unter „Ansicht“ die Option „Ereignisse“ angewählt sein.

Über das rechte Mausmenü über einem Ereignis kann ein Script über den Punkt „Neu“ angelegt oder ein vorhandenes Script gelöscht werden.

Scripts

Scripts werden im Bereich unten links jeweils zu den Ereignissen gespeichert. Man kann ein Ereignis im oberen rechten Bereich auswählen und dann im Scriptbereich das Script dazu erstellen, indem mit der Maus in den Scriptbereich geklickt wird. Ein Funktionsblock erleichtert dies. Das gewünschte Pascal-Script muss nur noch in den Block geschrieben werden.

Script lassen sich im Ereignisbereich löschen. Dort gibt es die Funktion „Löschen“ im Rechte-Mausmenü.

Scriptfehler werden beim Kompilieren festgestellt

Ein Script kann über das rechte Mausmenü kompiliert werden. Fehler können so noch im Editor festgestellt und korrigiert werden. Die Fehlermeldung wird im unteren Fenster angezeigt. Ein Doppelklick auf die Fehlermeldung zeigt nach Möglichkeit die fehlerhafte Zeile im Scriptbereich an.

Im oberen Beispiel heißt die Eigenschaft des Elementes „TextTitel“ nicht „Kaption“, sondern „Caption“. Solche Fehler sind vermeidbar, wenn man die Eigenschaft des Elementes direkt mit Drag&Drop aus der Toolbox zieht.

Nach Änderungen im Scriptbereich sollten Sie vor dem Speichern in jedem Fall die Berichtsvorlage in der Vorschau kontrollieren.

Tipp

Möchte man sich schnell in einem Bericht informieren, ob dort Scripts hinterlegt sind, so ist es recht mühsam, alle Objekte im Menübaum durchzusehen, auch wenn hinterlegte Scripts durch farbigen Eintrag gekennzeichnet sind. Einfacher ist es, im Menü „Ansicht“ auf die Option „Verwendete Module“ zu schalten. Im Ereignisbereich werden dann sofort alle hinterlegten Scripts aufgelistet.

Im Onlinehandbuch „Pascal-Script“ finden Sie zu allen Scriptbefehlen praktische Beispiele, die Sie direkt über „Einfügen“ aus der Zwischenablage in den Scriptbereich übernehmen können.

Toolbox

Die Toolbox unten rechts enthält alle wesentlichen Eigenschaften, die zu den einzelnen Elementen über Scripts gesetzt werden können. Die Toolboxansicht kann über eigene kleine Karteikarten am unteren Rand zwischen Daten, Elemente und Sprache gewechselt werden.

Daten

Diese Ansicht zeigt zu den Datenquellen die enthaltenen Felder und dazugehörenden Datentypen. Der Datenabschnitt ist in zwei Fenster unterteilt. Im oberen Fenster wird die Datenquelle eingestellt. Im unteren Fenster werden jeweils die Felder der ausgewählten Datenquelle dargestellt.

Datenauswahl in der Toolbox

Wird ein Feldwert im Script benötigt, so kann er mit Drag&Drop in den Scriptbereich an die gewünschte Stelle gezogen werden.

Hinweis

Die Datenquelle „Grundwerte“ ist automatisch in allen Berichten vorhanden. Die Felder der Grundwerte werden aus dem Betriebsystem (Benutzer, PC-Name usw.) und der SQL-Registry geladen. Im Script können aus technischen Gründen keine externen Datenquellen benutzt werden. Weder die Grundwerte noch Felder aus den Datenquellen Rechnungen usw.

Um Werte dieser Felder im Script nutzen zu können, muss man im Layout eine Datenbankvariable platzieren und dieses Feld auf nicht sichtbar schalten. Dies wird mit der rechten Maustaste gemacht.

Im Script kann dann über den Namen des Datenbankelementes und dessen Werteigenschaft z.B. DbText1.FieldValue zugegriffen werden. 

Elemente

Zu allen im Entwurf positionierten Elementen kann man in der Toolbox die Eigenschaften abrufen und über Scripts teilweise auch setzen. Im oberen Fensterteil wählen Sie hierzu das Element aus der Baumansicht aus. Im unteren Teil werden Eigenschaften des ausgewählten Elementes angezeigt. Die wichtigste Eigenschaft ist sicherlich „visible“. Hierüber lässt sich einstellen, ob das Element gedruckt wird oder unsichtbar sein soll. Aber auch die Ausdehnung und Position (Left/Top) und andere Eigenschaften können im Script während des Ausdrucks gelesen und verändert werden.

Eigenschaften von Elementen über die Toolbox

Sprache

Der Sprachumfang der Scriptsprache ist auf der letzten Karteikarte der Toolbox abrufbar. Alle Sprachfunktionen wurden in Gruppen eingeteilt, die im oberen Fenster  gelistet sind. Die Scriptsprache setzt sich aus den Pascal-Grundbefehlen und den hier auswählbaren Erweiterungen zusammen. Der Sprachumfang wird ständig erweitert und an die wachsenden Bedürfnisse angepasst. Die Dokumentation zu den einzelnen Befehlen ist in einem eigenen Handbuch der Onlinehilfe beschrieben. Dieses Handbuch heißt „Pascal-Script für intelligente Berichte“.

Die gewünschte Funktionen kann über Drag&Drop in den Scriptbereich gezogen werden.

Sprachfunktionen aus der Toolbox übernehmen

Literaturhinweis

Als weiterführende Lektüre kann jedes Pascal-Lehrbuch verwendet werden. Besonders hilfreich sind Bücher, die sich in diesem Zusammenhang mit Delphi beschäftigen.