delight address

 Top Next

Handbücher für delight address

Schlankes und flexibles Adressverwaltungspaket für alle die schnellen und umfassenden Zugriff auf ihre Adressdaten ohne CRM-Funktionalität benötigen.


Add-ons

 Top Letztes Next

Mit dem Add-On Modul werden kleine Zusatzprogramme, sogenannte Add-Ons, verwaltet und erstellt.

Add-Ons sind kleine Zusatz- und Hilfsprogramme, die sich nahtlos in die Software einfügen.

Mit diesem Modul steht eine komplette, integrierte Entwicklungsumgebung zur Programmierung von Add-Ons zur Verfügung.

In diesem Handbuch wird aber lediglich die Installation und Konfiguration der Add-Ons behandelt.


Konfiguration

Die Einstellungen werden in der Backstage-Ansicht unter Konfiguration => Add-Ons aufgerufen.

Links befindet sich eine Liste mit allen installierten Add-Ons.


Add-on löschen

Markieren Sie ein Add-On und klicken Sie auf Löschen, um das betreffende Add-On aus dem Programm zu entfernen.


Add-on installieren

Wechseln Sie in den Menübereich Import & Export und klicken Sie im Bereich Import auf MLXML-Datei.

Wählen Sie Ohne Konverter und suchen Sie mit der Schaltfläche [image] die gewünschte Datei.

Klicken Sie anschliessend auf Start.

siehe auch:

Business Integration MLXML-Datei importieren


Benutzerverwaltung

Verwaltung und Administration der Benutzer und Berechtigungen.

In dieser Dokumentation wird die Verwaltung und Administration der Berechtigungen sowie die Benutzer- und Gruppenverwaltung beschrieben.

siehe auch:

Wo finde ich die Berechtigungen

Benutzer

Gruppen

Berechtigungen


Verwaltung

Die Verwaltung der Berechtigungen wird in der Backstage-Ansicht unter Konfiguration => Benutzerverwaltung aufgerufen.

siehe auch:

Benutzer

Gruppen

Daten


Benutzer

In der Benutzerverwaltung können die Benutzer der Anwendung konfiguriert und verwaltet werden.

Jeder Benutzer kann beliebig vielen Gruppen zugeordnet sein. Anhand der Gruppen, in denen ein Benutzer Mitglied ist, werden die Berechtigungen definiert, die der Benutzer im Programm besitzt. Jeder Benutzer besitzt einen eindeutigen Benutzernamen sowie ein Passwort.

Jeder Benutzer muss einem Adresseintrag zugeordnet sein. Über diese Verknüpfung auf eine Adresse wird dem Programm mitgeteilt, welcher Mitarbeiter welchen Benutzernamen verwendet. Entsprechend werden bei der Adressauswahl nur Mitarbeiter angezeigt (Adressen aus der Zuordnungsart Mitarbeiter in der Adressverwaltung).

Über den Zugriffsmodus kann für jeden Benutzer definiert werden, mit welchen Zugriffsrechten er auf die Daten des Programms zugreifen kann.

Hinweis:

Wenn Benutzername und Passwort mit der Windows-Anmeldung übereinstimmen, wird der Benutzer automatisch am Programm angemeldet.

siehe auch:

Zugriffsmodus

Benutzer hinzufügen

Benutzer löschen

Gruppe hinzufügen

Gruppe löschen


Zugriffsmodus

Der Zugriffsmodus eines Benutzers bestimmt, welche Daten im Programm für ihn sichtbar sind und ob er schreibend oder nur lesend darauf zugreifen kann.

Auf welche Daten ein Benutzer Zugriff hat, wird über "Mitgliedschaft in Gruppen" bestimmt. Jeder Benutzer kann nur die Datensätze sehen, die einer Gruppe zugeordnet sind, in der er Mitglied ist. Datensätze, die keiner Gruppe zugeordnet sind, stehen allen Benutzern zur Verfügung.

Über die Option "Nur Lesezugriff im ganzen Programm" kann der Benutzer auf alle Daten zugreifen (auf die er durch seine Mitgliedschaften Zugriff hat), kann diese aber nicht ändern. Ist diese Option ausgeschaltet, kann über "Zugriffsmodus auf Daten" für jede Mitgliedschaft separat definiert werden, ob der Benutzer Datensätze dieser Gruppe nur lesen oder auch schreiben darf.


Benutzer hinzufügen

Klicken Sie im Abschnitt Benutzer auf Benutzer hinzufügen.

Geben Sie Benutzername und Passwort für den neuen Benutzer ein und wählen Sie danach in der Auswahlliste Adresseintrag eine Adresse aus, die dem neuen Benutzer zugeordnet werden soll.

Klicken Sie auf Speichern, um den Benutzer hinzuzufügen.

Fügen Sie dem neuen Benutzer die gewünschten Gruppen hinzu.

Hinweis:

Bei der Adressauswahl werden nur Mitarbeiter angezeigt (Adressen aus der Zuordnungsart Mitarbeiter in der Adressverwaltung). Sollten Sie die Adresse für den Mitarbeiter noch nicht erfasst haben, müssen Sie zuerst die Adresse in der Adressverwaltung erfassen. Stellen Sie sicher, dass die Adresse des Mitarbeiters in einer Zuordnung mit der Zuordnungsart "Mitarbeiter" aufgenommen wurde.

siehe auch:

Gruppe hinzufügen


Benutzer löschen

Markieren Sie einen Benutzer in der Liste auf der linken Seite.

Klicken Sie im Abschnitt Benutzer auf Löschen.


Gruppe entfernen

Markieren Sie einen Benutzer in der Liste auf der linken Seite.

Markieren Sie bei "Mitgliedschaft in Gruppen" die gewünschte Gruppe und klicken Sie auf Löschen.


Gruppe hinzufügen

Markieren Sie einen Benutzer in der Liste auf der linken Seite.

Klicken Sie unter Gruppenmitgliedschaft auf Gruppe hinzufügen.

Wählen Sie die gewünschte Gruppe und klicken Sie auf Hinzufügen.


Benutzergruppen

In der Gruppenverwaltung können die Gruppen und Ihre Zugriffsrechte verwaltet werden.

Alle Berechtigungen der Anwendung werden über Gruppen definiert und vergeben.

Ist ein Benutzer Mitglied einer Gruppe, besitzt er alle Berechtigungen und Zugriffsrechte dieser Gruppe.

Achtung:

Löschen Sie auf keinen Fall eine Gruppe, wenn Sie nicht genau wissen, welche Auswirkungen dies auf die Anwendung hat.

siehe auch:

Berechtigungen


Berechtigungen

In der Verwaltung der Berechtigungen können die Berechtigungen der Gruppen verwaltet werden.

Ihre Arbeitsoberfläche kann je nach Konfiguration und Ausstattung des Softwarepakets Abweichungen vom unten gezeigten Bild haben.

In der Baumstruktur auf der rechten Seite ist eine Liste mit allen im Programm installierten Modulen.

Welche Berechtigungsoptionen auf einem Modul verfügbar sind ist vom Modul abhängig. Weitere Informationen zu den Berechtigungsoptionen der einzelnen Module entnehmen Sie bitte der entsprechenden Modul-Dokumentation.

siehe auch:

Berechtigung einer Gruppe entziehen

Gruppe berechtigen


Gruppe berechtigen

Öffnen Sie rechts in der Baumstruktur ein Modul.

Markieren Sie die gewünschte Berechtigungsoption, die Sie einer Gruppe zugänglich machen wollen.

Klicken sie im Bereich Berechtigungen auf Gruppe hinzufügen.

Markieren Sie die gewünschte Gruppe aus der Auswahlliste und klicken Sie auf Hinzufügen.

Hinweis:

Sie können eine Gruppe auch per Drag&Drop aus der Liste (link) auf die gewünschte Berechtigungsoption ziehen.


Berechtigung einer Gruppe entziehen

Öffnen Sie rechts in der Baumstruktur ein Modul

Öffnen Sie die gewünschte Berechtigungsoption, die Sie einer Gruppe entziehen wollen.

Markieren Sie die gewünschte Gruppe auf der Berechtigungsoption.

Klicken Sie auf Entfernen, um die Gruppe aus der Berechtigungsoption zu entfernen.


Datenzugriff über Benutzergruppen

Im Bereich Daten kann definiert werden, auf welchen Datensätzen die Zugriffsrechte aktiviert werden sollen.

Im Normalfall sollte an dieser Stelle nur eine Option ausgewählt werden. Die Zugriffsrechte werden auf Datensätze, die miteinander verknüpft sind, vererbt. Ist z.B. die Option "Zuordnungen" ausgewählt, gelten die Zugriffsrechte einer Zuordnung automatisch auch für alle Adressen in dieser Zuordnung.


Berichte

Mit Berichten können Berichte generiert, also Daten unter anderem auf Papier gebracht werden. Das heisst, Daten aus der Datenbank werden mit einer Layout-Vorlage, welche die Anordnung der Daten und das Design festlegt, z.B. auf einer A4-Seite dargestellt. Dieses Dokument (Bericht) kann in einem Vorschaufenster angezeigt, ausgedruckt oder als Datei gespeichert werden.


Verwaltung der Vorlagen

Die Verwaltung der Vorlagen wird in der Backstage-Ansicht unter Konfiguration => Vorlagen aufgerufen.


Vorlagen

In der Vorlagenverwaltung können sämtliche Bericht-, Email- und SMS-Vorlagen bearbeitet werden.


Bericht-Vorlagen

Im Reiter Bericht-Vorlagen befinden sich alle Druck-Vorlagen. Jedem Bereich können beliebig viele verschiedene Vorlagen hinzugefügt werden. Bestehende Vorlagen können kopiert und bearbeitet werden.

Links werden die einzelnen Bereiche aufgelistet. Rechts werden alle Vorlagen des ausgewählten Bereiches angezeigt und verwaltet.

siehe auch:

Angaben auf einer Vorlage

Vorlage hinzufügen

Vorlage kopieren


Angaben auf einer Vorlage

Folgende Angaben sind auf einer Bericht-Vorlage enthalten:

Datenfeld | Beschreibung | benötigt
Titel: | Titel der Vorlage. Dieser Titel erscheint beim Ausführen des Berichtes im entsprechenden Modul. | JA
Layout Speicherort in Datei: | Mit dem Layout-Speicherort kann angegeben werden, ob das Layout der Vorlage in einer Datei oder in der Datenbank gespeichert wird. | JA
Layout-Datei: | Datei, welche das Layout enthält, wenn bei Layout-Speicherort "Datei" ausgewählt wurde. | (JA)


Vorlage hinzufügen

Klicken Sie auf Vorlage erstellen um eine neue Vorlage hinzuzufügen.

siehe auch:

Layout erstellen

Layout bearbeiten


Vorlage duplizieren

Klicken Sie auf Vorlage duplizieren, um eine Kopie der markierten Vorlage zu erstellen.

siehe auch:

Layout erstellen

Layout bearbeiten


Layout erstellen

Auf einer Vorlage ist immer ein Layout definiert. Das Layout bestimmt Inhalt und Aussehen der Vorlage. Es werden verschiedene Arten von Layouts unterstützt.

Um ein neues Layout zu erstellen (z.B. nachdem Sie eine neue Vorlage erstellt haben), klicken Sie auf Layout erstellen und wählen Sie danach die gewünschte Layoutart.

Klicken Sie auf Übernehmen, um das Layout zu erstellen. Das Layout wird im entsprechenden Vorlagendesigner geöffnet und kann dort bearbeitet werden.

Referenzen zur Erstellung von Layouts:

Berichte im RTF-Layout

Berichte im Excel-Layout

Berichte im Designer-Layout


Layout bearbeiten

Klicken Sie auf Layout bearbeiten, um das Layout einer Vorlage zu bearbeiten, oder führen Sie einen Doppelklick auf die Vorlage aus.


Layout in Datei oder Datenbank speichern

Es kann angegeben werden, ob das Layout einer Vorlage in einer Datei oder in der Datenbank gespeichert werden soll.

Layout in Datenbank speichern:

Vorteile:

- Das Layout wird zentral gespeichert. Das heisst, alle Benutzer verwenden dieselben Layouts (bei Netzwerkversionen).

- Es werden keine Layout-Dateien benötigt.

·Wählen Sie bei Layout Speicher-Ort die Option Datenbank, um eine verknüpfte Layout-Datei in die Datenbank zu speichern (importieren).

Es erscheint ein Dialog, den Sie wie folgt beantworten können:

·Klicken Sie auf Ja, um die Layout-Datei in der Datenbank zu speichern.

·Klicken Sie auf Nein, um die Layout-Datei nicht in der Datenbank zu speichern. Es wird eine neues leeres Layout in der Datenbank erstellt.

Layout in Datei speichern:

Vorteile:

1. Die Layout-Datei kann für mehrere Vorlagen verwendet werden.
2. Die Layout-Datei kann per Email versendet werden.

·Wählen Sie bei Layout Speicher-Ort die Option Datei, um ein bestehendes Layout als Layout-Datei zu speichern (exportieren) und anschliessend mit der Vorlage zu verknüpfen.

Es erscheint ein Dialog, den Sie wie folgt beantworten können:

·Klicken Sie auf Ja, um das Layout in eine Datei zu speichern.

·Klicken Sie auf Nein, um das Layout nicht in eine Datei zu speichern. Achtung! Das Layout wird in diesem Fall gelöscht.


Allgemeines Benutzerhandbuch

In diesem Handbuch werden allgemeine Funktionen zum Programm beschrieben. Informationen zu den einzelnen Programmteilen finden Sie jeweils in einem separaten Handbuch zu jedem Programmteil. Wenn Sie sich im Hilfe & Support Zentrum befinden, können Sie in der Liste links zum gewünschten Handbuch navigieren.

Basierend auf

delight base Framework

by delight software gmbh

siehe auch:

Benutzer am Programm anmelden

Online Update, um Ihre Anwendung auf den neusten Stand zu bringen

Die Programmoberfläche

Konfiguration Ihrer Anwendung


Programmoberfläche

Die Programmoberfläche kann je nach Konfiguration und Ausstattung Ihres Softwarepakets Abweichungen vom unten gezeigten Beispiel haben.

1. | Hauptmenü der Anwendung, um in die verschiedenen Programmbereiche der Anwendung zu navigieren. Je nach dem, in welchem Programmbereich der Anwendung Sie sich gerade befinden, stehen hier unterschiedliche Funktionen zur Verfügung.
2. | Arbeitsbereich der Anwendung, in welchem die verschiedenen Programmbereiche dargestellt werden.
3. | Statusliste mit aktuellen Informationen, wie z.B. der gerade geöffnete Programmbereich oder bei der Netzwerk-Version der angemeldete Benutzer.
4. | In der rechten, unteren Ecke ist der Status der Anwendung ersichtlich. grün = Anwendung hat nichts zu tun und wartet auf eine Aktion des Anwenders. rot = Anwendung ist beschäftigt.
5. | Backstage-Ansicht der Anwendung. Hier sind Handbücher, Hilfe sowie Einstellungen und Konfigurationsmöglichkeiten verfügbar.

siehe auch:

Startseite einstellen

Tabellen

Detailanzeige

Zusatzfunktionen der Datensätze

Konfiguration


Tabellen

Die Anwendung verfügt dank ihrer Bedienerfreundlichkeit über frei modellierbare Tabellen, die sich nach Ihren Wünschen anpassen lassen.

Je nach dem, welche Daten in einer Tabelle angezeigt werden, stehen verschiedene Funktionen und Möglichkeiten zur Verfügung.

Im oberen Bereich befinden sich die Schaltflächen mit den verfügbaren Funktionen. Gleich darunter befindet sich der Gruppierungsbereich. Um nach einer bestimmten Spalte zu gruppieren, können Sie die Spaltenüberschrift mit der Maus in diesen Bereich ziehen.

Weitere Funktionen und Einstellungen für die Tabelle und Spalten erreichen Sie über das Kontextmenü der Spaltenüberschrift.

siehe auch:

Datensätze sortieren

Datensatz editieren

Mehrfach editieren

Datensatz löschen

Datensatz hinzufügen

Tabellen filtern

Zusätzliche Funktionen

Schnellfilter


Datensätze sortieren

Klicken Sie auf eine Spaltenüberschrift, um die Daten nach dem Inhalt der Spalte zu sortieren. Beim ersten Klick werden die Daten aufsteigend sortiert. Bei einem zweiten Klick auf die gleiche Spaltenüberschrift werden die Daten absteigend sortiert. Wenn eine Spalte sortiert ist, wird dies über Pfeile entsprechend dargestellt.

Eine Tabelle kann auch nach mehreren Spalten gleichzeitig sortiert werden. Halten Sie dazu die Shift-Taste (Umschalt-Taste) während dem Klicken gedrückt.

siehe auch:

Sortierung entfernen


Sortierung entfernen

Mit Rechtsklick auf die Spaltenüberschrift kann die Sortierung wieder gelöscht werden.


Datensatz bearbeiten

Die Daten einer Tabelle können wahlweise über ein Bearbeitungsfenster oder direkt in der Tabelle bearbeitet werden.

Um Daten direkt in der Tabelle zu bearbeiten, klicken Sie auf die gewünschte Zelle und drücken Sie [Enter].

Markieren Sie einen Datensatz, und klicken Sie auf Bearbeiten, um einen Datensatz zu bearbeiten.

Führen Sie Ihre Änderungen durch und bestätigen Sie danach mit Speichern, um die Änderungen zu speichern.

Mit Abbrechen können Sie das Fenster ohne zu speichern verlassen.

siehe auch:

Mehrfach editieren


Mehrfach bearbeiten

Es können mehrere Datensätze gleichzeitig bearbeitet werden. Markieren Sie dazu vor dem Bearbeiten alle gewünschten Datensätze.

Sind mehrere Datensätze markiert, werden Sie vor dem Bearbeiten gefragt, ob Sie wirklich alle Datensätze gleichzeitig bearbeiten möchten.

Das gleichzeitige Bearbeiten von Datensätzen funktioniert nur über das Bearbeitungsfenster.

siehe auch:

Mehrere Datensätze markieren


Datensatz löschen

Markieren Sie einen Datensatz und klicken Sie auf Löschen, um einen Datensatz zu löschen.

Wenn mehrere Datensätze markiert sind, werden alle Datensätze gelöscht.

Achtung:

Die markierten Datensätze werden unwiderruflich gelöscht und können nicht wiederhergestellt werden!


Datensatz hinzufügen

Klicken Sie auf die Schaltfläche Hinzufügen, um einen neuen Datensatz anzulegen.

Führen Sie Ihre Eingaben durch und bestätigen Sie danach mit Speichern, um den Datensatz zu speichern.

Mit Abbrechen können Sie das Fenster ohne zu speichern verlassen.


Tabellen filtern

Es gibt mehrere Möglichkeiten, um die Daten einer Tabelle zu filtern.

Folgende Möglichkeiten stehe zur Verfügung:

· Spaltenüberschriften-Filter

· Schnellfilter

· Erweiterte Suche


Filter über Spaltenüberschrift

Über die Spaltenüberschrift können Sie sehr schnell und einfach die gewünschten Datensätze filtern.


Filter

Klicken Sie in der gewünschten Tabelle auf die Schaltfläche Filter um den Schnellfilter oder die Filtervorgaben zu öffnen.


Schnellfilter

Klicken Sie in den Daten-Bereich der Tabelle und drücken Sie die Tastenkombination Ctrl+F, um die Schnellfilteransicht zu öffnen. Alternativ kann dazu auch in der gewünschten Tabelle auf die Schaltfläche Filter => Schnellfilter geklickt werden.

In der Schnellfilteransicht kann die Anzeige der Datensätze gefiltert werden.

Nach Eingabe der gewünschten Suchbegriffe kann die Suche mit [Enter] gestartet werden. Der Schnellfilter sucht nach allen Inhalten, in denen die Suchbegriffe komplett oder teilweise vorkommen. Die Eingabe von * ist nicht erforderlich.

siehe auch

Erweiterte Suche


Filtervorgaben

Um nur bestimmte Datensätze anzuzeigen, können Sie die Datensätze nach sämtlichen, möglichen Kriterien filtern. Diese Filter können als Filtervorgabe gespeichert werden und stehen danach mit einem Klick im Menü Filter zur Verfügung.


Filter bearbeiten

Mit der Schaltfläche Feld hinzufügen können die Suchfelder, nach denen gefiltert werden soll, hinzugefügt werden. Über die Schaltfläche Gruppe hinzufügen können Suchgruppen hinzugefügt werden.

Auf Suchfeldern können folgende Angaben gemacht werden:

Verknüpfung:

Die Verknüpfung legt fest, wie das Suchfeld zum vorhergehenden Suchfeld verknüpft wird.

und | Alle Bedingungen müssen erfüllt sein.
oder | Mindestens eine der Bedingungen muss erfüllt sein.
und nicht | Zusätzlich darf diese Bedingung nicht erfüllt sein.

Bedingung:

Mit der Auswahlmöglichkeit (gleich, grösser als, usw.) legen Sie die Bedingung zwischen Feld und Wert fest.

gleich | Nur Datensätze, die den gleichen Wert im entsprechenden Feld haben.
grösser als | Nur Datensätze, die einen grösseren Wert im entsprechenden Feld haben.
kleiner als | Nur Datensätze, die einen kleineren Wert im entsprechenden Feld haben.
grösser gleich wie | Nur Datensätze, die den gleichen oder einen grösseren Wert im entsprechenden Feld haben.
kleiner gleich wie | Nur Datensätze, die den gleichen oder einen kleineren Wert im entsprechenden Feld haben.
ungleich wie | Nur Datensätze, die nicht den Wert im entsprechenden Feld haben.
ähnlich wie | Nur Datensätze, die einen ähnlichen Wert im entsprechenden Feld haben. Hier kann mit dem Platzhalterzeichen * gearbeitet werden. Der Suchwert PET* würde alle Datensätze zurückgeben, bei denen das entsprechende Feld mit dem Wert PET beginnt.
in verknüpfter Tabelle enthalten | Nur Datensätze, die auf eine andere Datentabelle verknüpft sind. In Wert kann die gewünschte Tabelle und das entsprechende Verknüpfungsfeld ausgewählt werden. Sobald ein Eintrag mit dieser Bedingung markiert ist, stehen unter Feld hinzufügen die Felder der Verknüpfungstabelle zur Auswahl. Damit lässt sich die Verknüpfungstabelle zusätzlich nach bestimmten Kriterien/Feldern filtern.
nicht in verknüpfter Tabelle enthalten | Nur Datensätze, die nicht auf einer anderen Datentabelle verknüpft sind. In Wert kann die gewünschte Tabelle und das entsprechende Verknüpfungsfeld ausgewählt werden. Sobald ein Eintrag mit dieser Bedingung markiert ist, stehen unter Feld hinzufügen die Felder der Verknüpfungstabelle zur Auswahl. Damit lässt sich die Verknüpfungstabelle zusätzlich nach bestimmten Kriterien/Feldern filtern.

Wert:

Geben Sie den gewünschten Wert, den Sie auf dem Suchfeld filtern möchten, im Eingabefeld ein.

Mit den Gruppierungen können Sie Suchfelder gruppieren (Gruppierungen entsprechen Klammern).

Auf einer Gruppe kann wie bei Suchfeldern die Verknüpfung angegeben werden.

Mit Filter anwenden werden die definierten Filter auf die Tabelle angewendet.

siehe auch:

Filter löschen

Filtervorgaben


Filter löschen

Über die Schaltfläche Neu können alle Filtereinträge entfernt werden.


Filtervorgaben

Filterdefinitionen können für die spätere Verwendung als Vorgabe gespeichert werden. In der Netzwerk-Version können Vorgaben zusätzlich auch global für alle Benutzer abgelegt werden. Dazu muss der Anwender die entsprechende Berechtigung besitzen.

Durch Klicken auf eine Vorgabe wird diese geladen und die Schaltfläche Filter anwenden wird aktiviert.

Vorgaben können unten rechts über dem kleinen Pfeil erstellt und bearbeitet werden.

Anmerkung:

Durch Klicken auf eine Vorgabe werden "nur" die Filterdefinitionen der Vorgabe geladen und aktiviert. Wenn die Filtervorgaben danach editiert werden, wird die Vorgabe dadurch nicht beeinflusst. Sofern Sie die Änderungen speichern möchten, müssen Sie die Vorgabe erneut speichern.


Filter importieren & exportieren

Im Menü Import & Export kann der eingestellte Filter exportiert und importiert werden. Es wird nur der Inhalt des Filters exportiert/importiert und nicht die komplette Filtervorgaben. Wenn Sie eine Filter importieren und diesen als Filtervorgaben verwenden möchten, müssen Sie den Filter nach dem Import als Filtervorgaben speichern.


Daten gruppieren

Die Daten einer Tabelle können nach praktisch jedem Feldinhalt gruppiert werden.

Sofern der Gruppierungsbereich noch nicht sichtbar ist, muss dieser mit Rechtsklick auf die Spaltenüberschrift eingeblendet werden.

Ziehen Sie die gewünschte Spaltenüberschrift mit der Maus auf den Gruppierungsbereich oben an der Tabelle.

Um Untergruppen darzustellen können auch mehrere Spaltenüberschriften nacheinander in den Gruppierungsbereich gezogen werden.


Aggregatfunktionen (Summen, Anzahl usw.)

Mit den Aggregatfunktionen können verschiedene Informationen wie z.B. Anzahl, Durchschnitt, Summen usw. in einer Spalte berechnet werden.

Sofern die Fusszeile noch nicht sichtbar ist, muss diese mit Rechtsklick auf die Spaltenüberschrift eingeblendet werden.

Klicken Sie mit der rechten Maustaste auf der Fusszeile unter der gewünschten Spalte und wählen Sie die gewünschte Funktion.


Ansichten

Für jede Tabelle können verschiedene Ansichten erstellt und gespeichert werden. In einer Ansicht werden unter anderem die Spaltenbreiten, Positionen der Spalten, Sortierung, Sichtbarkeit der Spalten, Gruppierungen, Fusszeile und verwendete Aggregatfunktionen gespeichert.

Die Ansichten werden über die Schaltfläche Ansicht verwaltet.


Ansicht speichern

Um eine Ansicht zu speichern, klicken Sie auf Ansicht.

Klicken Sie auf Speichern unter, um die Ansicht zu speichern. Falls Sie die Netzwerk-Version verwenden und die entsprechende Berechtigung besitzen, können Sie die Ansicht mit Speichern unter für alle Benutzer global für alle Benutzer speichern. In diesem Fall steht die Ansicht nach dem Speichern allen anderen Benutzern des System ebenfalls zur Verfügung.


Ansicht laden

Um eine Ansicht zu laden, klicken Sie auf Ansicht.

Wählen Sie die gewünschte Ansicht.

Zur Auswahl stehen alle globalen Ansichten sowie alle, die Sie selbst für diese Tabelle gespeichert haben.


Ansicht zurücksetzen

Mit dem Zurücksetzen der Ansicht wird die Ansicht der Tabelle in den "Werkszustand" zurückgesetzt. Alle Filter, Aggregatfunktionen (Summen, Anzahl usw.) werden entfernt, alle Spalten werden eingeblendet und nach Alphabet sortiert.

Um eine Ansicht zurückzusetzen, klicken Sie auf Ansicht und wählen Sie Ansicht zurücksetzen.


Mehrere Datensätze markieren

In einer Tabelle können mehrere Datensätze markiert werden. Die Markierungsfunktionen entsprechen dem in Windows üblichen Standard.

Markierungsfunktionen:

·Um einzelne Datensätze zu markieren, halten Sie die Ctrl (in deutsch Strg) Taste gedrückt und klicken Sie mit der linken Maustaste alle gewünschten Datensätze an.

·Um ab einem Datensatz bis zu einem bestimmten Datensatz (von-bis) zu markieren, klicken Sie den 1. Datensatz mit der linken Maustaste an, drücken und halten die Shift-Taste (Umschalttaste), während Sie den letzten Datensatz mit der linken Maustaste anklicken.

·Drücken Sie Ctrl (in deutsch Strg) und gleichzeitig A (Ctrl-A/Strg-A), um alle Datensätze zu markieren.


Zusätzliche Funktionen

Markieren Sie einen Datensatz und betätigen Sie die Schaltfläche Funktionen, um alle zusätzlich installierten Funktionen aufzurufen,

die für den Datensatz verfügbar sind.

Funktionen für die ganze Tabelle werden immer angezeigt, unabhängig davon, ob ein Datensatz markiert wurde.

Klicken Sie auf den gewünschten Eintrag, um die entsprechende Funktion zu starten.

Hinweis:

Welche Funktionen Sie zur Verfügung haben hängt von der Ausstattung und Konfiguration Ihrer Anwendung ab.


Zusatzfunktionen der Datensätze

Gewisse Felder besitzen Zusatzfunktionen. Typische Felder mit Zusatzfunktionen sind z.B. Felder mit einer Internetadresse oder einer E-Mail-Adresse.

Bei der Detailanzeige werden die Symbole der Zusatzfunktionen direkt auf dem jeweiligen Feld angezeigt.

Zeigt die Detaildaten des verknüpften Feldes.

Neue Email an die E-Mail-Adresse schreiben.

Öffnet die Internetseite.

Wählt die Telefonnummer.


Detailanzeige eines Datensatzes

In der Detailanzeige werden die Details eines Datensatzes angezeigt.

Klicken Sie auf den Feldtitel oder den Feldwert, um ein Feld zu bearbeiten. Im Eingabemodus können Sie mit der

Tabulator-Taste auf das nächste Feld springen. Mit der Eingabe-Taste (Enter) können Sie die Eingabe speichern.

Mit der ESC-Taste können Sie die Eingabe abbrechen.

Ob die Felder bearbeitet werden können hängt von der jeweiligen Ansicht ab.

Siehe auch:

Zusatzfunktionen der Datensätze


Benutzer am Programm anmelden

Das Programm in der Netzwerk-Version bietet zwei verschiedene Möglichkeiten, einen Benutzer am Programm anzumelden. Die Einzelbenutzer-Version beinhaltet keine Benutzerverwaltung und startet ohne Passwortabfrage.

Anmeldungsarten der Netzwerk-Version:

Normale Anmeldung | Anmeldung mit Benutzername und Passwort.
Windows Anmeldung | Benutzername und Passwort von Windows verwenden.


Normale Anmeldung

Wenn Sie das Programm starten, müssen Sie sich mit Benutzername und Passwort anmelden.

Die einzelnen Benutzer können in der Benutzerverwaltung verwaltet werden.

Hinweis:

Das Handbuch für die Benutzerverwaltung steht nur in der Netzwerk-Version zur Verfügung.


Windows Anmeldung

Wenn Sie die Windows Anmeldung verwenden, müssen Sie sich im Gegensatz zur normalen Anmeldung nicht mit Benutzername und Passwort anmelden.

Die Anwendung verwendet Ihren Benutzernamen und das Passwort, mit dem Sie bei Windows angemeldet sind, und meldet Sie damit automatisch an.

Wenn der Benutzername und das Passwort des Programms mit Ihrer Windows-Anmeldung übereinstimmt, wird automatisch die Windows-Anmeldung verwendet. Die einzelnen Benutzer können in der Benutzerverwaltung verwaltet werden.

Hinweis:

Das Handbuch für die Benutzerverwaltung steht nur in der Netzwerk-Version zur Verfügung.


Startseite

Auf der Startseite des Programms können verschiedene Informationen eingeblendet werden. Jeder Benutzer kann selbst bestimmen, welche Informationen er auf seiner persönlichen Startseite sehen möchte. Grösse und Position der einzelnen Elemente können ebenfalls selbst bestimmt werden.

Zur Startseite gelangen Sie durch klick auf den Button Startseite oben links.


Konfigurieren

Die Startseite kann im Reiter Start konfiguriert werden.

Hinweis:

Welche Informationen auf der Startseite zur Verfügung stehen hängt von der Ausstattung Ihres Software-Paketes ab.


Backstage-Ansicht

In der sogenannten Backstage-Ansicht sind Konfiguration, Einstellungen, Handbücher, Hilfe, Online Update usw. untergebracht.

Die Backstage-Ansicht [image] kann oben links in der Anwendung angezeigt werden.


Hilfe

Im Bereich Hilfe befinden sich Handbücher, Onlinehilfe, Online-Update und weitere Informationen.


Hilfe & Support Zentrum

Über die Backstage-Ansicht => Hilfe => Handbücher und Onlinehilfe können Sie die Handbücher zu Ihrer Anwendung einsehen.


Online Update

Mit dem Online Update können Sie Ihre Anwendung auf den neuesten Stand bringen.

Das Online Update prüft für alle Module, die lizenziert sind, ob eine neuere Version verfügbar ist. Wenn neue Versionen gefunden werden, haben Sie die Möglichkeit, diese herunterzuladen und anschliessend zu installieren.

Sie erreichen die Online Update Funktion der Backstage-Ansicht unter Hilfe => Online Update

siehe auch:

Updates installieren


Updates installieren

1. Starten Sie das Update mit der Update Funktion in der Backstage-Ansicht unter Hilfe => Online Update

2. Klicken Sie auf Weiter. In der Liste "Neue Updates" sehen Sie alle verfügbaren Updates.

Wenn Sie auf "Details" klicken, werden detailliertere Informationen zu den Neuerungen des Updates angezeigt.

3. Klicken Sie erneut auf Weiter. Die Updates werden heruntergeladen und anschliessend installiert.


Online registrieren

Mit der Online-Registrierung können Sie Ihren persönlichen Lizenzschlüssel im Programm registrieren. Wenn es sich bei Ihrem Lizenzschlüssel um eine Vollversion handelt, wird damit die Vollversion der Software freigeschaltet.

Sie erreichen die Online-Registrierung der Backstage-Ansicht unter Hilfe => Online-Registrieren

Anmerkung:

Die Online-Registrierung steht nur für Demo-Versionen zur Verfügung. Bei Vollversionen steht an dieser Stelle der Menüpunkt Lizenz aktualisieren.


Lizenz aktualisieren

Über die Lizenzaktualisierung können Sie Ihre bestehende Lizenz aktualisieren. Dies ist z.B. erforderlich, wenn Sie neue Erweiterungsmodule erworben haben und diese auf Ihrer Lizenz aufgeschaltet wurden, oder wenn die Laufzeitbeschränkung nach Bezahlung der Rechnung aufgehoben wurde. Falls Sie neue Erweiterungsmodule erworben haben, sollten Sie nach der Lizenzaktualisierung ein Online-Update ausführen. Damit werden die neuen Module vollautomatisch installiert.

Sie erreichen die Online-Registrierung der Backstage-Ansicht unter Hilfe => Lizenz aktualisieren

Anmerkung:

Die Lizenzaktualisierung steht nur für Voll-Versionen zur Verfügung. Bei Demo-Versionen steht an dieser Stelle der Menüpunkt Online registrieren.


Module

Hier sehen Sie welche Module in Ihrem System geladen wurden. Zu jedem Modul wird die Lizenzierung und die Versionsnummer angezeigt

Sie finden die Modulinformationen in der Backstage-Ansicht unter Hilfe => Module

Module sind variable "Bausteine" der Anwendung, die dynamisch geladen werden. Jedes Modul stellt bestimmte Funktionalitäten zur Verfügung.

Module können von einem Administrator auf einfache Weise hinzugefügt oder entfernt werden. Durch die Verwendung dieser Technologie ist die Anwendung sehr flexibel, was die Erweiterbarkeit, Übersichtlichkeit und Wiederverwendbarkeit betrifft.

Die meisten Module benötigen eine Lizenzierung. Wenn diese nicht vorhanden ist, kann das Modul nicht verwendet werden.

Informationen zu weiteren verfügbaren Modulen erhalten Sie bei delight software gmbh oder dem Lieferanten Ihrer Software.


Lizenzinformationen

Hier sehen Sie für welche Module Sie eine gültige Lizenz besitzen und wann diese unter Umständen abläuft.

Sie finden die Lizenzinformationen in der Backstage-Ansicht unter Hilfe => Lizenzen

Unter Globale Lizenzangaben sehen Sie Ihre persönlichen Daten der Lizenz.


Konfiguration

Im Bereich Konfiguration können sämtliche Stammdaten, Einstellungen, Berechtigungen, Felder usw. konfiguriert werden.


Programmeinstellungen

In den Programmeinstellungen können allgemeine Einstellungen zum Aussehen und Verhalten der Software konfiguriert werden.

Sie erreichen die Einstellungen der Backstage-Ansicht unter Konfiguration => Programmeinstellungen.

Anmerkung:

Es ist möglich, dass dieser Menüpunkt für Sie nicht sichtbar ist. Ist dies der Fall, haben Sie keine Berechtigung, um darauf zuzugreifen. Wenden Sie sich bitte an Ihren Administrator oder Superuser.

Siehe auch:

Konfiguration Allgemein

Konfiguration Menus


Allgemein

Wenn die Option "Tray Icon verwenden" angekreuzt ist, wird die Anwendung nicht beendet, sondern mit einem Icon neben der Windows Uhr minimiert. Durch einen Klick auf dieses Icon wird die Anwendung wieder angezeigt. Wenn diese Option eingeschaltet ist, können Sie die Anwendung mit dem Tastenkürzel Alt+F4 oder im Menu unter Datei => Beenden beenden.


Menus

Im Bereich Design können Sie die Darstellung der Menüs sowie die Platzierung der Menüeinträge konfigurieren.

Im Bereich Art des Menüs können Sie definieren, wie das Hauptmenü der Anwendung individualisiert dargestellt werden soll.

Zusätzlich können Layout-Einstellungen für die verschiedenen Menü-Arten ausgewählt werden.

Ribbon-Menü | Die Ribbon-Menüs sind bekannt durch Microsoft Office und bieten einfachen und intuitiven Umgang mit der Software.
Seiten-Menü | Zeigt die Unterprogramme in einem Menü auf der linken oder rechten Seite an.
Toolbars | Stellt das Menü als Toolbar dar.

siehe auch:

Menü Struktur


Menü Struktur

Menüeinträge können mit Drag&Drop verschoben werden. Ziehen Sie dazu den gewünschten Menüeintrag mit der Maus auf den Zielbereich.

Eine neue Menügruppierung in einem der drei Bereiche (Menü, Toolbar, Konfiguration) kann mit Rechtsklick im gewünschten Bereich erstellt werden.

Menügruppen, die keine Menüeinträge besitzen, werden nicht gespeichert.


Design

Das Erscheinungsbild der Anwendung kann für jeden Arbeitsplatz individuell eingerichtet werden.

Sie erreichen die Einstellungen der Backstage-Ansicht unter Konfiguration => Design.

Klicken Sie auf Design und wählen Sie das gewünschte Aussehen. Diese Einstellung ist benutzerabhängig, d.h. jeder Benutzer kann seine eigene, persönliche Einstellung wählen.

Anmerkung:

Das Design kann auch in den Programmeinstellungen angepasst werden.


Datenbankfelder

Im Bereich Datenbankfelder können (Datenbank-) Felder und Kategorien verwaltet werden.

Sie erreichen die Einstellungen der Backstage-Ansicht unter Konfiguration => Datenbankfelder.

Wo Konfigurationsmöglichkeiten bestehen, können beliebig viele Datenbankfelder erstellt werden. Jedes Feld kann einer Kategorie zugeordnet und in verschiedenen Ansichten und Ansichtsvorlagen eingeblendet werden.

Links befindet sich eine Baumansicht für den Zugriff auf die einzelnen Konfigurationsbereiche. Auf der ersten Ebene befinden sich die Module (Adressverwaltung, Auftrag, Artikel usw.). Welche Module zur Verfügung stehen, hängt von der eingesetzten Programmversion ab.

Unterhalb der Module befinden sich die einzelnen Bereiche im Modul selbst. In der Adressverwaltung z.B. die Adressfelder. Auf einem Bereich können Felder erstellt, Felder an Kategorien zugeordnet, Ansichtsvorlagen sowie Ansichten verwaltet werden.


Datenbankfelder verwalten

Wählen Sie in der Baumansicht auf der linken Seite den gewünschten Bereich und wechseln Sie danach auf den Reiter Zusatzfelder.


Datenbankfelder erstellen

Klicken Sie auf Hinzufügen, um ein neues Feld zu erstellen.

Wählen Sie einen Titel/Namen sowie einen Datentyp für das neue Feld und klicken Sie auf Speichern.

Im Feld Auswahlliste kann eine Liste mit Vorgabewerten, die später bei der Eingabe zur Verfügung stehen sollen, hinterlegt werden.

Verfügbare Datentypen:

Textfeld

Feld zur Eingabe von Text. In Länge kann die maximale Länge definiert werden. Erlaubter Höchstwert für Länge ist 254.

Zahl (ohne Komma)

Zahlenfeld für ganze Zahlen ohne Nachkommastellen.

Gleitkomma-Zahl

Zahlenfeld für Gleitkommazahlen. In Präzision können die Anzahl Nachkommastellen definiert werden.

Datum

Feld zu Eingabe von Datumswerten ohne Zeitanteil.

Zeit

Feld zu Eingabe von Zeitwerten ohne Datumsanteil.

Datum und Zeit

Feld zu Eingabe von Datumswerten mit Zeitanteil.

Langes Textfeld

Feld für die Eingabe sehr langer Texte (länger als 254 Zeichen). Die Verwendung normaler Textfelder wird empfohlen. Das lange Textfeld sollte nur dann zum Einsatz kommen, wenn das normale Textfeld nicht ausreicht.

Checkbox

Ja/Nein Eingabefeld.

Bild

Eingabefeld, um ein Bild zu speichern.

Key=Value Auswahlliste

Eingabefeld für eine sogenannte Key-Value-Liste in der Form von:

1=Option A

2=Option B

Der Wert vor dem Gleichzeichen (=) wird in die Datenbank gespeichert, der Wert nach dem Gleichzeichen wird zur Anzeige/Auswahl verwendet.

Die Liste wird im Feld Auswahlliste hinterlegt.

Farbauswahl

Eingabefeld für Farbe mit einer Farbauswahl.

Verknüpfung aus XY

Je nach dem, welche Module installiert sind, werden verschiedene Verknüpfungsmöglichkeiten auf andere Datensätze angeboten, z.B.:

Verknüpfung auf Länderstamm - Zeigt ein Eingabefeld zur Auswahl eines Landes, das im Länderstamm hinterlegt ist.

Datensatz aus Detaildaten

Je nach dem, welche Module installiert sind, stehen eventuell noch weitere Verknüpfungsmöglichkeiten zur Verfügung. Ein Detail-Datensatzbereich aus der CRM-Adressverwaltung würde hier z.B. ebenfalls zur Auswahl stehen.

Verfügbare Flags:

Email-Feld | Aktiviert alle Email-Funktionen auf diesem Feld (Email-Archivierung, Email-Anhang, usw. sofern verfügbar)
URL-Feld | Behandelt den Inhalt des Feldes als (Internet-) URL.
Telefon-Feld | Aktiviert alle Telefon-Funktionen auf diesem Feld (Anruferkennung, Wahlhilfe usw. sofern verfügbar)
Mobilnummer-Feld | Aktiviert alle Telefon- und Mobilfunktionen auf diesem Feld (SMS, Anruferkennung, Wahlhilfe usw. sofern verfügbar).
Fax-Feld | Aktiviert alle Fax-Funktionen auf diesem Feld.
Skype-Feld | Aktiviert alle Telefon-Funktionen auf diesem Feld (Anruferkennung, Wahlhilfe usw. sofern verfügbar)


Datenbankfelder löschen

Wählen Sie das gewünschte Feld und klicken Sie auf Löschen.

Anmerkung für Administratoren:

Aus Sicherheitsgründen wird das Feld nur im Programm gelöscht, nicht aber in der Datenbank.


Kategorien der Felder

Wählen Sie in der Baumansicht auf der linken Seite den gewünschten Bereich und wechseln Sie danach auf den Reiter Kategorien.

In der Liste der Kategorien kann jedes Feld einer Kategorie zugeordnet werden. In der Spalte Kategorie kann ein beliebiger Wert gesetzt oder eine bestehende Kategorie ausgewählt werden. Um eine neue Kategorie zu erstellen, kann diese einfach in das gewünschte Feld geschrieben werden.

Die Kategorien werden verwendet, um die Daten in der Detailanzeige eines Datensatzes in den entsprechenden Kategorien anzuzeigen. Welche Felder in welcher Reihenfolge angezeigt werden wird auf den Ansichten definiert.


Ansichtvorlagen

Ansichtsvorlagen

Wählen Sie in der Baumansicht auf der linken Seite den Punkt Ansichtvorlage im gewünschten Bereich.

In jedem Bereich können beliebig viele Ansichtsvorlagen erstellt werden. Bei einer Ansichtsvorlage handelt es sich um die Definition, welche Felder in welcher Kategorie sichtbar sind. Die Ansichtsvorlagen können dann auf den verschiedenen Ansichten verwendet werden.

Die Standard-Ansichtsvorlage wird auf allen Ansichten verwendet, wo nicht explizit eine andere Einstellung vorgenommen wurde.


Ansichtvorlage hinzufügen

Ansichtsvorlage hinzufügen

Klicken Sie auf Hinzufügen, um eine neue Ansichtsvorlage zu erstellen.

Geben Sie der Ansichtsvorlage einen Namen und klicken Sie auf OK.


Ansichtvorlage löschen

Ansichtsvorlage löschen

Wählen Sie die gewünschte Ansichtsvorlage und klicken Sie auf Löschen.

Anmerkung:

Wenn die Ansichtsvorlage noch an einer anderen Stelle im Programm in Verwendung ist, kann die Ansichtsvorlage nicht gelöscht werden.


Felder definieren

Markieren Sie die Ansichtsvorlage, auf welcher Sie die Felder ändern möchten.

Im Bereich Kategorien sind alle verfügbaren Kategorien der Felder aufgelistet. Klicken Sie auf eine Kategorie, um die darin enthaltenen Felder anzuzeigen (rechts).

Markieren Sie alle Felder, die in dieser Kategorie eingeblendet werden sollen. Per Drag&Drop (Klicken&Ziehen) oder mit den Pfeilen [image] können die Felder angeordnet werden.

Anmerkung:

Nicht markierte Felder (=unsichtbar) werden beim Speichern automatisch hinter das letzte sichtbare Feld platziert.


Ansichten

Im Bereich Ansichten für 'XY' befinden sich die eigentlichen Ansichten, die im Programm z.B. bei Detailanzeige eines Datensatzes verwendet werden.

In der Grundeinstellung wird für jede Ansicht die Standard-Ansichtsvorlage verwendet. Da für viele dieser Ansichten oftmals die selben Feldansichten verwendet werden müssen/sollen, kann jeder Ansicht eine Ansichtsvorlage zugewiesen werden.

Wird bei Feldeinstellungen die Auswahl <Individuell> gewählt, können die Felder für die entsprechende Ansicht separat und unabhängig von einer Ansichtsvorlage definiert werden. Die Definition der Felder funktioniert in diesem Fall exakt so wie auch bei den Ansichtsvorlagen.


Programme

Im Bereich Programme werden sämtliche Einstellungen, die durch die installierten Softwaremodule zur Verfügung stehen, aufgeführt. Die Dokumentation der einzelnen Programmbereiche finden Sie im jeweiligen Handbuch.

Sie erreichen die Einstellungen der Backstage-Ansicht unter Konfiguration.


delight base

Diese Anwendung basiert auf

delight base

Version 6.x

Die universelle und leistungsstarke Basis für Datenbankanwendungen

Was ist delight base

delight base ist eine universelle Datenbankbasis, die es ermöglicht, in sehr kurzer Zeit eine komplette Datenbankanwendung für den Endbenutzer zu erstellen.

Datenbankanwendungen basierend auf delight base sind modular aufgebaut. Das bedeutet, dass die anwendungsspezifischen Funktionen in Modulen bereitgestellt werden.

delight base bildet das Bindeglied zwischen Datenbank und den Modulen. Es stellt dabei die Verbindung zur Datenbank her und stellt die Daten daraus den Modulen zu Verfügung.

delight base ist mehrbenutzerfähig.

Bei Datenbankanwendungen basierend auf delight base können sich verschiedene Benutzer mit Benutzername und Passwort anmelden. delight base erkennt den angemeldeten Benutzer und stellt die ihm zustehenden Module und Daten aus der Datenbank zur Verfügung. Der Zugriff auf Daten und Anwendungsfunktionen kann für jeden Benutzer individuell eingeschränkt werden.

delight base ist netzwerkfähig.

Datenbankanwendungen basierend auf delight base, welche auf verschiedenen Computer installiert sind, können über ein Netzwerk oder über das Internet auf die selben Daten einer Datenbank zugreifen.

delight base ist beliebig erweiterbar

Durch den modularen Aufbau können delight base-basierende Datenbankanwendungen im Funktionsumfang, durch Erweiterung der integrierten Module oder durch zusätzliche Module beliebig und schnell erweitert werden.

siehe auch:

delight base Anwendung

Versionen von delight base


Versionen

delight base Einzelbenutzer

Wird als Basis für einfache Datenbankanwendungen verwendet, die von einem Benutzer lokal auf einem Computer angewendet werden kann. Diese Version ist nicht mehrbenutzerfähig.

delight base Netzwerk

Wird als Basis für Datenbankanwendungen verwendet, die auf mehreren Computer installiert sind und die von mehreren Benutzern gleichzeitig verwendet werden können. Die Daten befinden sich zentral auf einem Datenbankserver. Alle Benutzer haben über ein Netzwerk oder über das Internet (z.B. VPN) Zugriff auf diesen zentralen Datenbestand.


Adressverwaltung

In der Adressverwaltung können alle Adressen (Kunden, Lieferanten, Partner, usw.) zentral verwaltet werden.

Jede Adresse kann einer oder mehreren Zuordnungen zugeordnet werden. Über diese Zuordnungen können die Adressen in einer Baumstruktur kategorisiert und geordnet werden.


Adressen

Im Bereich Adressen können die einzelnen Adressen verwaltet und erfasst werden.

Hier können alle Aktionen die mit einer einzelnen Adresse zu tun haben vorgenommen werden.

Im linken Bereich des Fensters befindet sich die Adressliste sowie der Selektions- und Filterbereich.

Im grösseren rechten Bereich befinden sich alle Informationen und Angaben zur Adresse, die in der Adressliste ausgewählt ist.

Der rechte Bereich ist in folgende Unterbereiche aufgeteilt:

Details | Details zur ausgewählten Adresse. Es sind nur Felder, die für die Zuordnungen der Adresse eingestellt wurden, sichtbar.
Notizen | Notizen zur ausgewählten Adresse.
Zuordnungen | Zuordnungen, denen die ausgewählte Adresse zugeordnet ist.
Informationsfluss | Informationsfluss, welcher auf der ausgewählten Adresse stattgefunden hat.


Adressliste

Die Adressliste beinhaltet alle erfassten Adressen.

Über Filter und Selektion können die Adressen nach ihren Zuordnungen und weiteren Kriterien gefiltert werden.

siehe auch:

Adresse erfassen

Filter und Selektion

Allgemeine Dokumentation:

Tabellen


Filter und Selektion

Im Filter- und Selektionsbereich kann die Adressliste nach verschiedenen Kriterien gefiltert werden. Durch klicken/markieren auf den gewünschten Eintrag werden in der Adressliste nur noch Adressen angezeigt, die auf den markierten Eintrag zutreffen. Durch Mehrfachauswahl können mehrere Einträge gleichzeitig ausgewählt/markiert werden.

Beispiel: Um in der Adressliste nur Adressen einer bestimmten Zuordnung zu sehen, kann in der Baumansicht die gewünschte Zuordnung markiert werden. Werden mehrere Zuordnungen gleichzeitig markiert, werden in der Adressliste entsprechend alle Adressen, die in einer der markierten Zuordnungen sind, angezeigt.

Über dem obersten Eintrag in der Baumansicht (<Alle Adressen>) werden in der Adressliste alle im Programm vorhandenen Adressen angezeigt (sofern keine anderen Filter gesetzt sind).

Zusätzlich können Sie die Adressliste über die Spaltenüberschrift, über den Experten Filter sowie über den Schnellfilter nach weiteren Suchbegriffen filtern.

siehe auch:

Schnellfilter


Schnellfilter

Über den Schnellfilter können Sie sehr schnell nach Adressen suchen.

Geben Sie hier den gewünschten Suchbegriff ein. Sobald Sie für kurze Zeit keine Eingabe mehr machen, wird die Adressliste automatisch nach dem eingegebenen Begriff gefiltert. Über das kleine Bild (links im Eingabefeld) kann der gewünschte Such-Modus ausgewählt werden.

Über die Schaltfläche [image] oder die Tastenkombination Ctrl+F in der Adressliste kann auf den detaillierten Schnellfilter gewechselt werden.

In der Schnellfilter-Ansicht können Kriterien, nach denen die Adressliste gefiltert werden soll, definiert werden.

Wenn man z.B. in der Adressliste nur Adressen mit der Postleitzahl 9000 sehen möchte, kann man im Eingabefeld PLZ: die Zahl 9000 eintragen. Um das Fenster zu schliessen und die eingetragenen Filterkriterien zu aktivieren, drücken Sie [Enter].

Es kann nach mehreren Kriterien gleichzeitig gefiltert werden, das heisst, es kann zum Beispiel nach Land und Name gleichzeitig gefiltert werden. In diesem Fall würden nur Adressen, die dem Land UND dem Namen entsprechen, angezeigt werden.

Wenn in einem Textfeld gefiltert wird, werden alle Adressen, die den angegebenen Text in diesem Feld beinhalten angezeigt.

Wenn z.B. im Feld Name: nach dem Text "pe" gefiltert wird, werden alle Adressen in deren Namen "pe" vorkommt angezeigt.

siehe auch:

Erweiterte Suche

Filter über Spaltenüberschrift

Allgemeine Dokumentation:

Schnellfilter


Filter über Spaltenüberschrift

Über die Spaltenüberschrift können Sie sehr schnell und einfach die gewünschten Datensätze filtern.

Weitere Informationen, wie man über die Spaltenüberschrift filtert, finden Sie in der Allgemeinen Dokumentation unter Filter über Spaltenüberschrift.

siehe auch:

Erweiterte Suche

Schnellfilter

Allgemeine Dokumentation:

Filter über Spaltenüberschrift


Experten Filter

Über das erweiterte Suchen kann die Adressliste detailliert gefiltert werden.

Weitere Informationen zur Verwendung der erweiterten Suche finden Sie in der Allgemeinen Dokumentation unter Erweiterte Suche.

siehe auch:

Schnellfilter

Filter über Spaltenüberschrift


Adresse erfassen

Über die Schaltfläche Hinzufügen in der Adressliste kann eine neue Adresse erfasst werden.

Wenn die Adressliste unter Filter und Selektion auf eine Zuordnung gefiltert ist, wird die neue Adresse automatisch mit dieser Zuordnung erfasst.

Welche Felder im Fenster zum Erfassen der neuen Adresse verfügbar sind, hängt von der unter Filter und Selektion ausgewählten Zuordnung ab. Ist keine Zuordnung ausgewählt, werden die Standard-Felder angezeigt.

Durch klicken auf die Schaltfläche Speichern wird die neue Adresse gespeichert.

Hinweis:

Ist die Telefonbuch-CD-Erweiterung installiert, kann eine Adresse direkt aus dieser importiert werden (z.B. TwixTel).

Klicken Sie dazu auf das entsprechende Symbol.

Allgemeine Dokumentation:

Datensatz hinzufügen

Tabellen


Adresse löschen

Über die Schaltfläche Löschen in der Adressliste kann die ausgewählte Adresse gelöscht werden.

Allgemeine Dokumentation:

Datensatz löschen

Tabellen


Details

Im Bereich Details sind die Detailangaben der Adresse ersichtlich.

Es sind nur Felder sichtbar, die für die Zuordnungen der Adresse eingestellt wurden. Falls die sichtbare Adresse keiner Zuordnung zugeordnet ist, werden die Standard-Felder angezeigt. Durch klicken auf die Daten eines Feldes kann das Feld bearbeitet werden.

Oben links ist der Status der markierten Adresse sichtbar, durch klicken kann dieser jederzeit geändert werden.

Rechts im Feld Bemerkungen können kurz gefasste (max. 250 Zeichen) Anmerkungen zur Adresse erfasst werden. Längere Bemerkungen können in den Notizen notiert werden. In Kontaktpersonen können der Adresse Kontaktpersonen zugeordnet werden. In Steht in Verbindung mit Adressen ist ersichtlich, auf welchen anderen Adressen die aktuelle Adresse als Kontaktperson eingetragen ist.

Im Bereich Klassifikation kann die Adresse anhand von verschiedenen Kriterien klassifiziert werden. Eine Klassifikation könnte z.B. sein: "Im Vorstand als Geschäftsführer".

Weitere Informationen finden Sie in der allgemeinen Dokumentation unter Detailanzeige eines Datensatzes.

siehe auch:

Einstellungen Zuordnungen


Kontaktpersonen

Im Bereich Kontaktpersonen können neue Kontaktpersonen erfasst oder bereits bestehende Adressen als Kontaktperson verknüpft werden.

Über die Schaltfläche Hinzufügen kann eine neue Kontaktperson erfasst werden.

Eine bereits im Programm erfasste Adresse kann über Bestehende Adresse verknüpfen als Kontaktperson hinzugefügt werden.

Über den Menüpunk Neue Adresse kann eine neue Adresse erfasst und als Kontaktperson gespeichert werden.

Mit Doppelklick auf eine Adresse wird diese geöffnet.

Im Bereich Steht in Verbindung mit Adressen wird angezeigt, auf welchen anderen Adressen die aktuelle Adresse als Kontaktperson eingetragen ist.

siehe auch:

Kontaktperson verknüpfen

Kontaktperson erfassen


Kontaktperson verknüpfen

Über Kontaktperson verknüpfen kann eine bestehende Adresse als Kontaktperson auf eine andere Adresse verknüpft werden.

Eine Adresse kann auf beliebig viele verschiedene Adressen verknüpft werden.

1. Wählen Sie die Adresse, die als Kontaktperson hinzugefügt werden soll.

2. Wählen Sie unter Verknüpfen als mit welcher Beziehung diese Adresse verknüpft werden soll.

(Im oben gezeigten Bild wird "Frau Susi Schnell" als "Ehefrau" verknüpft)


Kontaktperson erfassen

Über Neue Adresse kann eine neue Adresse erfasst und als Kontaktperson auf eine andere Adresse verknüpft werden.

Die neu erfasste Adresse kann später zusätzlich (über Kontaktperson verknüpfen) auf beliebig viele andere Adressen verknüpft werden.

1. Wählen Sie unter Typ mit welcher Beziehung die neue Adresse verknüpft werden soll.

2. Geben Sie Anrede, Name, Vorname und Geburtsdatum für die neue Adresse ein. Alle anderen Adressdaten werden automatisch von der aktuellen Adresse kopiert.


Zuordnungen

Im Bereich Zuordnungen kann die Adresse beliebig vielen Zuordnungen zugeordnet werden.

Über die Zuordnungen kann die Adresse logisch, in einer Baumstruktur kategorisiert und eingeordnet werden.

Die Adressliste kann über Filter und Selektion nach diesen Zuordnungen gefiltert werden.

Über die Zuordnungen wird bestimmt, welche Felder der Adresse in den Details sichtbar sind.

siehe auch:

Einstellungen Zuordnungen


Foto/Logo

Im Bereich Foto/Logo kann ein Passfoto oder ein Firmenlogo auf der Adresse hinterlegt werden.

Über die Schaltfläche Hinzufügen kann ein neues Foto/Logo aus einer Grafikdatei importiert werden.

Falls Sie einen Scanner oder eine Digitalkamera an ihrem PC angeschlossen haben, können Sie das Bild direkt über Einscannen vom entsprechenden Gerät importieren.

Mit Löschen kann das Bild entfernt werden.

Hinweis:

Die Funktion Einscannen steht erst ab den Professional-Versionen (oder höher) zur Verfügung.


Klassifikation

Im Bereich Klassifikation kann die Adresse anhand verschiedener Kriterien klassifiziert werden.

Über die Schaltfläche Hinzufügen kann eine neue Klassifikation zur Adresse hinzugefügt werden.


Notizen

Im Bereich Notizen können beliebig viele Notizen auf einer Adresse erfasst werden.

Kurze Notizen können in den Text Notizen erfasst werden. Grössere Notizen mit Bildern und Formatierung werden in Erweiterte Notizen erfasst.

siehe auch:

Text Notizen

Erweiterte Notizen


Text Notizen

In den Text-Notizen können Sie kurze Notizen ohne Bilder und Formatierungen erfassen.


Erweiterte Notizen

In den erweiterten Notizen können Sie detaillierte Notizen mit Bildern, Tabellen usw. erstellen.

Die einzelnen Notizen müssen in Ordner abgelegt werden. Auf den einzelnen Ordner kann ebenfalls eine detaillierte Beschreibung hinterlegt werden.


Informationsfluss

Dieser Bereich ist nur im Produkt "delight address" verfügbar.

Im Bereich Informationsfluss können alle Aktionen, die mit der Adresse stattgefunden haben, erfasst werden.

Anmerkung:

Der Informationsfluss ist sehr einfach gehalten. Ein ausführliches und umfangreiches Journal mit vielen erweiterten Funktionen

und Möglichkeiten ist erst in den umfangreicheren Programmpaketen wie z.B. delight crm enthalten.

siehe auch:

Einstellungen Informationsfluss


Adresslisten

Im Bereich Adresslisten können Auszüge aus der Adressliste erstellt und weiterverarbeitet werden.

Hier können alle Aktionen, die mit mehreren Adressen zu tun haben, vorgenommen werden.

Im oberen Bereich des Fensters befindet sich die Adressliste sowie der Selektions- und Filterbereich.

Im linken Bereich befindet sich die Liste mit allen Zuordnungen der markierten Adresse. Die Zuordnungen können auch für mehrere Adressen gleichzeitig bearbeitet werden. Markieren Sie dazu die gewünschten Adressen in der Adressliste. Das Bearbeiten mehrerer Adressen gleichzeitig ist ebenfalls möglich.


Berichte

Hier können Berichte wie z.B. Adresslisten, Serienbriefe, Etiketten usw. für alle Adressen, die in der Adressliste sichtbar sind, erstellt werden.

Um eine bestimmte Auswahl an Adressen für den Bericht zu verwenden, können Sie über Filter und Selektion die Adressliste filtern.

siehe auch:

Einstellungen Berichte


Import/Export

Hier können alle in der Adressliste sichtbaren Adressen importiert und exportiert werden.

Mit der Schaltfläche VCard für alle Adressen können alle Adressen in die Formate VCard oder LDIF exportiert werden.

Mit der Schaltfläche Adressliste im Bereich Export können alle Adressen, wie sie in der Adressliste angezeigt werden, mit dem Datenexport-Modul exportiert werden.

Mit der Schaltfläche Adressliste im Bereich Import können Adressen aus externen Datenquellen (Dateien, Datenbanken usw.) mit dem Datenimport-Modul in die aktive Zuordnung importiert werden.

Hinweis:

Wenn Sie mehrere Adressen selektiert haben, werden nur die selektierten Adressen exportiert (gilt nicht beim VCard-Export).

Falls eine Funktion nicht verfügbar ist, steht das benötigte Erweiterungs-Modul nicht zur Verfügung.


VCard Export

Klicken Sie im Bereich Export auf die Schaltfläche Einzelnen VCard, um das Fenster für den Export zu öffnen.

Es gibt zwei verschiedene Möglichkeiten die VCards zu exportieren:

Export in eine Datei

Alle VCards werden in eine Datei gespeichert.

Geben Sie einen Dateinamen an, unter dem die VCards gespeichert werden sollen.

Export in einzelne Dateien

Jede VCard wird in eine einzelne Datei gespeichert.

Markieren Sie alle Felder, die für den Dateinamen verwendet werden sollen.

Durch Klicken auf die Schaltfläche Exportieren wird der VCard Export gestartet.

Hinweis:

MS OutlookTM unterstützt nur VCard Version 2.1 in einzelnen Dateien.


Einstellungen

Im Bereich Einstellungen können Einstellungen und Stammdaten zur Adressverwaltung konfiguriert und auf Ihre Wünsche angepasst werden.

Die Einstellungen werden in der Backstage-Ansicht unter Konfiguration aufgerufen.

Verfügbare Einstellungen:

Zuordnungen | Konfiguration der sichtbaren Felder und Verwaltung der Zuordnungen.
Informationsfluss | Informationsfluss-Arten verwalten.
Anreden | Anreden verwalten.
Ausweisformen | Ausweisformen verwalten.
Zivilstände | Zivilstände verwalten.
Branchen | Branchen verwalten.
Interessen | Verfügbare Werte des Feldes "Interessen" verwalten.
Eigenschaften | Verfügbare Werte des Feldes "Eigenschaften" verwalten.
Externe Feldeinstellungen | Zuordnungen der Adressfelder für den Import.
Outlook Import | Zuordnungen der Outlook-Felder zu den verfügbaren Adressfeldern.
Berichte | Verwaltung der Vorlagen für die Berichte der Adressverwaltung.
Länder | Verwaltung der Ländertabelle.
Sprachen | Verwaltung der Sprachen
Postleitzahlen/Regionen | Verwaltung des Postleitzahlenverzeichnisses.
Banken | Verwaltung der Bankentabelle.
Status | Status der Adressen verwalten.
Kontaktpersonen | Typen von Kontaktpersonen verwalten.
Eigene Adresse | Eigene Adresse definieren.
Makros | Makros für Adressen verwalten.
Schnellfilter | Felder für den Namen-Schnellfilter definieren.
Klassifizierung | Klassifizierungen für Adressen verwalten.
Tätigkeitsstatus | Die verschiedenen Tätigkeitsstatus verwalten.


Zuordnungen

Hier können Zuordnungen erstellt und bearbeitet werden. Es können beliebig viele Zuordnungen erfasst werden.

Die Zuordnungsart bestimmt, welche Art von Adressen eine Zuordnung enthält. Ist es z.B. irgendwo im Programm erforderlich, dass alle Mitarbeiter angezeigt werden, so werden an dieser Stelle alle Adressen aus den Zuordnungen mit der Zuordnungsart "Mitarbeiter" angezeigt.

siehe auch:

Zuordnung hinzufügen

Details

Adresse erfassen

Allgemeine Dokumentation:

Tabellen


Zuordnung hinzufügen

Durch klicken auf die Schaltfläche Hinzufügen kann eine neue Zuordnung hinzugefügt werden.

Geben Sie einen Namen für die neue Zuordnung ein und klicken Sie auf die

Schaltfläche Speichern um die Zuordnung zu erfassen.

Allgemeine Dokumentation:

Datensatz hinzufügen


Informationsfluss

Dieser Bereich ist nur im Produkt "delight address" verfügbar.

Hier können die Informationsfluss-Arten definiert werden.

Diese stehen als Kategorie unter Informationsfluss zur Verfügung.

Über die Schaltfläche Auf allen Adressen löschen können alle Einträge im Informationsfluss auf allen Adressen gelöscht werden.

Achtung: Die Einträge werden unwiderruflich gelöscht!

Allgemeine Dokumentation:

Tabellen


Anreden

Hier können die verfügbaren Anreden für die Adressen definiert werden.

Diese stehen z.B. unter Details in der Auswahlliste des Feldes Anrede zur Verfügung.

Allgemeine Dokumentation:

Tabellen


Ausweisformen

Hier können die verfügbaren Ausweisformen für die Adressen definiert werden.

Diese stehen z.B. unter Details in der Auswahlliste des Feldes Ausweis zur Verfügung.

Allgemeine Dokumentation:

Tabellen


Zivilstände

Hier können die verfügbaren Zivilstände für die Adressen definiert werden.

Diese stehen z.B. unter Details in der Auswahlliste des Feldes Zivilstand zur Verfügung.

Allgemeine Dokumentation:

Tabellen


Branchen

Hier können die verfügbaren Branchen für die Adressen definiert werden.

Diese stehen z.B. unter Details in der Auswahlliste des Feldes Branche zur Verfügung.

Allgemeine Dokumentation:

Tabellen


Interessen

Hier können die verfügbaren Interessen für die Adressen definiert werden.

Diese stehen z.B. unter Details in der Auswahlliste des Feldes Interessen zur Verfügung.

Allgemeine Dokumentation:

Tabellen


Eigenschaften

Hier können die verfügbaren Eigenschaften für die Adressen definiert werden.

Diese stehen z.B. unter Details in der Auswahlliste des Feldes Eigenschaften zur Verfügung.

Allgemeine Dokumentation:

Tabellen


Externe Feldeinstellungen

Hier können die Einstellungen für den VCard Import und Export sowie für die Synchronisation mit externen Adress-Quellen definiert werden.

Feldzuordnungen:

Hier wird definiert, wie die Felder der Datenbank beim Importieren und Exportieren zu den Feldern der VCard zugeordnet werden.

In der linken Spalte sind alle verfügbaren Felder der Adressen ersichtlich. In der rechten Spalte sind alle Felder aufgeführt, die bei einer VCard verfügbar sind.

Wählen Sie in den Auswahlmenüs (rechts) ein VCard-Feld, um es einem Adressfeld zuzuordnen.

Schlüsselfelder:

Die hier markierten Felder werden beim Importieren von Adress-Daten verwendet. Mit diesen Feldern wird geprüft, ob eine Adresse bereits existiert.


Outlook Import

Hier können die Einstellungen für den Outlook Import definiert werden.

Feldzuordnungen:

Hier wird definiert, wie die Felder der Datenbank beim Importieren den Feldern von Outlook zugeordnet werden.

In der linken Spalte sind alle verfügbaren Felder der Adressen ersichtlich. In der rechten Spalte sind alle Felder aufgeführt, die bei Outlook verfügbar sind.

Wählen Sie in den Auswahlmenüs (rechts) ein Outlook-Feld, um es einem Adressfeld zuzuordnen.


Berichte

Dieser Unterbereich ist nur im Produkt "delight address" verfügbar.

Hier können die Einstellungen für die Berichte-Vorlagen der Adressverwaltung verwaltet werden.

Um diese Funktion zu nutzen, muss das Berichte-Modul installiert sein.

Informationsfluss-Art:

Wählen Sie aus der Auswahlliste eine Informationsfluss-Art die beim Erstellen des Berichtes auf einer Adresse erfasst werden soll.

Die Vorlagen können im Vorlageneditor des Berichte-Modules erstellt und bearbeitet werden.

Dokumentation Berichte-Modul:

Berichte-Modul

Vorlageneditor


Länder

Hier können die verfügbaren Länder für die Adressen definiert werden.

Diese stehen z.B. unter Details in der Auswahlliste der Felder Land oder Nationalität zur Verfügung.

Allgemeine Dokumentation:

Tabellen


Sprachen

Hier können die verfügbaren Sprachen für die Adressen definiert werden.

Diese stehen z.B. unter Details in der Auswahlliste der Feldes Korrespondenz-Sprache zur Verfügung.

Allgemeine Dokumentation:

Tabellen


Postleitzahlen/Regionen

Hier können die verfügbaren Postleitzahlen für die Adressen definiert werden.

Diese wird z.B. beim Erfassen einer Adresse verwendet, um nach Eingabe der Postleitzahl automatisch den Ort auszufüllen.

Jede Postleitzahl kann einer Region zugeordnet werden.

Allgemeine Dokumentation:

Tabellen


Regionen

Hier können die Regionen für die Postleitzahlen definiert werden.

Die Regionen können den Postleitzahlen zugeordnet werden.

Optional kann jeder Region ein Kanton/Bundesland zugeordnet werden.

Allgemeine Dokumentation:

Tabellen


Kantone/Bundesländer

Hier können die Kantone/Bundesländer für die Postleitzahlen definiert werden.

Die Kantone/Bundesländer können den Postleitzahlen zugeordnet werden.

Allgemeine Dokumentation:

Tabellen


Banken

Hier können die verfügbaren Banken für die Adressen definiert werden.

Diese stehen z.B. unter Details in der Auswahlliste des Feldes Bank zur Verfügung.

Allgemeine Dokumentation:

Tabellen


Status

Hier kann der verfügbare Status für die Adressen definiert werden.

Diese stehen z.B. unter Details in der Auswahlliste des Feldes Status zur Verfügung.

Allgemeine Dokumentation:

Tabellen


Kontaktpersonen

Hier können die verfügbaren Typen von Kontaktpersonen definiert werden.


Eigene Adresse

Hier kann die eigene Adresse definiert werden.

Die eigene Adresse wird z.B. für die Kopfzeilen in Berichtvorlagen verwendet.

Die eigene Adresse ist entweder Ihre Firmenadresse oder Ihre private Adresse, je nach dem, wie Sie das Programm einsetzen.

Über Erweiterte Einstellungen kann die Verknüpfung auf eine andere, bereits im Programm erfasste Adresse geändert werden.


Makros

Hier können die Adressmakros definiert werden.

Makros werden z.B. für die persönliche Anrede auf Berichtvorlagen verwendet.


Schnellfilter

Hier kann definiert werden, welche Adress-Felder der Schnellfilter zur Suche nach Name und Vorname in die Suche einbeziehen soll.


Klassifizierung

Hier können die Klassifizierungen für die Adressen verwaltet werden. Jeder Klassifizierungsart können mehrere "Funktionen" zugeordnet werden.


Tätigkeitsstatus

Hier kann der Tätigkeitsstatus für Adressen verwaltet werden.


Dubletten-Prüfung

Die Dubletten-Prüfung befindet sich im Hauptmenü unter Tools => Dubletten-Prüfung.

Mit der Dubletten-Prüfung kann anhand verschiedener Kriterien nach doppelt vorhandenen Adressen gesucht werden.

Werden doppelt vorhandene Adressen gefunden, können diese zusammengeführt und bereinigt werden.

siehe auch:

Optionen


Optionen

In den Optionen können verschiedene Kriterien zur Suche nach Dubletten vorgenommen werden.


Dubletten bereinigen

Hier werden alle Dubletten, die anhand der Kriterien gefunden wurden, aufgelistet.

Achtung: Es müssen nicht unbedingt alles Dubletten sein, die hier angezeigt werden!

Hier werden alle Adressen, die anhand der eingestellten Kriterien für identisch befunden wurden, angezeigt. Mit einem Klick auf Zurück können die Kriterien geändert werden und es kann erneut nach Dubletten gesucht werden.

(Hier wurden zwei Dubletten mit jeweils zwei Adressen gefunden)

Mit Rechts-Klick auf eine Adresse kann das Menü zur Bearbeitung der Dubletten aufgerufen werden.

Zum bereinigen der doppelten Adressen muss eine Adresse als Referenz und die anderen zur Löschung markiert werden.

Die Referenz-Adresse wird beibehalten und mit den Daten der anderen (zur Löschung markierten) Adressen ergänzt.

Im Oben gezeigten Bild ist "Petra Müller Müllerei 23" als Referenz markiert und die durchgestrichene Adresse ist zur Löschung markiert. Die Dublette "Hubert Specht 06.06.1965" wurde noch nicht bearbeitet.

Über Änderungen automatisch bestimmen wird automatisch auf allen Dubletten die erste Adresse als Referenz und alle anderen Adressen zur Löschung markiert.

Achtung:

Bitte prüfen Sie unbedingt die automatisch bestimmten Änderungen vor dem Speichern und stellen Sie sicher, dass es sich bei allen Dubletten wirklich um doppelt vorhandene Adressen handelt!

Mit Klick auf Abschliessen werden die vorgenommenen Änderungen gespeichert.


Geburtstagsliste

Die Geburtstagsliste befindet sich im Hauptmenü unter Tools => Geburtstagsliste.

Es werden alle Adressen, die in den nächsten x Tagen Geburtstag haben, angezeigt. Über einen Doppelklick auf die gewünschte Adresse kann diese in der Adressverwaltung geöffnet werden.

Über die Schaltfläche Tage ändern können Sie einstellen, wie viele Tage vor dem Geburtstag eine Adresse in dieser Liste erscheinen soll.

Über die Schaltfläche Markierung bearbeiten können Sie Einträge markieren und demarkieren. Als erledigt markierte Einträge erscheinen erst im nächsten Jahr wieder in der Geburtstagsliste. Wenn Sie Einträge mit dem Status erledigt trotzdem anzeigen möchten, verwenden Sie die Option Erledigte ausblenden/demarkieren. Einträge mit dem Status erledigt werden in der Liste grün angezeigt.

Ist die Option Beim Programmstart automatisch suchen markiert, werden bei jedem Programmstart automatisch Geburtstage gesucht und angezeigt.

Hinweis:

Die Geburtstagsliste kann optional auf der Startseite eingeblendet werden.


einen Serienbrief erstellen?

Die Serienbrief-Funktion in delight address ist die einfacher gehaltene Variante der weit umfangreicheren Serienbrief-Funktionen in den grösseren Programme wie z.B. delight crm oder delight insurance..

Die Serienbrief-Funktion ist nicht in allen Produkten vorhanden. Serienbriefe sind auch in delight address, nicht aber in delight email möglich.

Serienbrief erstellen:

1. Öffnen Sie die Vorlagenverwaltung

2. Wählen Sie in der Baumansicht Adresslisten

Klappen Sie den Ordner Serienbriefe aus und markieren Sie eine bestehende Serienbrief-Vorlage, die Sie als

Basis (Kopie) für ihren neuen Serienbrief verwenden möchten.

Es gibt zwei verschiedene Möglichkeiten/Technologien, um einen Serienbrief zu erstellen. Zum einen können Sie eine Word/OpenOffice Briefvorlage erstellen, oder sie wählen den internen Designer. Mit dem internen Designer ist kein externes Programm (wie z.B. Word oder OpenOffice) erforderlich, das Bearbeiten der Briefvorlage ist allerdings etwas umständlicher als mit Word oder OpenOffice. Bei sehr vielen Serienbriefen (mehreren 1000 Seiten) ist der interne Designer aus Geschwindigkeitsgründen aber unbedingt zu empfehlen.

In dieser Anleitung wird nur das Erstellen eines Word-Serienbriefes in einem für die meisten Anwender einfachsten und passendsten Beispiel beschrieben. Bei der Standard-Installation ist dazu die Vorlage "Serienbrief-Vorlage Word oder OpenOffice (leer)" installiert.

3. Rechts-Klicken sie auf die Vorlage und wählen Sie Kopie erstellen.

4. Geben Sie für die neue oder kopierte Vorlage im Eingabefeld Titel den gewünschten Namen des Serienbriefes an. (z.B. Neujahrsgruss 2010).

5. Führen Sie einen Doppelklick auf die Vorlage aus. Damit wird die Serienbriefvorlage im Office-Paket (Word, OpenOffice...) zu Bearbeitung geöffnet.

Ändern und gestalten Sie die Briefvorlage nach ihren Wünschen.

Zu beachten bei Vorlagen in Word oder OpenOffice:

·Der Text \Scan(a), PAGE\ muss immer ganz zuoberst auf der Seite stehen.

·Der Text \endscan\ muss immer ganz zu unterst auf der Seite stehen.

Um Inhalte (Platzhalter) aus der Adressdatenbank einzufügen, werden sogenannte Makros verwendet. Um z.B. den Namen des Empfängers einzufügen wird das Makro \a:name\ verwendet. Makros stehen immer zwischen zwei \\.

Anmerkung: Welche Makros zur Verfügung stehen, können Sie in der Vorlagenverwaltung mit einem Rechtsklick auf die Vorlage => Feldliste nachschauen. Um das jetzt an dieser Stelle zu tun, müssen Sie die Textverarbeitung (Word, OpenOffice...) wieder schliessen. Haben Sie die Feldliste geöffnet, können Sie bei geöffneter Feldliste die Vorlage wieder mit einem Doppelklick öffnen und weiterbearbeiten. Falls Sie die Makros benötigen, können Sie die Feldliste in Zukunft gleich schon vor Schritt 5 anzeigen.

6. Wenn Sie die Vorlage nach Ihren Wünschen bearbeitet und geschaltet haben, schliessen Sie die Textverarbeitung (Word, OpenOffice...). Beantworten Sie die Frage, ob das Dokument gespeichert werden soll, mit JA.

7. Wechseln Sie in das Menü Adresslisten.

8. Filtern Sie die Adressliste so, dass diese alle Adressen, die einen Serienbrief erhalten sollen, anzeigt. Es ist auch möglich, einzelne Adressen über Mehrfachselektion auszuwählen. Sobald mehr als eine Adresse markiert ist, wird der Serienbrief nur für alle markierten Adressen erstellt.

9. Klicken Sie im Menü auf Berichte => Adresslisten => Serienbriefe und wählen Sie den in Schritt 4 benannten Serienbrief.

10. Ist der Serienbrief erstellt, wird er automatisch im Textverarbeitungsprogramm geöffnet. Sie können den Serienbrief nun prüfen und drucken. Für weitere Änderungen können Sie die Textverarbeitung ohne zu speichern wieder schliessen und nochmals zurück zu Schritt 5 gehen.

siehe auch:

Handbuch Referenz RTF-Berichte

Handbuch Designer


Datenbank & Netzwerk Installation

Das Programm speichert alle seine Daten in einer sogenannten Datenbank. Nach der Installation verwendet das Programm standardmässig eine eigene, integrierte Datenbank. Vorteil dieser integrierten Datenbank ist es, dass die Installation zusätzlicher Datenbank-Software nicht erforderlich ist. Nach der Installation des Programms kann ohne Installation von zusätzlicher Software direkt damit gearbeitet werden.

Das Programm kann, je nach Anforderung, mit verschiedenen Datenbanken betrieben werden. Müssen sehr viele Daten verwaltet werden oder viele Benutzer damit arbeiten, sollte das Programm auf die Verwendung einer externe Datenbank umgestellt werden. Weitere Information dazu finden Sie im Kapitel Netzwerk Installation.

delight software gmbh bietet dazu ein kostenloses Programm, dass die Umstellung auf eine externe Datenbank mit wenigen Klicks ermöglicht. Die Umstellung auf eine andere Datenbank ist jederzeit möglich und kann auch zu einem späteren Zeitpunkt erfolgen. Bei der Umstellung werden sämtliche bereits erfassten Daten automatisch übernommen.

Hinweis:

Ob die aktuelle Datenbank mit optimaler Geschwindigkeit arbeitet, können Sie mit dem Geschwindigkeitstest im Menü unter Hilfe => Datenbanktest überprüfen (nur Netzwerk-Version).

siehe auch:

Netzwerk Installation

Datenbanken

Installationsanleitungen


Datenbanken

Das Programm unterstützt verschiedene Datenbanken.

Bei der Einzelbenutzer-Version muss die Datenbank auf dem selben Computer wie das Programm installiert sein. Bei der Netzwerk-Version ist die externe Datenbank optimaler weise auf einem zentralen Server installiert.

Unterstütze Datenbanken:

Datenbank | Version | Einzelbenutzer-Version | Netzwerk-Version
MySQL MariaDB | MySQL 5.7.7 + MariaDB 10.3 + | Nur auf dem gleichen Computer wie das Programm (localhost) | Zentraler Server im Netzwerk oder auf dem gleichen Computer wie das Programm.
MSSQL und MSSQL Express | 2012 + | Nur auf dem gleichen Computer wie das Programm (localhost) | Zentraler Server im Netzwerk oder auf dem gleichen Computer wie das Programm.
Integrierte-Datenbank (DBISAM) | 4.x | Auf dem gleichen Computer wie das Programm. | Zentraler Server im Netzwerk oder auf dem gleichen Computer wie das Programm.


MySQL und MariaDB

MySQL ist ein Datenbank-Server der sehr gute Geschwindigkeit beim Zugriff auf die Daten bietet. Der Hersteller bietet eine kostenlose Version, ohne Einschränkungen und mit vollen Funktionsumfang, zum Download an.

MariaDB ist ein Fork/Split-Off (zu deutsch ein Abkömmling) der MySQL-Datenbank. MariaDB ist komplett kompatibel zu MySQL hat aber ein paar sehr interessante Zusatzfunktionen. Insbesondere was die Geschwindigkeit betrifft, hat MariaDB in unseren Test deutlich besser abgeschnitten.

Bei MariaDB und MySQL sind keine zusätzlichen Komponenten auf den Clients notwendig. Alle delight Programm verwenden einen integrierten, nativen Direktzugriff auf diese Datenbanken.


MariaDB

Hersteller: MariaDB Foundation

Download: http://mariadb.org/

Unterstütze Versionen: Version 10.1 oder neuer

Grundsätzlich sollten Sie zum Zeitpunkt der Installation die jeweils aktuellste, stabile Version installieren (current stable GA).

Anmerkungen zur Konfiguration:

·Strict-Mode bei MariaDB sollte nicht verwendet werden.

·Wert max_allowed_packet sollte auf höheren Wert (zB. 64M) gesetzt werden.

·Die Option innodb_flush_log_at_trx_commit sollte auf 2 gesetzt werden.

·Die Option innodb_file_per_table sollte auf 1 gesetzt werden.

·Es wird die Storage-Engine InnoDB verwendet.

·Der MariaDB-User benötigt DROP, ALTER und CREATE Berechtigungen damit der Online-Update korrekt funktioniert. Ist dies nicht erwünscht, sollte der Online-Update deaktiviert werden.

Auszug aus der my.ini mit den empfohlenen Werten:

[mysqld]

sql_mode="NO_ENGINE_SUBSTITUTION"

default_storage_engine=innodb

# http://dev.mysql.com/doc/refman/4.1/en/innodb-parameters.html

# 2=flush every second instead of every query

innodb_flush_log_at_trx_commit=2

max_allowed_packet=64M

innodb_file_per_table=1

# fixes some import errors on newer DB version

innodb_strict_mode=0

# improve performance on schema access for innodb tables

innodb_stats_on_metadata=0

# speed up connections handling if no client host-dns name validation is required (e. g. host is % or localhost on all users)

skip-name-resolve


MySQL

Hersteller: MySQL AB (Oracle)

Download: www.mysql.com/downloads

Unterstütze Versionen: Version 5.6 oder neuer

Grundsätzlich sollten Sie zum Zeitpunkt der Installation die jeweils aktuellste, stabile Version installieren (current stable GA).

Anmerkungen zur Konfiguration:

·Strict-Mode bei MySQL sollte nicht verwendet werden.

·Wert max_allowed_packet sollte auf höheren Wert (zB. 64M) gesetzt werden.

·Die Option innodb_flush_log_at_trx_commit sollte auf 2 gesetzt werden.

·Die Option innodb_file_per_table sollte auf 1 gesetzt werden.

·Es wird die Storage-Engine InnoDB verwendet.

·Der MySQL-User benötigt DROP, ALTER und CREATE Berechtigungen damit der Online-Update korrekt funktioniert. Ist dies nicht erwünscht, sollte der Online-Update deaktiviert werden.

Auszug aus der my.ini mit den empfohlenen Werten:

[mysqld]

sql_mode="NO_ENGINE_SUBSTITUTION"

default_storage_engine=innodb

# http://dev.mysql.com/doc/refman/4.1/en/innodb-parameters.html

# 2=flush every second instead of every query

innodb_flush_log_at_trx_commit=2

max_allowed_packet=64M

innodb_file_per_table=1

# fixes some import errors on newer DB version

innodb_strict_mode=0

# improve performance on schema access for innodb tables

innodb_stats_on_metadata=0

# speed up connections handling if no client host-dns name validation is required (e. g. host is % or localhost on all users)

skip-name-resolve

siehe auch:

Installation MySQL 5.0


MSSQL und MSSQL-Express

MSSQL ist ein Datenbank-Server der sehr gute Geschwindigkeit beim Zugriff auf die Daten bietet. Der Hersteller bietet eine kostenlose Version, mit Einschränkungen in der Datenbankgrösse und der Anzahl Benutzer, unter dem Namen MSSQL-Express zum Download an.

Hersteller: Microsoft

Unterstütze Versionen: Version 2012 oder neuer wird empfohlen! In Version 2012 hat Microsoft sogenannte Paging-Funktionen eingebaut, unsere Software kann diese verwenden was sich positiv auf die Geschwindigkeit auswirkt (vor allem bei grösseren Datenbeständen im Netzwerk).

Für MSSQL-Server muss der sogenannte "Native Client" aus dem Microsoft SQL-Server Feature-Pack installiert werden.

Dieser muss auf jedem Computer/Client installiert sein. Das Installationspaket aus dem Feature-Pack heist "sqlncli.msi" und kann bei Microsoft bezogen werden.

Download Native Client:

SQL-Server 2008: http://www.microsoft.com/en-us/download/details.aspx?id=27596

SQL-Server 2012: http://www.microsoft.com/de-ch/download/details.aspx?id=35580

siehe auch:

Installation MSSQL-Express


Integrierte Datenbank (DBISAM)

Die integrierte Datenbank ist kein Datenbank-Server im eigentlichen Sinne. Die Daten werden als normale Dateien auf der Festplatte gespeichert. Dies kann unter Umständen zu Geschwindigkeits-Problemen mit dem installierten Anti-Virus-Programm führen (je nach dem wie leistungsfähig der Computer ist und wie effizient der Viren-Scanner arbeitet). Der Einsatz im Netzwerk ist nur bedingt zu empfehlen.

Für sehr kleine Netzwerk-Installationen und Datenmengen kann das komplette Programm auf ein Netzwerk-Laufwerk installiert (oder nach der Installation kopiert) werden. Die einzelnen Benutzer können das Programm danach direkt ab dem Netzwerk-Laufwerk starten. Gestartet wird das Programm über die Datei ML2Client.exe. Beachten Sie bitte, dass alle Benutzer Schreib- und Lese rechte auf dem Netzwerk-Laufwerk haben müssen.

Bitte beachten Sie dazu auch das Kapitel Integrierte Datenbank und Antiviren-Programme.

siehe auch:

Empfehlungen

Integrierte Datenbank und Antiviren-Programme


Integrierte Datenbank und Antiviren-Programme

Sollte Ihr Programm nach der Installation gefühlt sehr langsam sein, liegt dies vermutlich an der Konfiguration Ihres Antivirus-Programms.

Einige Antivirus-Programme überprüfen jede Datei, bei jedem Zugriff, auf Viren. Dieses Verhalten kann den Zugriff auf die Daten in der lokalen Datenbank stark verlangsamen. Fügen Sie deshalb unten aufgeführte Datei-Endungen in die Ausschluss-List (Exclude-Liste) ihres Virenscanners hinzu.

Dateiendungen:

*.dat

*.idx

*.blb

*.tmpdat

*.tmpidx

*.tmpblb

Anmerkung:

Tests haben gezeigt, dass gewisse Antivirus-Programm sehr ineffizient arbeiten und Dateien trotz Ausschlussliste prüfen. Sollte dies der Fall sein, sollten Sie die Umstellung auf eine externe Datenbank in Betracht ziehen.

Hinweis:

Wie Sie Datei-Endungen in die Ausschlussliste Ihres Antivirus-Programms aufnehmen, lesen Sie bitte im Handbuch oder der Online-Hilfe ihrer Antivirus-Software nach.


Empfehlungen

Für die Netzwerk-Version und die Einzelbenutzer-Version gibt es unterschiedliche Empfehlungen.


Empfehlungen für die Einzelbenutzer-Version

Sollte die integrierte Datenbank nicht genügen (z.B. Geschwindigkeits-Probleme mit dem installieren Anti-Virus Programm oder bei sehr vielen Daten) ist die kostenlose MariaDB-Datenbank eine sehr gute Alternative zur Integrierten-Datenbank. MariaDB lässt sich einfach installieren, bietet sehr schnelle Datenzugriff und ist nach der Installation ohne umständliches Konfigurieren direkt einsatzbereit.


Empfehlungen für die Netzwerk-Version

Die Integrierte-Datenbank ist nur bedingt netzwerkfähig. Für sehr kleine Installationen bis ca. 5 Benutzer reicht die Leistung in den meisten Fällen aus. Für grössere Installationen (mehr Benutzer, mehr Daten) sollte auf eine externe Datenbank umgestellt werden. Eine externe Datenbank bietet in jedem Fall (auch bei kleinen Installationen) eine bessere Leistung als die Integrierte-Datenbank.

Für die Netzwerk-Version sollte die Datenbank optimalerweise auf einem zentralen Server installiert werden. Falls nicht bereits eine unterstütze Datenbank im Einsatz ist, empfiehlt sich hier die kostenlose MariaDB-Datenbank. MariaDB biete sehr gute Leistung ohne das Anzahl Benutzer oder Datenbankgrösse lizenztechnisch limitiert sind. In unseren Tests schnitt MariaDB in Punkto Geschwindigkeit besser ab als MySQL. Aber auch MySQL und MSSQL liefern bei optimaler Installation&Konfiguration sehr gute und empfehlenswert Werte.

Wenn planen, Berechtigungen auf Datensatz-Ebene zu vergeben, sollte MariaDB der MySQL- und MSSQL-Datenbank vorgezogen werden.


Netzwerk Installation

Für die Installation mehrerer Benutzer ist eine Netzwerk-Version der delight Anwendung erforderlich.

Bei der Netzwerk-Version wird eine zentrale delight Installation auf einem zentralen Server installiert. In dieser zentralen delight Installation auf dem zentralen Server läuft der delight MultiUser-Server als Windows Service sowie der Datenbank-Server, wobei der Datenbank-Server auch auf einer anderen Server-Instanz laufen kann/darf. Auf den einzelnen Clients (Computer / RDS-Instanzen an denen die Benutzer arbeiten) wird ebenfalls eine delight Installation installiert. Diese Client-Installation des delight Programms kommuniziert über das Netzwerk (TCP/IP) mit dem zentralen Datenbank-Server sowie dem zentralen MultiUser-Server.

Üblicher Aufbau der Netzwerk-Installation:

Zentraler Server

·Datenbank-Server (siehe Datenbanken)

·delight Programm mit MultiUser-Server Windows-Service (siehe Installationsanleitung MultiUser-Server)

Clients für Anwender

·delight Programm


Installationsanleitungen

Die Installations-Anleitungen beschreiben Installation und Umstellung des Programms auf eine Netzwerk-Installation für mehrere Benutzer.

Hinweis:

Die jeweilige Installations-Anleitung erklärt ausschliesslich die grundlegenden Installations-Schritte zur Installation. Aspekte wie Sicherheit, Optimierung des Server an die verwendete Hardware/Umgebung usw. werden nicht behandelt. Die Behandlung dieser Themen würde den Umfang dieser Installations-Anleitungen bei weitem sprengen.

Netzwerk Installation mit Datenbank-Server und MultiUser-Server

1.Melden Sie sich mit Administratorrechten auf dem zentralen Server, welcher die Server-Installation von delight beinhalten soll, an.

2.Installieren Sie das delight Programm.

3.Installieren Sie den gewünschten Datenbank-Server (siehe auch Empfehlungen für die Wahl der richtigen Datenbank)
> MySQL-Server Version
> MSSQL-Express-Version

4.Nach der Installation des Datenbank-Servers wird das delight Programm auf die neue Datenbank umgestellt werden. Mit dieser Umstellung werden alle bereits erfassten Daten übernommen.
> Datenbank-Umstellung

5.Falls nicht bereits mit Schritt 4 erledigt, muss das Verzeichnis für die Ablage der Dokumente konfiguriert werden.
> Pfad für Dokumentenablage konfigurieren

6.Falls nicht bereits mit Schritt 4 erledigt, sollte der zentrale MultiUser-Server Windows-Dienst konfiguriert und installiert werden. Die Installation dieses Dienstes ist optional wird aber sehr dringend empfohlen, da ansonsten einige Funktionen des delight Programms nicht zur Verfügung stehen.
> MultiUser-Server Dienst Installation

7.Nun sollte das delight Programm auf dem Server einmal als Administrator gestartet werden (ML2Client.exe im Installationsverzeichnis starten). Damit wird die neu eingerichtete Datenbank geprüft und allfällige Schemaupdates ausgeführt. Ist das delight Programm komplett gestartet (Anmeldung als Benutzer durchgeführt), kann es wieder beendet werden.

8.Nun ist die Installation soweit abgeschlossen und die Installation kann auf die einzelnen Clientcomputer/Instanzen verteilt werden. Sofern das Verzeichnis für die Dokumentenablage nicht im Installationsverzeichnis abgelegt ist, kann nun einfach das komplette Installationsverzeichnis auf die Clients kopiert werden. Alternativ kann das Installationsverzeichnis auch Freigegeben und das Programm direkt ab dem UNC-Pfad gestartet werden.
Gestartet wird das Programm über die Datei ML2Client.exe. Diese Datei kann zB. auf den Desktop des Benutzer verknüpft werden.


Manuell Installation auf Windows Server

Manuell MariaDB-Installation auf Windows Server.

Die aktuelle Installationsroutine kann allenfalls etwas von den hier verwendeten Screenshots abweichen.

1.Downloaden Sie das aktuelle MSI-Installations-Paket ab https://downloads.mariadb.org/

2.Starten Sie das herunter geladene MSI-Paket und klicken Sie auf Next.

3.Lesen ;-) und akzeptieren Sie die Lizenzbedingungen. Kicken Sie auf Next.

4.Klicken Sie auf Next (keine Angaben erforderlich)

5.Geben Sie das Administrator-Passwort für die Datenbank ein.

Wichtig: Sie können dieses Passwort frei bestimmen. Merken Sie sich das Passwort für später
und legen Sie es in Ihren sicheren Unterlagen ab. Sie werden es später noch benötigen!

Markieren Sie die Option Enable access from remote machines for root user.

Klicken sie auf Next.

6.Die vorgeschlagenen Einstellungen sind meistens ok, klicken Sie auf Next.

7.Klicken Sie auf Next.

8.Klicken Sie auf Install.

9.Klicken Sie auf Ja und warten Sie, bis die Installation durchgeführt wurde.

10.Klicken Sie auf Finish

11.Im Windows Start-Menü finden sich nun die neu installierten Einträge von MariaDB.

Öffnen Sie den Eintrag my.ini

12.Ändern Sie den sql_mode auf:
sql_mode="NO_ENGINE_SUBSTITUTION"

13. Fügen Sie folgende Optionen nach der Linie [mysqld] (aber vor der Linie [client]) ein:

innodb_flush_log_at_trx_commit=2
max_allowed_packet=64M
innodb_file_per_table=1
max_connections=1024
innodb_stats_on_metadata=0

14.Speichern Sie die Datei über Menü => Datei => Speichern

15.Öffnen Sie die lokale Dienstverwaltung von Windows.
Windows-Taste-R oder Startmenü = Ausführen und dann "services.msc" eingeben.

16. Suchen Sie den MySQL Dienst, dies ist der übliche Name für den MariaDB-Dienst.

17.Führen Sie einen Rechtsklick auf den Dienst aus und wählen Sie Neu starten. Damit werden die neuen Einstellungen der my.ini aktiviert.

Die Installation und Konfiguration des Datenbank-Servers ist abgeschlossen. Sie können nun das Programm auf die soeben installierte Datenbank umstellen.
Lesen Sie dazu bitte die Installations-Anleitung Datenbank-Umstellung.

Anmerkung:

Im Start-Menü von Windows finden Sie nun ebenfalls das neu installierte Programm HeidiSQL.


Installation auf Azure Database for MariaDB-Server

Installation Azure Database for MariaDB-Server.

Grundvoraussetzung für die Installation ist ein aktives Microsoft Azure Konto sowie Kenntnisse in der Erstellung und Verwaltung von Ressourcen auf Azure.

1.Melden Sie sich bei Azure an.

2.Erstellen Sie eine MariaDB Instanz

3.Erstellen Sie die Ressource mit den gewünschten Leistungsmerkmalen.

4.Öffnen Sie die Serverparameter

5.Entfernen Sie in "sql_mode" die Option "STRICT_TRANS_TABLES"

6.Setzen Sie die Option "innodb_strict_mode" auf "OFF"

7.Setzen Sie "max_connections" wenn möglich auf einen höheren Wert. Pro User sollten ca. 10 aktive Connections gerechnet werden. Wir empfehlen üblicherweise einen Wert von 1024. Bei Azure ist der Maximalwert aber an den ausgewählten Kostenplan gebunden

Weitere Infos dazu: https://docs.microsoft.com/en-us/azure/mariadb/concepts-server-parameters#max_connections

8.Die Installation der Datenbank ist damit abgeschlossen und bereit für den nächsten Schritt: Datenbank-Umstellung.

Wichtig: Bitte beachten Sie die Anmerkungen zur Konfiguration in delight.


Anmerkungen zur Azure MariaDB-Konfiguration in delight

Für die Konfiguration in delight müssen bei Azure MariaDB ein paar Punkte beachtet werden.

·Die Azure MariaDB kann, wie auch eine lokal installierte MariaDB, mit HeidiSQL verwaltet werden: https://www.heidisql.com

·Azure verlangt bei MariaDB ein für MariaDB unübliches Format beim Benutzernamen. Der Benutzername besteht im Fall von Azure aus benutzername@servername.

Bsp: Der korrekte Benutzernamen für die Verbindung mit Azure (Datenbank-Umstellung Schritt 5) lautet im Fall des Benutzers "mydelightuser" auf dem Server "delightmariadbtesting" => "mydelightuser@delightmariadbtesting"

·Das (nächste) allgemeine Kapitel Anmerkungen zur Konfiguration in delight gilt auch für Azure MariaDB.


Anmerkungen zur Konfiguration in delight

Wir empfehlen das Einrichten eines separaten MariaDB-Benutzers der "nur" Berechtigung auf die "delight Datenbank" hat. Der root (Admin-User der Datenbank) sollte nicht direkt mit delight verwendet werden.

Benutzer mit HeidiSQL einrichten:

1.HeidiSQL starten und mit der MariaDB-Datenbank verbinden.

2.Werkzeuge => Benutzerverwaltung öffnen

3.Neuen Benutzer erstellen

4.Benutzername eingeben

5.Zugriff "von überall" definieren

6.Passwort generieren oder eingeben

7.Neues Zugriffsobjekt erstellen

8.Name der delight Datenbank eingeben.

Das muss dem Datenbanknamen in Schritt 5 in Kapitel Datenbank-Umstellung entsprechen.

9.Alle Rechte auf der Datenbank erteilen.

10.Falls Sie eine FullApp-Cloud Variante oder eine SaaS-Datenbank (z. B. Azure, Google, AWS) einrichten, sollte die Option "Nur SSL" auf dem Benutzer aktiviert werden.

11.Abschliessend auf Speichern klicken. Benutzername, Passwort und Datenbankname benötigen Sie nun für die Datenbank-Umstellung von delight.


Installation MySQL

Anmerkung: Dieses Kapitel für MySQL wird nicht mehr gepflegt. Die aktuelle Installationsroutine kann allenfalls etwas abweichen.

Wir empfehlen grundsätzlich die Installation von MariaDB.

Installationsanleitung für MySQL Community Edition

1.Downloaden Sie den MySQL-Server (www.mysql.com/downloads)

2.Datei Setup.exe aus dem ZIP-Archiv entpacken und starten.

Klicken Sie auf Weiter um die Installation zu starten.

3.Installationsart auswählen.

Wählen Sie Typical und klicken Sie auf Weiter.

4.Eingaben prüfen.

Klicken Sie auf Install um die Installation zu starten.

5.Installation läuft.

(Warten Sie bis alle Dateien installiert wurden)

6.Erstellen Sie bei Bedarf einen Account auf MySQL.com.

Dieser Schritt ist freiwillig. Um Ihn zu überspringen klicken Sie Skip Sign-up und anschliessend Weiter.

7.Installation Abgeschlossen.

Stellen Sie sicher, dass Configure the MySQL Server now markiert ist. Klicken Sie anschliessend auf Finish.

8.Server konfigurieren.

Klicken Sie auf Weiter um die Konfiguration des Server zu starten.

9.Detaillierte Konfiguration.

Wählen Sie Detailed Configuration, klicken Sie auf Weiter.

10.Einsatzgebiet wählen.

Wählen Sie Server Machine, klicken Sie auf Weiter.

11.Funktion des Server.

Wählen Sie Multifunctional Database, klicken Sie auf Weiter.

12.Speicher-Ort für InnoDB-Tabellen.

Belassen Sie die Einstellungen wie vorgegeben. Das Programm speichert seine Daten
nicht im InnoDB-Format. Klicken Sie auf Weiter.

13.Anzahl Verbindungen wählen.

Wählen Sie im Zweifelsfall die Einstellung (OLTP).

Hinweis:
Programme verwenden mehrere gleichzeitige Verbindungen pro Benutzer zum Datenbank-Server.
Die effektiv Anzahl hängt von den verwendeten Programm-Teilen ab.

Klicken Sie auf Weiter.

14.Netzwerk-Verbindung und Modus.

Wichtig:
Die Einstellung Enable Strict Mode muss ausgeschaltet werden! Beim Installationsprogramm von MySQL 5.5 ist das deaktivieren des Strict-Mode besonders wichtig, ansonsten schlägt die Installation von MySQL später fehl. Die scheint ein Fehler im MySQL Instance Configuration Wizard zu sein, in Version 5.5 kommt dieser mit dem Strict-Mode nicht mehr zurecht und bricht mit einem Fehler ab.

Belassen Sie die Port Number wie vorgegeben. Klicken Sie auf Weiter.

15.Zeichensatz auswählen.

Belassen Sie alle Einstellungen wie vorgegeben und Klicken Sie auf Weiter.

16.Installation Service.

Belassen Sie alle Einstellungen wie vorgegeben und Klicken Sie auf Weiter.

17.Administrator-Passwort setzen.

Geben Sie ein neues Passwort für die Datenbank ein.

Wichtig:
Notieren Sie sich diese Passwort, Sie werden es später wieder benötigen!

Belassen Sie alle anderen Einstellungen wie vorgegeben und Klicken Sie auf Weiter.

18.Konfiguration ausführen.

Klicken Sie auf Execute.

19.Konfiguration Abgeschlossen.

Der erste Teil der Installation und Konfiguration ist beendet. Klicken Sie auf Finish um das Konfigurationsprogramm zu schliessen.

Hinweis: Wenn Sie hier eine Fehlermeldung erhalten, haben Sie vermutlich bei Schritt 14. den Strict-Mode nicht deaktiviert.

20.Downloaden und installieren Sie nun MySQL Workbench um die Datenbank zu konfigurieren (http://www.mysql.com/downloads/workbench)

21.Starten Sie das soeben installierte Programm MySQL Workbench.

Das Programm kann über das Start-Menü von Windows unter Programme => MySQL gestartet werden.

22.Doppelklicken Sie auf der rechten Seite im Bereich Server Administration auf die Instanz "Local MySQL" um die Server Administration zu starten. Falls ein Benutzername oder Passwort verlangt wird, geben Sie bei Benutzername "root" (ohne "") und bei Passwort das Passwort aus Schritt 17 ein.

23.Wechseln (klicken) Sie in das Menü Options File (links unter CONFIGURATION) und danach weiter auf den Reiter Networking (oben in der Mitte).
Setzen Sie den Hacken bei der Option max_allowed_packet und erhöhen Sie den Wert auf mindestens 64M.

Falls Sie MySQL 5.5 installiert haben, müssen Sie zusätzlich einen Hacken bei der Option skip-name-resolve (weiter unten) setzen. Ansonsten kann es bei MySQL 5.5 zu Verbindungsproblemen mit der Datenbank kommen (Bug in MySQL Version 5.5.9 GA)

Klicken Sie danach auf Apply um die Einstellung zu speichern.

24.Wechseln (klicken) Sie in das Menü Startup /Shutdown (links unter MANAGEMENT) um den Datenbankserver neu zu starten.
Klicken Sie auf die Schaltfläche Stop Server und warten Sie bis der Dienst beendet wurde. Klicken Sie anschliessen auf die Schaltfläche Start Server um den Dienst wieder zu starten.

Die Installation und Konfiguration des Datenbank-Servers ist abgeschlossen. Sie können nun das Programm auf die soeben installierte Datenbank umstellen.
Lesen Sie dazu bitte die Installations-Anleitung Datenbank-Umstellung.


Installation MSSQL-Express

Installationsanleitung für MSSQL Express

1. Downloaden Sie den MSSQL Express-Server (www.microsoft.com/downloads)

2. Starten Sie das Installations-Programm (SQLEXPR_GER.EXE)

3. Installationsvoraussetzungen

Klicken Sie auf Installieren und danach auf Weiter.

4. Start des eigentlichen Installations-Programms

Klicken Sie auf Weiter.

5. Systemprüfung

Klicken Sie auf Weiter wenn keine Fehler gefunden wurden. Andernfalls müssen Sie

zuerst die genannten Fehler beheben.

6. Registrierung

Klicken Sie auf Weiter.

7. Komponenten

Klicken Sie auf Weiter.

8. Authentifizierungsmodus

Klicken Sie auf Weiter.

9. Fehlerberichterstattung

Klicken Sie auf Weiter.

10. Installationsbereit

Klicken Sie auf Installieren.

11. Installation läuft

Klicken Sie auf Weiter und danach auf Fertigstellen wenn alle Produkte installiert wurden.

Die Installation und Konfiguration des Datenbank-Servers ist abgeschlossen. Sie können nun das Programm auf die soeben installierte Datenbank umstellen.

Lesen Sie dazu bitte die Installations-Anleitung Datenbank-Umstellung.


Datenbank-Umstellung

1.Installieren Sie den delight base Datenbank Administrator.

Download von https://www.delight.ch/aktuelle-downloads

Wichtig: Beachten Sie bitte, dass Sie die jeweils zur Produkt-Version kompatible delight base Version downloaden und verwenden müssen.

2.Starten Sie den delight base Datenbank Administrator. Klicken Sie auf Weiter

3.Wählen Sie das installierte Programm das auf die externe Datenbank umgestellt werden soll.

Ist das Programm nicht in der Liste aufgeführt, kann das Installationsverzeichnis über [image] gesucht werden.

Anmerkung: Wenn Sie das Programm nicht auswählen können, verwenden Sie nicht die korrekte, zur Programm-Version passende,
Version des delight base Datenbank Administrators.

Klicken Sie auf Weiter

4.Konfigurieren Sie unter Zieldatenbank den gewünschten Datenbanktyp (MySQL, MariaDB, SQL Server).

5.Konfigurieren Sie den Datenbank-Server (Host)

Netzwerk-Version:
Geben Sie bei Host den Hostnamen oder die IP-Adresse des Datenbank-Servers ein. Diesen Hostnamen müssen die Clients auflösen
können, um eine Verbindung mit dem Datenbank-Server herstellen zu können.

Einzelbenutzer-Version:
Die Datenbank muss auf dem gleichen Computer wie das Programm installiert sein. Die Eingabe Datenbank-Server ist nicht erforderlich.
Falls Sie MSSQL Express für die Einzelbenutzer-Version installieren, sollte Sie die Option Windows NT Anmeldung verwenden einschalten.
Wenn Sie MySQL oder MariaDB für die Einzelbenutzer-Version verwenden, wird automatisch "localhost" verwendet.

Geben Sie Benutzername und Passwort ein. Wenn Sie bei MSSQL die Option Windows NT Anmeldung verwenden einschalten, sind Benutzername
und Passwort nicht erforderlich. Wenn Sie MySQL oder MariaDB anhand der Installations-Anleitung installiert haben, gebe Sie bei Benutzername "root"
und bei Passwort das Passwort, dass Sie bei der Installation verwendet haben, ein.

Der Name der Datenbank im Eingabefeld Datenbankname muss in den meisten Fällen nicht geändert werden. Falls Sie mehrere delight Programm
auf dem selben Datenbank-Datenbank-Server installieren, müssen Sie darauf achten, dass jedes Programm einen eigenen Datenbanknamen bekommt.

6.Wählen Sie unter Optionen Datenbank die Einstellung Datenbank kopieren und Programm konfigurieren.
Die Einstellung Nur Programm konfigurieren sollten Sie nur dann verwenden, wenn Sie die Datenbank bereits erstellt und kopiert haben.

Stellen Sie sicher, dass die Option Datenbank erstellen markiert ist.

Die Option Protokolldaten ausschliessen sollte aktiviert sein. Damit werden die unter Umständen sehr grossen Protokolltabellen nicht kopiert. Das Kopieren dieser Tabellen kann u.U. sehr lange (mehrere Stunden) dauern.

7.Prüfen nun, ob die Verbindung zur neuen Datenbank funktioniert.
Klicken Sie dazu auf
Sollte die Verbindung nicht hergestellt werden können, müssen Sie den Datenbank-Server sowie Ihre Eingaben prüfen.

Klappt die Verbindung, klicken Sie bitte auf Weiter.

8.Optional können Sie an dieser Stelle gleich den Pfad für Dokumentenablage konfigurieren. Weitere Informationen dazu
im Kapitel Pfad für Dokumentenablage konfigurieren in Schritt 5. Sie können diesen Schritt auch überspringen und später durchführen.

9.Optional können Sie an dieser Stelle gleich den MultiUser-Server installieren und konfigurieren. Weitere Informationen dazu
im Kapitel MultiUser-Server Dienst Installation ab Schritt 6. Sie können diesen Schritt auch überspringen und später durchführen.

Klicken Sie auf Weiter.

10.Prüfen Sie nochmals alle Daten und klicken Sie anschliessend auf Weiter um den Kopiervorgang zu starten.

11.Die Daten werden kopiert, warten Sie bis alle Daten auf den Datenbank-Server kopiert wurden.

12.Die Datenbank wurde erstellt und die Daten kopiert. Klicken Sie auf Weiter.

13.Bis zu diesem Schritt wurde die Konfiguration noch nicht gespeichert. Falls beim Kopieren Fehler aufgetreten sind oder
Sie aus einem anderen Grund abbrechen möchten, können Sie das an dieser Stelle gefahrlos tun. Das Programm bleibt
dann auf der alten (aktuellen) Konfiguration.

Klicken Sie auf Weiter um die Konfiguration zu speichern.

14.Die Umstellung ist beendet. Ab jetzt läuft das Programm auf der neu konfigurierten Datenbank.


Pfad für Dokumentenablage konfigurieren

1.Melden Sie sich auf dem Server, auf welchem der zentrale MultiUser-Windows-Service installiert ist an.
Sie benötigen Administratoren-Rechte um die Konfiguration zu bearbeiten.

2.Installieren Sie den delight base Datenbank Administrator

Download von https://www.delight.ch/aktuelle-downloads

Wichtig: Beachten Sie bitte, dass Sie die jeweils zur Produkt-Version kompatible delight base Version downloaden und verwenden müssen.

3.Starten Sie den delight base Datenbank Administrator und wählen Sie die Anwendung, für welche das Verzeichnis konfiguriert
werden soll. Klicken Sie anschliessend auf Weiter.

4.Belassen Sie alle Einstellung wie sie sind und Klicken Sie direkt auf Weiter.

5.Wechseln Sie in den Reiter Dokumenten-Verwaltung

6.Aktivieren Sie den Ablageort delight base MultiUser-Server wenn der MultiUser-Server verwendet wird (empfohlen).

7.Konfigurieren Sie den Pfad für die Ablage der Dokumente.

Wenn Sie den MultiUser-Server verwenden, benötigt nur der MultiUser-Server (sprich der Windows-Benutzer unter welchem der Windows-Dienst läuft)
Schreib- und Lesezugriff auf diesen Pfad. Die Clients/Benutzer benötigen KEINEN Zugriff (auch keinen Lese-Zugriff) auf diesen Pfad.

Wenn der MultiUser-Server nicht verwendet wird, müssen alle Client/Benutzer Schreib- und Lesezugriff auf den Pfad haben.

Grundsätzlich sollte eine Verzeichnis ausserhalb des Installationsverzeichnisses gewählt werden!

Klicken Sie anschliessend auf Weiter.

8. Klicken Sie auf Weiter um die Konfiguration zu speichern.

9.Falls der MultiUser-Server bereits installiert und gestartet wurde, muss der Dienst neu gestartet werden.

Anmerkung:

Die bereits erstellen Dokumente aus dem alten Ablagepfad müssen Sie selbst, manuell vom alten Ort in den neuen Ablagepfad kopieren!


MultiUser-Server Dienst Installation

1.Melden Sie sich auf dem Server, auf welchem der zentrale MultiUser-Windows-Service installiert werden soll, an.
Sie benötigen Administratoren-Rechte um einen neuen Windows-Dienst zu installieren.

2.Installieren Sie den delight base Datenbank Administrator

Download von https://www.delight.ch/aktuelle-downloads

Wichtig: Beachten Sie bitte, dass Sie die jeweils zur Produkt-Version kompatible delight base Version downloaden und verwenden müssen.

3.Starten Sie den delight base Datenbank Administrator und wählen Sie die Anwendung, für welche der Windows-Dienst auf
dem Server, auf dem Sie jetzt arbeiten, installiert werden soll. Klicken Sie anschliessend auf Weiter.

4.Belassen Sie alle Einstellung wie sie sind und Klicken Sie direkt auf Weiter.

5.Wechseln Sie in den Reiter MultiUser-Server

6.Aktivieren Sie MultiUser-Server verwenden.

7.Definieren Sie einen Schlüssel für die Kommunikation. Nur Client-Anwendungen mit dem gleichen Schlüssel können später
mit dem Server kommunizieren.

8.Geben Sie bei Host den Hostnamen oder die IP-Adresse dieses Servers ein. Diesen Hostnamen müssen die Clients auflösen
können, um eine Verbindung mit dem MultiUser-Server herstellen zu können.

9.Klicken Sie auf Windows Service installieren um den Service auf diesem Server zu installieren.
Klicken Sie anschliessen auf Weiter.

Anmerkung: Der Dienst kann auch manuell per Parameter installiert und deinstalliert werden:
> {Installdir}\MLMultiUserServerSVC.exe -install
> {Installdir}\MLMultiUserServerSVC.exe -uninstall

10. Klicken Sie auf Weiter um die Konfiguration zu speichern.

11. Sie finden den neuen Windows-Dienst nun in der lokalen Dienst-Verwaltung von Windows. Sofern die Datenbankumstellung und die
Konfiguration des Dokumenten-Ablagepfades abgeschlossen sind, kann der Dienst nun in der Dienstverwaltung von Windows gestartet werden.

Wichtig:

Der Windows-Service benötigt Zugriff auf den Dokumenten-Ablagepfad der Dokumenten-Verwaltung. Stellen Sie sicher, dass der Windows-Benutzer, unter welchem der Dienst läuft, Schreib- und Leserechte auf diesen Pfad besitzt!

Bedenken Sie, dass Freigaben die als Laufwerk verbunden sind IMMER auf einen bestimmen Benutzer verbunden sind. Wenn der Dokumentenpfad auf einem anderen Server abgelegt ist, sollte der direkte UNC-Pfad konfiguriert werden und der Dienst unter einem Benutzer mit Schreib- und Lesezugriff auf den UNC-Pfad ausgeführt werden.


Datenimport

Mit dem Datenimport-Modul können Daten von verschiedenen Formate wie z.B. CSV, VCard, usw. importiert werden.

Eine Schritt-für-Schritt Anleitung zur Bedienung des Import Assistenten finden Sie im Kapitel Import Assistent.

siehe auch:

Wie kann ich...


Import starten

Der Datenimport wird von verschiedenen Modulen verwendet und steht im Menübereich Import & Export zur Verfügung.

Klicken Sie auf den gewünschten Menüpunk um den Import zu starten und folgen Sie dem Import-Assistenten.

siehe auch:

Wie kann ich eine Excel-Datei importieren?

MLXML-Datei importieren

MLXML-Datei exportieren

Anmerkung:

Der MLXML-Export Wizard und der MLXML-Import Wizard steht nur in Produkten welche die MLXML Business Integration enthalten zur Verfügung. Eine Dokumentation zum Wizard finden Sie im entsprechenden Handbuch.


Import Assistent

1. Wählen Sie die Datei mit den Daten die Sie importieren möchten.

Wählen Sie bei Dateityp das Format in dem die zu importierende Datei vorliegt, wählen Sie die Datei aus und klicken Sie auf Öffnen.

2. Der Import-Assistent wird gestartet.

Über die Schaltfläche Konfiguration können Sie Einstellungen zum ausgewählten Import-Format vornehmen. Diese Einstellungen hängen vom ausgewählten Import-Format ab und müssen normalerweise nicht verändert werden.

Klicken Sie auf Weiter um fortzufahren.

3. Zuordnung der Felder

Auf dieser Seite werden die verfügbaren Ziel-Felder den verfügbaren Spalten der Import-Datei gegenübergestellt. Ordnen Sie alle Spalten (die Sie importieren möchten) der Import-Datei einem Feld auf der linken Seite zu.

Klicken Sie anschliessend auf Weiter.

4. Import Modus bestimmen.

Wenn Sie Alles importieren möchten, wählen Sie Alle Datensätze neu Einfügen. Wenn Sie nur neue Datensätze importieren möchten, müssen Sie unter Schlüsselfelder alle Felder, die für den Vergleich verwendet werden sollen, auswählen.

5. Import Optionen bestimmen

Wenn Sie aus einem Format importieren, das in der ersten Zeile Spaltenüberschriften enthalten kann (z.B. CSV) können Sie die Option Ersten Datensatz überspringen markieren damit die Spaltenüberschrift nicht importiert wird. Alle anderen Einstellungen müssen normalerweise nicht verändert werden.

6. Datenmanipulation vor dem Import

Hier kann für jedes Feld definiert werden, ob und wie die zu importierenden Daten vor dem Import manipuliert werden sollen.

Wenn Sie z.B. Postleitzahlen im Format "CH-9000" importieren möchten, können Sie hier das "CH-" entfernen.

Normalerweise müssen Sie hier keine Einstellungen vornehmen.

7. Bedingte Regeln

Hier können Sie erweiterte Kriterien für den Import von Datensätzen konfigurieren. Es kann z.B. definiert werden, dass Datensätze die eine gewisse Bedingung erfüllen nicht importiert werden oder der Wert eines Feldes durch den Wert eines anderen Feldes ersetzt wird.

Normalerweise müssen Sie hier keine Einstellungen vornehmen.

8. Import Start - Kontrolle der Konfiguration

Hier können Sie alle Einstellungen überprüfen. Wenn alle Einstellungen in Ordnung sind, können Sie den Import mit Weiter starten.

9. Import Beendet

Nach Abschluss des Datenimportes erhalten Sie eine ausführliche Aufstellung aller durchgeführten Aktionen. Falls Fehler aufgetreten sind, können Sie mit Zurück die Einstellungen entsprechend anpassen um die Fehler zu korrigieren.


Wie kann ich...

Wie kann ich...

...eine Excel-Datei importieren?


...eine Excel-Datei importieren?

Wenn Sie ein Produkt ohne MLXML Business Integration haben, müssen Sie die Excel Datei vor dem Import in eine CSV-Datei umwandeln. Ist die MLXML Business Integration verfügbar, steht zusätzlich noch der direkte Weg über den deutlich flexibleren und umfangreicheren MLXML-Import Wizard zur Verfügung.

Tip:

Wenn Sie eine normale, einfache Adressliste importieren möchten, ist der hier beschriebene Weg über das CSV-Format (auch wenn die MLXML Business Integration verfügbar ist) durchaus zu empfehlen. Der Import über CSV ist relative einfach zu bewerkstelligen und es gibt sehr wenig Fallstricke.

Import über CSV:

1. Öffnen Sie die gewünschte Datei in Excel

2. Klicken Sie im Menü Datei => Speichern unter...

3. Wählen Sie bei Dateityp das Format "CSV (Trennzeichen-getrennt) (*.csv)"

4. Speichern Sie die Datei mit Speichern

5. Diese Datei können Sie nun mit dem Import Assistent importieren.


Berichte im Designer-Layout

Der Designer erlaubt dem Nutzer die bequeme Bearbeitung des äußeren Erscheinungsbildes des Reports und eine sofortige Vorschau. Das Interface des Designers ist den aktuellen Standards angepasst, unter Nutzung der Symbolleisten. Deren Anordnung kann den Bedürfnissen des Nutzers angepasst werden. Die Informationen der Anordnungen werden gespeichert und bei jedem Neustart wiederhergestellt. Auch alle anderen Veränderungen des Designers werden gespeichert.

Legende:

1 Arbeitsfläche des Designers;

2 Menüleiste;

3 Symbolleiste;

4 - Objektleiste;

5 Tabs des Codeeditors und Data;

6 Fenster "Reporttree"

7 Fenster "Objektinspektor"

8 Fenster "Datenbaum". Aus diesem Fenster können Elemente auf das Blatt gezogen werden.

9 Lineal. Beim Rüberziehen des Lineals auf das Blatt, entsteht eine Linie an der Objekte befestigt werden können.

10 - Statusleiste.


Tastatursteuerung

Tasten Beschreibung

Ctrl+O Befehl "Datei|Öffnen..."

Ctrl+S Befehl " Datei|Speichern"

Ctrl+P Befehl " Datei|Vorschau"

Ctrl+Z Befehl "Bearbeiten|Rückgängig"

Ctrl+C Befehl "Bearbeiten|Kopieren"

Ctrl+V Befehl "Bearbeiten|Einfügen"

Ctrl+X Befehl "Bearbeiten|Ausschneiden"

Ctrl+A Befehl "Bearbeiten|Alles auswählen"

Arrow, Tab Bewegung zwischen den Objekten

Del Löschen der markierten Objekte

Enter Ruft den Editor des markierten Objekts auf

Shift+Pfeile Größenänderung des markierten Objekts

Ctrl+Pfeile Verschiebung des markierten Objekts

Alt+Pfeile Markiertes Objekt haftet sich an das nächste Objekt in ausgesuchter Richtung


Maussteuerung

Tasten | Beschreibung
Linke Maustaste | Objektauswahl; Einfügen eines neuen Objektes; Verschieben und Größenänderung des Objektes (Objekte). Der Maßstab der hervorgehobenen Objekte wird durch das Ziehen des roten Quadrates in der rechten, unteren Ecke der Gruppe verändert.
Rechte Maustaste | Das Kontextmenü des Objekts (Objekte), über welchem sich der Mauszeiger befindet.
Doppelklick linke Maustaste | Aufruf des Objekteditors. Der Doppelklick auf eine leere Stelle der Seite ruft das Dialogfenster "Seiteneinstellungen" auf.
Mausrad | Scrollen der Seite.
Shift + Linke Maustaste | Ist das Objekt bereits ausgewählt, so wird die Auswahl aufgehoben. Die Auswahl der anderen Objekte ist dadurch nicht betroffen.
Ctrl + linke Maustaste | Beim Drücken und Verschieben der Maus wird ein Rahmen gezogen; beim Loslassen werden alle Objekte hervorgehoben die in dem Rahmen liegen.
Alt + linke Maustaste | Ist das Objekt "Text" hervorgehoben, so wird der Inhalt bearbeitet.


Designersymbolleiste

Die Designerleiste ist mit der Objektleiste verbunden und besitzt folgende Buttons

Icon | Bezeichnung | Beschreibung
 | Auswahlwerkzeug | Standardansicht, in dem man mit dem Mauszeiger Objekte anwählen, deren Größen verändern kann usw.
 | Hand | Das Berichtsblatt kann bei gedrückter Maustaste verschoben werden.
 | Zoom | Das einmalige Drücken der linken Maustaste vergrößert den Maßstab um 100%, die rechte Maustaste verkleinert um 100%. Durch Drücken + Halten der linken Maustaste wird beim Ziehen der ausgewählte Bereich vergrößert.
 | Texteditor | Das Klicken auf das Objekt "Text", erlaubt den Inhalt direkt auf der Seite zu bearbeiten. Beim Drücken + Halten der linken Maustaste wird beim Ziehen in dem ausgewählten Bereich das Objekt "Text" gebildet und dessen Editor gestartet.
 | Format kopieren | Die Taste wird aktiv, wenn das Objekt "Text" ausgewählt ist. Das Klicken mit der linken Maustaste auf das Objekt "Text", kopiert das Format des vorhergehenden Objektes "Text" rein.


Symbolleiste "Standard"

Symbolleiste &quot;Standard&quot;

 Top Letztes Next

Icon | Bezeichnung | Beschreibung
 | Neuer Report | Erstellt einen neuen Report.
 | Report öffnen | Öffnet einen gespeicherten Report . Tastaturbefehl - Ctrl+O.
 | Report speichern | Speichert einen Report. Tastaturbefehl - Ctrl+S.
 | Vorschau | Erstellt den Bericht und zeigt die Vorschau. Tastaturbefehl - Ctrl+P.
 | Neue Seite | Fügt eine neue Seite in den Bericht ein.
 | Neue Dialogseite | Fügt eine neue Dialogseite in den Report ein.
 | Seite löschen | Entfernt die bestehende Seite.
 | Seiteneinstellungen | Ruft das Fenster Seiteneinstellungen auf.
 | Variablen | Ruft den Editor der Variablen auf.
 | Ausschneiden | Ausschneiden der markierten Objekte in den Zwischenspeicher. Tastaturbefehl - Ctrl+X.
 | Kopieren | Kopiert die markierten Objekte in den Zwischenspeicher. Tastaturbefehl - Ctrl+C.
 | Einfügen | Fügt Objekte aus dem Zwischenspeicher ein. Tastaturbefehl - Ctrl+V.
 | Rückgängig | Macht den letzten Befehl rückgängig. Tastaturbefehl - Ctrl+Z.
 | Wiederherstellen | Macht die Aktion des Befehls "Rückgängig" rückgängig. Tastaturbefehl - Ctrl+Y.
 | Gitter anzeigen | Zeigt die Gitterlinien auf der Seite an. Die Abstände können bei den Optionen des Designers verändert werden.
 | Am Gitter ausrichten | Beim Verschieben und Ändern der Größen der Objekte, werden die Koordinaten/Maßstäbe sprungweise an die Abstände des Gitters angepasst.
 | An Gitter anpassen | Verändert die Maßstäbe/Standorte der markierten Objekte so, dass sie sich an das Gitter anpassen.
 | Zoom | Bestimmt den Maßstab der Seite.
3.15 | Gruppieren | Gruppiert die markierten Objekte.
3.16 | Gruppierung aufheben | Die Gruppierung der markierten Objekte aufheben.


Symbolleiste "Text"

Symbolleiste &quot;Text&quot;

 Top Letztes Next

Icon | Bezeichnung | Beschreibung
Kein Stil | Stil | Erlaubt die Auswahl des Stils. Um diese zu bestimmen rufen Sie den Menüpunkt "Report|Stile..." auf.
Arial | Schrift | Erlaubt die Wahl der Schrift. Merkt sich die 5 zuletzt aufgerufenen.
10 | Schriftgröße | Verändert die Größe der Schrift. Kann auch eingegeben werden.
 | Fett | Formatiert markierten Text/Zahlen "fett" (hebt die Formatierung auf, wenn diese bereits "fett" formatiert ist).
 | Kursiv | Formatiert markierten Text/Zahlen kursiv (hebt die Formatierung auf, wenn diese bereits "kursiv" formatiert ist).
 | Unterstrichen | Unterstreicht markierten Text/Zahlen (hebt die Formatierung auf, wenn diese bereits "unterstrichen" formatiert ist).
 | Schrift-einstellungen | Schrifteinstellungen können hier verändert werden.
 | Schriftfarbe | Auswahl der Farben der Schrift.
 | Hervorheben | Zeigt einen Dialog mit den Attributen der Hervorhebung des ausgewählten Objektes "Text" auf.
 | Textdrehung | Erlaubt die Textdrehung.
 | Ausrichtung links | Richtet den Text links aus.
 | Ausrichtung zentriert | Zentriert den Text.
 | Ausrichtung rechts | Richtet den Text rechts aus.
 | Blocksatz | Richtet den Text gleichmäßig am linken und rechten Rand aus.
 | Ausrichtung oben | Richtet den Text am oberen Rand aus.
 | Ausrichtung mitte | Richtet den Text gleichmäßig am oberen und unteren Rand aus.
 | Ausrichtung unten | Richtet den Text am unteren Rand aus.


Symbolleiste "Rahmen"

Symbolleiste &quot;Rahmen&quot;

 Top Letztes Next

Icon | Bezeichnung | Beschreibung
 | Linie oben | Fügt hinzu/entfernt die Linie oben.
 | Linie unten | Fügt hinzu/entfernt die Linie unten.
 | Linie links | Fügt hinzu/entfernt die Linie links.
 | Linie rechts | Fügt hinzu/entfernt die Linie rechts.
 | Alle Rahmenlinien | Fügt alle Rahmenlinien hinzu.
 | Kein Rahmen | Entfernt alle Rahmenlinien.
 | Schatten | Aktiviert/entfernt Schatten.
 | Hintergrundfarbe | Erlaubt die Auswahl der Hintergrundfarbe.
 | Rahmenfarbe | Erlaubt die Auswahl der Rahmenfarbe.
 | Rahmenstil | Erlaubt die Wahl des Rahmenstils.
1 | Rahmenbreite | Erlaubt die Wahl der Rahmenbreite.


Symbolleiste "Ausrichtungspalette"

Symbolleiste &quot;Ausrichtungspalette&quot;

 Top Letztes Next

Icon | Beschreibung
 | Ausrichtung links.
 | Ausrichtung zentriert.
 | Ausrichtung rechts.
 | Ausrichtung oben.
 | Ausrichtung mitte.
 | Ausrichtung unten.
 | Abstand horizontal.
 | Abstand vertikal.
 | Horizontal im Band zentrieren.
 | Vertikal im Band zentrieren.
 | Gleiche Breite.
 | Gleiche Höhe.


Designer-Optionen

Um die Designeroptionen verändern zu können, nutzen Sie "Ansicht|Optionen..."..

Hier können die gewünschten Maße eingestellt (Zentimeter, Zoll, Pixel) und die Abstände des Gitters angepasst werden.Die Maße können ebenfalls im Designer selbst eingestellt werden. Ein Doppelklick in die linke Ecke der Statusleiste, in dem die aktuellen Maße angezeigt werden,verändert diese.

Es kann auch eingestellt werden, ob das Gitter angezeigt werden soll und ob die Objekte an diesem ausgerichtet werden sollen. Dies kann auch über die Symbolleiste "Standard" im Designer geschehen.

Sie können die Schriftart für den Code-Editor und für den Text-Editor einstellen. Ist die Option "Schrift des Objekts verwenden" aktiviert, so wird die Schriftart im Fenster des Editors, der Schrift im Objekt entsprechen.

Wenn Ihnen die weiße Arbeitsfläche des Designers und der anderen Fensternicht gefällt, so kann diese über die Buttons "Arbeitsbereich" und "Werkzeugfenster" geändert werden. Die Option "LCD Gitterfarbe" erhöht leicht den Kontrast der Gitterlinien.Dies verbessert ihr erkennen auf Flüssigkristallmonitoren.

Option "Editor nach dem Einfügen anzeigen" steuert den Prozess beim Einfügen neuer Objekte. Ist die Option aktiviert, so wird jedesmal beim Einfügen eines Objekts der Editor gestartet. Möchten Sie viele neue Objekte einfügen, so ist es besser diese Option abzuschalten.

Durch das Deaktivieren der Option "Bandbezeichnungen anzeigen" werden diese ausgeblendet. Dadurch wird auf der Seite Platz gespart. Die Bandbezeichnung wird in diesem Fall im Band geschrieben.

Das Deaktivieren der Option "Drop-Down Feldliste anzeigen" stoppt das Anzeigen der Drop-Down Liste wenn der Mauszeiger auf das Objekt "Text" gezogen wird, welches mit Daten verbunden ist. Dies wird notwendig, wenn im Bericht viele kleine Objekte enthalten sind.

Die Option "Freie Bandpositionierung" löst die Verbindung der Bänder zum Blatt. Diese Option ist abgeschaltet und die Bänder ordnen sich gem. ihrer Bestimmung. Der Abstand zwischen den Bändern wird im Feld "Abstand zwischen Bändern" festgelegt.


Reporteinstellungen

Das Fenster mit den Berichtsoptionen ist über das Menü "Report|Optionen..." zu erreichen. Der Dialog enthält 3 Seiten.

Erste Seite - Allgemein:

screenshot - 18.05.2009 , 14_56_06

Sie können den Bericht an einem angeschlossenen Drucker koppeln d.h. der Bericht wird, sollte nichts anderes eingestellt werden, über den ausgewählten Drucker laufen. Dies ist hilfreich, wenn es mehrere Drucker zur Auswahl gibt. Textdokumente können z.B. an einen Schwarz-Weiss-Drucker gekoppelt werden und Dokumente mit Grafiken an einen Farbdrucker. Im Verzeichnis der Drucker ist der Drucker "Vorgabe" enthalten. Wird dieser ausgewählt, so erfolgt das Drucken auf dem aktuell genutzten Drucker.

Ebenfalls kann die Anzahl der Kopien eingestellt werden und ob eine Sortierung erfolgen soll.

Die Einstellungen dazu werden im Fenster "Drucken" angezeigt.

Wenn "Zweipass" aktiviert ist, wird der Bericht im 2 Schritten erstellt. Beim ersten Schritt wird der Report erstellt und auf Seiten verteilt, dies jedoch ohne das Speichern des Ergebnisses. Beim zweiten Schritt erfolgt die übliche Erstellung des Berichtes durchgeführt mit dem anschließenden Speichern.

Wozu die 2 Schritte? Oft wird diese Option in dem Fall verwendet, dass in dem Report die gesamte Seitenanzahl erwähnt wird, z.B. "Seiten 1 bis 15". Dann wird im ersten Schritt die tatsächliche Anzahl festgestellt und ist über die Systemvariable TOTALPAGES zu erreichen. Der häufigste Fehler ist der Versuch der Anwendung dieser Variablen bei einem Einweg-Report, hier wird diese dann auf 0 gesetzt.

Eine andere Anwendungsmöglichkeit ist das Ausführen von Berechnungen im ersten Durchgang und das Anzeigen der Resultate im zweiten. Zum Beispiel wenn man in der Kopfzeile einer Gruppe eine Summe anzeigen lassen möchte, die normalerweise erst am Ende der Gruppe berechnet und angezeigt wird. Diese Arten der Berechnung sind mit der Nutzung der eingebauten Sprache FR verbunden.

Das Häkchen bei "Drucken wenn leer" erlaubt es, einen Report zu erstellen der keine Datenzeilen enthält. Wird diese Option deaktiviert, so werden leere Reporte nicht erstellt.

Das Feld "Passwort" erlaubt die Eingabe des Passwortes, welches beim Öffnen des Reports abgefragt wird.

Die Steuerungselemente der zweiten Seite erlauben den Zugriff auf die Optionen der Vererbung.

screenshot - 18.05.2009 , 14_57_31

Ausführlicher über die Vererbung werden wir uns in im Kapitel "Vererbung der Reporte" beschäftigen. Hier sieht man von welchem Report der Aktuelle ererbt ist, der Basis-Report kann abgetrennt werden (dadurch wird der Report selbstständig, nicht vererbt) und auch kann ein Ausgewählter beerbt werden.

Die Elemente der dritten Seite des Dialoges erlauben die Reportbeschreibung.

screenshot - 18.05.2009 , 14_57_16

Hier können z.B. der Name der Reports (wird im Vorschaufenster angezeigt), Autor, Beschreibung, Grafik, Version, usw. eingegeben werden. All dies ist jedoch nicht notwendig und dient nur informativen Zwecken.


Seiteneinstellungen

Seiteneinstellungen sind über das Menü "Datei|Seiteneinstellungen..." oder über den Doppelklick auf eine freie Fläche des Blattes zu erreichen.

screenshot - 18.05.2009 , 15_09_58

Auf der ersten Seite des Dialoges können die Ränder, Größe und Ausrichtung der Seite ausgewählt werden. In "Papierzufuhr" kann man den Drucker für die erste und alle anderen Seiten aussuchen.

Auf der zweiten Seite kann die Spaltenanzahl, bei mehrspaltigen Reporten, angegeben werden. Die aktuellen Einstellungen werden im Designer angezeigt.

screenshot - 18.05.2009 , 15_10_11

Die Option "Auf vorige Seite drucken" startet den Druck der Seite auf freiem Platz der vorherigen. Dies wird angewendet, wenn die Reportschablone aus mehreren Seiten besteht oder beim Druck von Batch-Reporten.

Die Option "Ränder spiegeln" vertauscht den rechten und linken Rand der Seite, um diese besser anzeigen und drucken zu können.

Die "Endlose Seitenbreite" und "Endlose Seitenhöhe" Optionen passen die Seitengröße der Anzahl der Datensätze auf der Seite an. In diesem Fall sehen Sie eine große Seite in dem Vorschau-Fenster, statt mehrerer Seiten.

Die Option "Seitenhöhe im Entwurfsmodus vergrößern" erhöht die Seitenhöhe. Dies ist hilfreich, wenn es auf der Seite mehrere Bänder gibt. Die tatsächliche Höhe wird jedoch nicht verändert.


Reportobjekte

Eine leere Reportseite in FastReport sieht aus, wie eine leeres Blatt Papier. Auf der gesamten Seite können Objekte eingefügt werden, welche verschiedene Informationen anzeigen können (Text/Grafiken usw.). Auch kann das äußere Erscheinungsbild angepasst werden. Hier eine kurze Beschreibung der standardmäßig zur Verfügung stehenden Objekte:

Objekt | Icon | Beschreibung
Band einfügen | 10.1 | Fügt ein Band ein.
Text | 10.2 | Zeigt eine oder mehrere Textzeilen in der markierten Fläche.
Grafik | 10.3 | Zeigt eine Grafik in den Formaten BMP, JPEG, ICO, WMF, EMF.
Systemtext | 10.4 | Zeigt Systeminformationen an (Datum, Uhrzeit, Seitenzahl), sowie die Aggregatwerte.
Unterreport | 10.5 | Erlaubt es einen Unterreport innerhalb des aktuellen einzufügen.
Zeichnen | 10.6 | Objekte der Kategorie "Zeichnen" stellen verschiedene geometrische Figuren zur Verfügung Linien, Rechteck, abgerundetes Rechteck, Ellipse, Dreieck, Raute.
Diagramm | 10.7 | Zeigt die Daten in Form verschiedener Diagramme an (Kreis-Diagramm, Histogramm usw.).
RichText | 10.8 | Zeigt den formatierten Text im Format "RichText" (RTF).
Cross-tab Objekt | 10.9 | Erstellung einer Tabelle.
CheckBox | 10.10 | Erstellt eine Checkbox Häkchen oder Kreuz.
Barcode | 10.11 | Zeigt die Daten in Form eines Barcodes an (es stehen verschiedene Arten zur Verfügung).
OLE - Objekt | 10.12 | Erlaubt es diverse Objekte anzuzeigen, unter Verwendung von OLE.
Verlauf | 10.13 | Zeigt eine steigende Schattierung an.

Die wichtigsten Objekte mit denen Sie am meisten arbeiten werden, sind "Band" und "Text". Im folgendem Verlauf dieses Kapitels werden wir Sie näher kennen lernen.


Report "Hello, World!"

Report &quot;Hello, World!&quot;

 Top Letztes Next

Erstellen wir den einfachsten Report, der eine einzige Überschrift "Hello, World!" enthält. Öffnen Sie den Designer FastReport. Auf der Objektleiste des Designers suchen wir den Button "Text" und klicken diesen an. Danach bewegen wir den Mauszeiger auf die gewünschte Stelle des Blattes und klicken erneut mit der Maustaste. Das Objekt ist erstellt.

Auf den Bildschirm erscheint der Texteditor, falls nicht (dies kann in den Optionen des Designers eingestellt werden), so klicken Sie doppelt auf das Objekt.

Fügen Sie den Text "Hello World!" ein und drücken auf OK.

Der Report ist fertig. Um diesen einzusehen wählen Sie den Punkt "Datei|Vorschau" oder klicken Sie auf den Button in der Standardsymbolleiste. Sie werden eine einzelne Seite des Reports sehen auf der «Hello World!" steht. Den erhaltenen Report kann man ausdrucken, speichern oder in ein unterstütztes Format exportieren.


Das Objekt "Text"

Das Objekt &quot;Text&quot;

 Top Letztes Next

Das Objekt "Text" besitzt umfangreiche Möglichkeiten. Es kann Text, Rahmen und Schattierungen anzeigen. Der Text kann verschiede Schriftarten haben und in verschiedenen Größen, Farben und Stilen dargestellt weren. Alle Einstellungen werden manuell mit Hilfe der Symbolleisten gemacht:

Hier einige Beispiele der Darstellung des Textes:

Lassen Sie uns nun weitere Möglichkeiten dieses Hauptobjektes kennenlernen. Erstellen wir ein neues Objekt "Text" und fügen dort 2 Zeilen ein:

Dies ist eine sehr, sehr, sehr lange Textzeile.

Diese zweite Zeile ist kürzer.

Aktivieren Sie den Rahmen des Objekts und ziehen diesen mit der Maus auf eine Größe von 9 cm x 3 cm. Sie sehen das Objekt ist in der Lage auch mehrzeilige Texte darzustellen und nicht nur einzeilige. Jetzt verkleinern Sie das Objekt auf eine Breite von 5 cm. Die lange Zeile passt jetzt nicht mehr in das Objekt, deshalb wird der Text der Breite automatisch angepasst. Hier arbeitet die Objekteigenschaft "WordWrap" oder auch "Zeilenumbruch". Sollte diese ausgeschaltet werden (im Inspektor oder im Objektkontextmenü) so werden die Wörter einfach abgeschnitten.

Jetzt testen wir das Ausrichten des Textes innerhalb des Objekts. Die Buttons dazu befinden sich in der Symbolleiste "Text" und erlauben eine unabhängige Ausrichtung des Textes, sowohl horizontal als auch vertikal. Achten Sie auf den Button "Blocksatz", dies erlaubt eine Ausrichtung des Textes am rechten und linken Rand des Objekts. Dazu muss die Option "Zeilenumbruch" aktiviert sein.

Der gesamte Text kann von 0 bis 360 Grad gedreht werden. Der Button [image] auf der Symbolleiste "Text" erlaubt das schnelle drehen des Textes um 45, 90, 180 und 270 Grad. Falls eine andere Gradzahl benötigt wird, benutzen Sie Objektinspektor. In der Eigenschaft Rotation kann der nötige Wert eingegeben werden. Sollte sich die Gradzahl von den vorgegebenen 45, 90, 180, 270 unterscheiden, kann es sein, dass ein Teil des Textes nicht mehr innerhalb der Grenzen des Objekts liegt (s.h. Bild). Vergrößern Sie die Höhe des Objekts, um diese anzupassen.

Sehen wir uns kurz einige Eigenschaften des Objekts "Text" an, die sein Äußeres beeinflussen. Die meisten dieser Eigenschaften sind nur über den Inspektor erreichbar:

- BrushStyle Art der Füllung im Objekt;

- CharSpacing Pixelabstand zwischen den Symbolen;

- GapX, GapY Pixelabstand des Textes von der linken und oberen Grenze des Objekts;

- LineSpacing Zeilenabstand in Pixel;

- ParagraphGap Abstand der ersten Zeile des Paragraphen in Pixel.


HTML-Tags im Objekt "Text"

HTML-Tags im Objekt &quot;Text&quot;

 Top Letztes Next

Dieses Objekt "versteht" einige einfache HTML-tags. Tags können innerhalb des Textes im Objekt angelegt werden. Diese sind von vornherein abgestellt und müssen erst aktiviert werden, dazu klicken Sie im Kontextmenü des Objekts auf "HTML Tags erlauben" oder aktivieren die Eigenschaft "AllowHTMLTags" im Objektinspektor. Hier eine Liste der unterstützten Tags:

<b> - fetter Text

<i> - kursiver Text

<u> - unterstrichener Text

<strike> - durchgestrichener Text

<sub> - unterzeiliger Text

<sup> - Text oberhalb der Zeile

<font color> - Schriftfarbe

<nowrap> - der Text wird nicht wie bei "WordWrap" getrennt, sondern komplett übertragen

Demonstrieren wir die Anwendungen der Tags an Beispielen.

text <b>fetter Text</b> <i>kursiver Text</i> <b><i>fett und kursiv</b></i>

E = mc<sup>2</sup>

A<sub>1</sub> = B<sup>2</sup>

ein gewöhnlicher Text, <font color=red>und dieser ist rot</font>

ein gewöhnlicher Text, <font color="#FF8030">und dieser orange</font>

ein Beispiel des Tags <nowrap>.

Reportgenerator - Fast Report.

Reportgenerator - <nowrap>Fast Report.</nowrap>


Darstellung von Ausdrücken mithilfe des Objektes "Text"

Darstellung von Ausdrücken mithilfe des Objektes &quot;Text&quot;

 Top Letztes Next

Eine der wichtigsten Besonderheiten dieses universellen Objektes, ist die Möglichkeit nicht nur statische Text anzuzeigen, sondern auch Ausdrücke. Diese können im Objekt mit dem Text vermischt werden. Schauen wir uns ein einfaches Beispiel an, in dem wir folgende Textzeile in das Objekt "Text" einfügen:

Hello, World! Today is [DATE].

Wenn wir den Report jetzt erstellen, sehen wir folgendes:

Hello, World! Today is 01.01.2004.

Was ist passiert? Während der Reporterstellung hat FastReport im Text einen Ausdruck entdeckt (in den eckigen Klammern) und hat dessen Bedeutung in den Text eingebaut. Selbstverständlich ohne die eckigen Klammern. Das Objekt "Text" kann eine beliebige Anzahl von Ausdrücken enthalten, vermischt mit dem gewöhnlichen Text. Die Klammern können sowohl Ausdrücke als auch einzelne Variablen enthalten z.B. [1+2*(3+4)]. Die Ausdrücke können ebenso Konstanten, Variablen, Funktionen und DB Felder enthalten.. Diese Möglichkeiten werden wir im späteren Verlauf näher betrachten.

Also erkennt FastReport automatisch Ausdrücke, wenn diese in eckigen Klammern stehen. Was jedoch ist, wenn unser Text eckige Klammern enthält, wir aber nicht wollen, das diese als Ausdruck erkannt werden? z. B. wollen wir diesen Text einfügen:

a[1] := 10

FastReport versteht die [1] als Ausdruck und macht folgendes:

a1 := 10

was uns selbstverständlich nicht zufrieden stellt. Eine der Möglichkeiten das zu vermeiden ist, die Ausdruckerkennung zu deaktivieren. Einfach die Eigenschaft AllowExpressions im Inspektor oder "Ausdrücke erlauben" im Kontextmenü ausschalten. Dadurch werden Ausdrücke im Text ignoriert.

Manchmal braucht man jedoch Ausdrücke und Text in eckigen Klammern z.B.:

a[1] := [myVar]

Das Deaktivieren der Ausdrücke erlaubt das Einfügen der eckigen Klammern, verhindert jedoch die Bearbeitung der Ausdrücke. In diesem Fall erlaubt FastReport andere Symbole um Ausdrücke zu kennzeichnen. Diese Eigenschaft besitzt das Objekt ExpressionDelimiters, welches als Standardeinstellung "[,]" hat. In unseren Fall ersetzen wir nun die Klammer durch:

a[1] := <myVar>

Die Eigenschaft ExpressionDelimiters muss dazu auf "<,>" umgestellt werden. Das Komma trennt in dabei das öffnende Symbol von dem schließenden. Es gibt jedoch eine Beschränkung. Man darf nicht für das Öffnen und das Schließen der Klammern dasselbe Symbol verwenden. z.B. "%,%" . Man kann mehrere Symbole einfügen z.B. "<%,%>". Dies würde wie folgt aussehen:

a[1] := <%myVar%>


Verwendung der Bänder

Bänder werden für die logische Ordnung der Objekte verwendet. Indem wir das Band "PageHeader" verwenden, teilen wir FastReport mit, dass dieses Objekt auf jedem Blatt des Reports erscheinen soll. Analog dazu führt des Verwenden des Bandes "Fuß" dazu, dass dieser auf jeder Seite des Reports unten erscheint mit allen Objekten die darauf liegen. Machen wir ein einfaches Beispiel, indem wir einen Report erstellen, der die Überschrift "Hello!" oben, Daten oben rechts und Seitenzahl unten rechts enthält.

Öffnen Sie den Designer und klicken auf "Neuer Report" in der Symbolleiste. Es erscheint ein Report der schon 3 Bänder enthält: "ReportTitle", "MasterData" und "PageFooter". Entfernen wir erstmal das Band "MasterData" indem wir es anklicken und die Taste Delete verwenden oder über das Kontextmenü. Jetzt fügen wir ein neues Band "PageHeader" hinzu. Dazu drücken wir in der Objektsymbolleiste den Button "Band einfügen" und wählen aus der Liste "Seitenkopf" aus. Es wird ein neues Band eingefügt. Die vorhandenen Bänder werden nach unten verschoben, denn der FastReport Designer verteilt die Bänder automatisch so, dass sich oben die Bänder mit den Überschriften, danach die Datenbänder und darunter die "Fußbänder" befinden.

Jetzt verteilen wir Objekte. In das Band "Header" fügen wir das Objekt "Systemtext" ein und in dessen Editor wählen wir die Systemvariable "[DATE]" aus (zur Erinnerung, man kann das Datum auch mithilfe von gewöhnlichem Text einfügen, wenn man in dessen Editor den Text "[DATE]" einfügt). In das Band "ReportTitle" fügen wir das Objekt "Text" ein, der "Hello!" enthält. Das Band "PageFooter" enthält bereits jetzt schon das von uns gewünschte Objekt mit der Seitenzahl.

Wenn wir den Report nun starten, sehen wir, dass die Objekte die gewünschte Anordnung haben.

Also für die richtige Anordnung der Objekte sind Bänder verantwortlich. Abhängig von der Bandart kann sich das Objekt oben oder unten auf der Seite, auf der ersten oder letzten Seite befinden. Die Bänder, welche am meisten verwendet werden, arbeiten auf folgende Weise:

- Band "Seitenkopf" erscheint oben auf jeder Seite;

- Band "Seitenfuß" erscheint unten auf jeder Seite;

- Band "ReportTitle" erscheint auf der ersten Seite oben, vor dem Band "Seitenkopf" (dies kann mit der Eigenschaft TitleBeforeHeader umgestellt werden);

- Band "Reportzusammenfassung" erscheint auf der letzten Seite des Reports;


Datenbänder

Jetzt kommen wir zum interessantesten Teil, der Möglichkeit die Daten aus DB Tabellen und Anfragen einzufügen. Was ist eine Tabelle in diesem Fall? Es ist eine von vornherein unbekannte Anzahl von Zeilen und jede enthält eine bestimmte Anzahl von Spalten (Feldern). Für das Drucken dieser Art von Informationen nutzt FastReport besondere Datenbänder. Diese Bänder haben den Namen "Daten xxx Ebene".Um die komplette Tabelle oder nur bestimmte Felder darzustellen müssen Sie:

- Einfügen der Datenbänder in den Report;

- Verknüpfung dieser mit einer Tabelle;

- die Objekte "Text" einfügen mit den Feldern, die wir verwenden möchten;

Bei der Reporterstellung wird FastReport das Band so oft verwenden, wie es Einträge in unserer Tabelle gibt. Sollte der Platz auf der Seite nicht ausreichen, so werden neue Seiten erzeugt.


Daten/Tabellen für den Report

Wählen Sie im Designer von den Punkt "Report|Daten..." aus und kennzeichnen die gewünschten Daten.

screenshot - 18.05.2009 , 15_30_20


Report "Kundenliste"

Report &quot;Kundenliste&quot;

 Top Letztes Next

Unser zweiter Report wird wesentlich komplexer als der erste, denn er wird Daten aus der Tabelle DB enthalten und zwar die Kundenliste einer Firma.

Gehen wir in den Designer und klicken den Button "Neuer Report". FastReport erstellt nun automatisch eine leere Schablone mit den Bändern "ReportTitle", "MasterData" und "PageFooter". Um die Tabelle in FastReport sehen zu können, muss man deren Nutzung erlauben. Wir wählen den Menüpunkt "Report|Daten..." aus und markieren unsere Tabelle (diese hat nun als einzige in der Liste ein Häkchen) Danach schließen wir das Dialogfenster, die Tabelle und deren Felder werden nun im Fenster "Daten" angezeigt.

Beginnen wir mit dem Erstellen des Reports. In das Band "ReportTitle" legen wir das Objekt "Text" mit dem Text "Kundenliste" ein. Das Band "MasterData" verknüpfen wir mit unserer Datenquelle. Dies kann man auf drei Arten machen:

- Doppelklick auf das Band;

- den Punkt "Bearbeiten..." im Kontextmenü auswählen;

- auf die Eigenschaft DataSet im Inspektor klicken.

Nun fügen wir vier Objekte in das Band ein. Dies sind die Kundennummer, Kundenname, Telefon und Fax. Wir machen das auf verschiedene Arten, um die umfangreichen Möglichkeiten des Designers zu demonstrieren. Das erste Objekt "Text" legen wir auf das Band und geben dort den Text "[a."id"]" ein. Das ist die umständlichste Eingabeweise, da man alles per Hand eingeben muss und deshalb schnell Fehler unterlaufen können. Um die Eingabe zu erleichtern, nutzen wir den Ausdruckseditor, dieser befindet sich in der Symbolleiste des Texteditors. Um das Feld einzufügen, klicken wir auf den Ausdruckseditor-Button und führen einen Doppelklick auf das gewünschte Element im sich öffnenden Dialog aus. Wir schließen den Dialog mit der Taste OK und sehen, dass das Feld in den Text eingefügt worden ist.

Die zweite Möglichkeit ein DB-Feld einzufügen ist die Nutzung des Objektinspektors. Legen wir auf das Band das zweite Objekt, im Editor schreiben wir nichts. Im Inspektor stellen wir die Eigenschaften ein:

DataSet = a

DataField = companyname

Da beide Eigenschaften die Liste darstellen, suchen wir uns einfach das gewünschte Feld mit der Maus aus.

Die dritte Eigenschaft: Drag&Drop des gewünschten Feldes aus dem Fenster "Daten" in den Report. Dies ist die einfachste Vorgehensweise. Halten Sie das Feld "phone1" fest und ziehen es auf das Band. Das einzige worauf man hier achten sollte, wäre es die Option "Header erstellen" im unteren Teil des Fensters "Daten" zu deaktivieren. Sonst wird zusätzlich auch noch ein Feld, in diesem Fall mit der Bezeichnung, eingefügt.

Jetzt zur vierten Möglichkeit. Fügen Sie ein leeres Objekt "Text" in das Band ein und bewegen die Maus zum Objekt. Auf der rechten Seite erkennen Sie nun einen Button mit einem Pfeil nach unten. Dieser öffnet eine Drop-Down-Liste mit den Feldern der Datenbank. Hier wählen wir das Feld "Fax" aus. Diese Möglichkeit steht zur Verfügung, wenn das Band mit den Daten verknüpft ist. Dies wird in den Optionen des Designers über das Menü "Ansicht|Optionen...", "Drop-Down Feldliste anzeigen" gesteuert.

Der Report ist nun fertig:

Schauen wir uns die Vorschau mal an:


Anzeigen der DB-Felder mithilfe des Objektes "Text"

Anzeigen der DB-Felder mithilfe des Objektes &quot;Text&quot;

 Top Letztes Next

Wie wir gesehen haben, ist das Objekt "Text" in der Lage statischen Text und Ausdrücke anzuzeigen, aber auch Daten einer Datenbank. Wobei dies auf zwei Arten geschehen kann, ob durch eine Verknüpfung zur DB im Text oder durch Verknüpfung des Objekts zum gewünschtem Feld mithilfe der Eigenschaften DataSet und DataField. Die erste Möglichkeit ist praktisch, weil diese es erlaubt im selben Objekt sowohl den Ausdruck als auch eine Erklärung dazu einzufügen z.B.

Vorname: [a."name"]

Wie man sieht, wird für Verknüpfungen zur DB eine spezielle Syntax verwendet: Datensetname."Feldname". Im Namen des Datensets können, wie auch im Feldnamen, Leerzeichen enthalten sein. Ein Leerzeichen zwischen einem Punkt und der Klammer ist nicht erlaubt.

In den Text des Objektes kann man nicht nur eine Verknüpfung zum Feld machen. Man kann auch Berechnungen mit diesem Feld erstellen.

Länge in cm: [<a."Length_in"> * 2.54]

Beachten Sie die Verwendung der eckigen und spitzen Klammern. Erinnern wir uns, dass die eckigen Klammern für Ausdrücke verwendet werden, falls nichts anderes bestimmt worden ist. Anstatt dieser Klammern kann auch ein beliebiges Paar anderer Symbole verwendet werden (s.h. Anzeige von Ausdrücken mithilfe des Objektes "Text"). Spitze Klammern werden innerhalb der Ausdrücke benutzt, um Variablen bei FastReport und DB-Felder darzustellen. Logischerweise sollten wir schreiben

Vorname: [<a."name">]

anstatt

Vorname: [a."name"]

Es stimmen jedoch beide Formen, weil FastReport das Weglassen der spitzen Klammern zulässt, wenn der Ausdruck nur eine Variable oder ein DB-Feld enthält. Sollten im Ausdruck jedoch mehrere Glieder enthalten sein, sind die Klammern Pflicht:

Länge in cm: [<a."Length_in"> * 2.54]


Variablen

Indem man die im Report enthaltenen Variablen benutzt, kann man die Bezeichnungen der Felder verändern, aber auch andere Ausdrücke. Um mit Variablen arbeiten zu können, wählen Sie in der Menüleiste "Report|Variablen…" oder klicken auf den Button "Variablen" auf der Symbolleiste.

Die Liste der Variablen besitzt in FastReport eine zweiebenen Struktur . Die erste Ebene sind Kategorien, die zweite die Variablen selbst. Die Einteilung in Kategorien wurde für den Fall vorgenommen, dass die Liste der Variablen sehr groß ist. In der Liste muss mindestens eine Kategorie enthalten sein, sprich die Variablen können nicht auf der obersten Ebene sein. Außerdem werden Kategorien nur zur logischen Ordnung der Variablen verwendet und kommen nicht in den Report. Deshalb achten Sie bei der Vergabe der Namen darauf, das diese einzigartig sind. Zwei gleiche Variablen in verschiedenen Kategorien sind nicht möglich.

Demonstrieren wir die Verwendung der Variablen am Beispiel. Gehen wir davon aus, das es zwei Datenquellen gibt. Die Erste: Kunden mit den Feldern "CustNo" è "Name" und zweite Aufträge mit "OrderNo" und "Date". Wir können mit den Feldern folgende Liste der Variablen erstellen.

Kunden

Kundennummer

Kundenname

Aufträge

Auftragsnummer

Auftragsdatum

"Kunden" und "Aufträge" sind zwei Kategorien. Öffnen wir nun den Variablen-Editor und erstellen mithilfe der Buttons "Kategorie", "Variable" und "Bearbeiten" die benötigte Struktur. Um den DB-Feldern die Variablen zuzuordnen, wählen Sie eine Variable auf der rechten Seite aus und klicken doppelt darauf. Der Ausdruck erscheint nun unten im Fenster, hier kann der Ausdruck auch manuell bearbeitet werden. Die Kategorien müssen nicht verbunden werden.

screenshot - 18.05.2009 , 15_41_29

Wenn die Liste der Variablen fertig ist, schließen wir das Fenster. Jetzt müssen die Variablen in den Report. Im Gegensatz zu dem Einfügen der DB-Felder, gibt es hier wesentlich weniger Varianten. Entweder wir fügen die Variablen manuell ein, indem wir den Text [Kundennummer] eingeben, oder wir ziehen die Variable aus dem Fenster "Daten" auf den gewünschten Platz im Report. Im zweiten Fall muss man auf das Tab "Variablen" umschalten.


Objekt "Grafik"

Objekt &quot;Grafik&quot;

 Top Letztes Next

Das nächste Objekt welches wir betrachten möchten, ist das Objekt "Grafik". Es wird ebenfalls oft in Reporten verwendet. Damit können Sie z.B. das Firmenlogo, ein Mitarbeiterfoto usw. in den Report einfügen. Das Objekt ist in der Lage die Formate BMP, JPEG, ICO, WMF, EMF darzustellen.

Lassen Sie uns die Möglichkeiten des Objekts betrachten. Erstellen Sie einen leeren Report und fügen auf eine freie Fläche das Objekt "Grafik" ein. Im Editor des Objekts (öffnet automatisch, falls nicht führen Sie einen Doppelklick auf das Objekt aus) kann man nun eine Grafik einfügen oder entfernen. Laden Sie eine beliebige Grafik hoch und drücken auf OK.

Im Kontextmenü des Objekts sehen wir folgende Optionen (in Klammern die Bezeichnungen des Objektinspektors):

- Größe automatisch (AutoSize)

- Dehnen (Stretched) standardmäßig aktiviert

- Zentrieren (Center)

- Seitenverhältnis behalten (KeepAspectRatio) - standardmäßig aktiviert

Wenn wir die Option "Größe automatisch" aktivieren, nimmt das Objekt die Größe der Grafik an. Diese Möglichkeit ist sinnvoll, wenn man Grafiken verschiedener Größen darstellen möchte. Standardmäßig ist diese Option abgeschaltet.

Die Option "Dehnen" ist standardmäßig aktiviert und dehnt die enthaltene Grafik im Objekt. Wenn Sie die Maße des Objekts mit der Maus verändern, wird sich die Größe der Grafik der des Objekts anpassen. Die Deaktivierung dieser Option führt dazu, dass die Grafik ihre ursprünglichen Maße behält. Der Unterschied zu "Größe automatisch" ist der, dass die Größe des Objektes sich nicht an die der Grafik anpasst, sprich das Objekt kann kleiner oder größer als die Grafik sein.

Die Option "Zentrieren" zentriert die Grafik im Objekt.

Die Option "Seitenverhältnis behalten" ist standardmäßig aktiviert und hat eine sehr nützliche Funktion: sie verhindert, dass sich die Grafik beim Ändern der Größe des Objekts, verzerrt. Diese Option arbeitet nur in Verbindung mit der Option "Dehnen". Bei jedem ändern der Größe bleibt deshalb der Kreis rund und wird nicht oval. Hinzu kommt, dass die gedehnte Grafik nicht das gesamte Objekt einnimmt, sondern nur den Teil, der benötigt wird, um die Grafik in den richtigen Proportionen darzustellen. Deaktiviert man diese Option wird die Grafik auf die gesamte Objektgröße gedehnt und falls die Maße des Objekts nicht denen der Grafik entsprechen, wird diese verzerrt dargestellt.

Eine weitere nützliche Eigenschaft ist FileLink, welche über den Inspektor zu erreichen ist. Hier kann man den Dateinamen angeben z.B. c:\picture.bmp, die Grafik wird dann bei Starten des Reports hochgeladen. Ebenso kann man dort eine Variable einsetzen z.B. [picture_file]. Beim Starten des Reports erkennt FastReport diese Variable (es muss der Dateiname sein) und lädt die Grafik hoch.


Report mit Grafiken

Das Objekt "Grafik" kann, wie viele andere Objekte in FastReport auch, Daten aus Datenbanken darstellen. Die Verknüpfung des Objektes zum benötigten DB-Feld erfolgt mithilfe der Eigenschaften DataSet und DataField im Objektinspektor. Im Gegensatz zum Objekt "Text" ist dies die einzige Möglichkeit Verknüpfungen herzustellen.

Demonstrieren wir das oben erwähnte anhand eines Beispiels. Starten wir einen neuen Report und verknüpfen die Tabelle "a" udn "Logo" mit dem Report im Fenster "Report|Daten..."

Starten wir mit der Erstellung der Form des Reports. Auf das Band "Reporttitel" legen wir das Objekt "Text" mit dem Text "Fische" an. Das Band "Masterdata" verknüpfen wir mit der Datenquelle (Doppelklick auf das Band und wählen "a" aus der Liste). Damit die Grafik reinpasst, vergrößern wir die Höhe des Bandes auf 3 cm. Auf das Band legen wir das Objekt Text und verknüpfen es mit dem Feld "CommonName" mit einer der oben erwähnten Möglichkeiten. Daneben legen wir das Objekt "Grafik" und verknüpfen dieses mit dem Feld "Grafik". Hierfür stellen wir im Objektinspektor die Eigenschaften ein:

DataSet = Logo

DataField = 'photoblob'

Zur Erinnerung, beide Eigenschaften sind vom Typ "Liste", deswegen kann man die Werte mit der Maus aussuchen. Damit die Grafik reinpasst, verändern wir die Maßstäbe auf 4 x 2.5 cm.

Der Report ist nun fertig (s.h. unten):


Multi-Text Anzeige

Kehren wir nun zu unserem Beispiel mit dem Logo zurück. In der Tabelle "a" ist ein Feld "notes", welches eine detaillierte Beschreibung für jeden Adresse enthält. Fügen wir dieses Feld nun in unseren Report ein.

Auf den ersten Blick ist alles recht einfach. Wir fügen dem Band mit den Daten das Objekt "Text" hinzu, verknüpfen dieses mit dem Feld und stellen die Maße des Objektes auf - 8 x 2.5. Wir starten den Report und sehen, dass das Ergebnis nicht dem entspricht, was wir erwartet haben:

FastReport hat jedoch nur die ihm gegebenen Anweisungen befolgt. Das Feld "Notes" beinhaltet Text, dessen Größe variabel ist. Unser Objekt "Text", der die Informationen des Feldes anzeigt, besitzt jedoch eine feste Größe. Deswegen passen nicht alle Zeilen in das Objekt und werden nicht vollständig angezeigt. Was könnte man jetzt machen?

Man kann selbstverständlich die Größe des Objektes oder die der Schrift verändern. Dies jedoch würde zur Platzverschwendung auf dem Blatt führen, weil manche Fische eine lange Beschreibung haben und manche nur eine kurze. FastReport besitzt für diesen Fall Möglichkeiten dieses Problem zu lösen.

Die Rede geht über die Eigenschaften des Bandes, die eigene Größe den enthaltenen Objekten anzupassen. Hierfür muss die Eigenschaft "Dehnen" aktiviert werden. Dies ist jedoch nicht alles. Ein Objekt mit viel Text sollte ebenfalls in der Lage sein sich zu dehnen, das Objekt "Text" kann das.

Das Objekt kann automatisch seine Höhe und Breite anpassen, um den gesamten enthaltenen Text aufnehmen zu können. Hierfür sind die Eigenschaften "Breite automatisch" (AutoWidth) und "Dehnen" (StretchMode) da. Die Eigenschaft "Breite automatisch" wählt die Breite des Objektes so aus, dass alle Zeilen reinpassen, ohne das einzelne Wörter übertragen werden müssen. Dies ist hilfreich wenn das Objekt nur einen einzelne Texteil enthält. Die Eigenschaft "Dehnen" passt die Höhe des Objektes an den gesamten Text an. Die Breite wird nicht verändert. Diese Eigenschaft besitzt mehrere Modi, welche im Objektinspektor ausgewählt werden:

smDontStretch Objekt nicht dehnen, Standardeinstellung

smActualHeight Objekt dehnen, um den gesamten Text aufnehmen zu können

smMaxHeight Objekt dehnen, sodass seine unterste Grenze mit der des Bandes übereinstimmt. Dies werden wir später eingehender behandeln.

Jetzt interessiert uns die Eigenschaft "Dehnen" des Objektes "Text". Aktivieren Sie es im Kontextmenü oder stellen Sie die Eigenschaft StretchMode = smActualHeight im Inspektor ein. Ebenfalls aktivieren Sie "Dehnen" beim Band. Wenn der Report nun gestartet wird, arbeitet alles korrekt.

Wie wir sehen, füllt FastReport beim Erstellen des Reports die Objekte mit Daten, dehnt die Objekte mit der Option "Dehnen" und wählt auch die Höhe so aus, dass alle Objekte reinpassen. Ist die Option "Dehnen" des Bandes deaktiviert, wird die Höhe des Bandes nicht angepasst und das Band behält die im Designer gewählte Höhe. Wenn wir versuchen diese Option zu deaktivieren, sehen wir das Objekte mit einem langen Text trotzdem gedehnt werden, die Bänder jedoch nicht. Dies führt zu zu Textüberlagerung, da die Bänder hintereinander liegen.


Daten trennen

Betrachten wir eine Besonderheit des Reports mit den Fischen. Manche Seiten haben am Ende viel freien Platz. Wieso? Wenn der Report erstellt wird, füllt der Kern von FastReport die leere Seite mit Bändern. Nach jedem Band verlagert sich die aktuelle Position nach unten. Stellt FastReport nun fest, dass der Platz für das nächste Band nicht ausreicht (dessen Höhe ist größer, als die Höhe des restlichen Platzes auf der Seite), dann wird eine neue Seite gestartet. Die Bänder werden auf dieser fortgeführt und zwar so lange wie es Einträge in den Daten gibt.

Unser Report enthält in diesem Fall ein Objekt mit viel Text, deswegen ist die Anzahl der Bänder hoch. Falls nun das Band groß ist und nicht mehr auf diese Seite passt, wird es auf die nächste Seite übertragen. Es bleibt nun ungenutzter Platz auf der Seite s.h. folgende Grafik:

Um Platz zu sparren, nutzen wir die Möglichkeit den Inhalt der Bänder aufzuteilen. Dazu aktivieren wir die Option "Aufteilung erlauben" (AllowSplit) im Band "MasterData". Man sieht das der freie Platz weniger geworden ist.

Wie arbeitet die Aufteilung des Bandes? In FastReport gibt es mehrere Objekte, die diese Möglichkeit unterstützen und zwar "Text", "Rahmen" und RichEdit". Diese können "getrennt" werden, andere Objekte nicht. Wenn FastReport Objekte aufteilen will, geht es wie folgt vor:

- zeigt die Objekte an die nicht aufteilbar sind und ganz auf den freien Platz passen

- zeigt teilweise zerlegbare Objekte an (Text wird so angezeigt, das alle Zeilen in das Objekt passen);

- erstellt eine neue Seite und zeigt weiter Objekte an;

- wenn ein Objekt nicht zerlegt werden kann, wird es auf die folgende Seite übertragen, wobei die enthaltenen Objekte verlagert werden;

- der Prozess wird solange fortgeführt bis alle Objekte des Bandes angezeigt werden.

Der Algorithmus des Zerlegens wird deutlich, wenn man die folgende Grafik betrachtet:

Man muss anmerken, dass der Algorithmus nicht 100-prozentige Qualität des erhaltenen Reports garantiert. Deshalb sollten Sie diese Option vorsichtig verwenden. Sollten die Objekte auf dem Band auf eine komplizierte Weise angeordnet sein und hätten dazu noch verschiedene Schriftgrößen, könnte folgendes passieren:


Textumfluss bei Objekten

In manchen Fällen ist es bei der Reporterstellung notwendig, den Text um Objekte (oft Grafiken) fließen zu lassen. Hier eine Demonstration anhand dem Beispiel mit den Fischen.

Fügen wir in den Report ein Objekt "Text" ein (rot umrandet auf der Grafik) und verteilen die Objekte auf folgende Weise:

Beim Objekt Bio. "Notes" deaktivieren wir die Option "Dehnen, bei unteren Objekt aktivieren wir diese. Damit der Text aus dem Objekt Bio."Notes" in das untere Objekt rüberfliest, muss man beim Objekt Bio."Notes" die Eigenschaft FlowTo einstellen. Diese Eigenschaft ist Objektinspektor enthalten und ist eine Drop-Down-Liste. Aus dieser Liste wählt man nun den Namen des unteren Objekts. Das Ergebnis sieht wie folgt aus:

Bei der Erstellung des Reports wird, wenn der Text nicht komplett ins obere Objekt passt, der Rest des Textes ins untere übertragen. Da die Objekte um die Grafik angeordnet sind, wird der Text um die Grafik fließen.

Achtung: um korrekt funktionieren zu können, muss das Hauptobjekt vor dem verlinkten eingefügt werden! Wenn Ihr Report nicht richtig funktioniert, markieren Sie das verlinkte Objekt und übertragen es nach vorne mit dem Befehl "Bearbeiten|Nach vorne setzen".


Datendruck in Form einer Tabelle

Oft ist es notwendig den Report in Form einer Tabelle mit Umrandung darzustellen. Ein Beispiel hierfür ist die Preisliste. Um einen solchen Report in FastReport zu erstellen, muss man lediglich die Umrandung der Objekte auf dem Band "MasterData" einschalten. Betrachten wir ein paar Beispiele am einen Report mit Text.

Erstellen wir einen Report mit folgendem Aussehen:

Legen Sie die Objekte auf dem Band Seite an Seite und verkleineren die Höhe des Bandes auf ein Minimum.

Die erste und einfachste Tabellenart ist die, mit einem vollständigen Rahmen. Dazu müssen bei jedem Objekt alle Rahmenlinien aktiviert werden.

Die nächste Art der Umrandung, sind nur horizontale oder vertikale Linien. Man aktiviert dazu die benötigten Linien.

Um die äußere Umrandung der Tabelle zu machen, muss man leicht das Erscheinungsbild des Reports ändern:

Wie man sieht, haben wir zwei Objekte Text" hinzugefügt und haben die äußeren Rahmenlinien aktiviert. Im Endeffekt wird unser Report wie folgt aussehen:

Alle oben erwähnten Beispiele enthielten Bänder mit fixen Größen. Wie soll man jedoch eine Tabelle darstellen, in der die Bänder gedehnt werden können? Hier ein Beispiel dazu. Fügen wir ein neues Feld in unseren Report ein und zwar den langen Text aus Bio.Notes. Wie wir bereits wissen, muss man die Eigenschaft "Dehnen" bei dem Objekt und dem Band aktivieren. In diesem Fall wird die Höhe des Bandes abhängig sein von der Menge des Textes im Objekt "Text". Wir erhalten folgenden Report:

Es ist nicht genau das was wir wollten. Besser wäre es, wenn die Rahmenlinien der benachbarten Objekte sich ebenfalls strecken würden. FastReport kann auch dieses Problem lösen. Um solche Reporteerstellen zu können, muss bei den Objekten, die gedehnt werden sollen, die Eigenschaft "Auf Maximalhöhe dehnen" (oder StretchMode = smMaxHeight im Objektinspektor) aktiviert werden. Dabei berechnet der Kern von FastReport die Maximalhöhe des Bandes und zieht dann die Objekte, mit der aktivierten Eigenschaft, bis zum unteren Rand des Bandes. Da auch der Rahmen des Objektes gezogen wird, sieht der Report danach wie folgt aus:


Etikettendruck

Im Gegensatz zu Tabellenreporten, liegen die Daten im Reporten des Typs "Etiketten" untereinander. Betrachten wir ein Beispiel solch eines Reports. Dieser enthält die Daten der Fische (s.h. Beispiel oben) in Form von Etiketten. Der Report hat folgende Struktur:

Wenn wir den Report starten, erhalten wir folgendes:

Wie wir sehen, gibt es auf der rechten Seite noch eine Menge ungenutzten Platzes. Um das Blatt komplett zu füllen, kann man bei den Seiteneinstellungen die Spaltenanzahl angeben, die die Daten anzeigen sollen. Hierfür machen Sie einen Doppelklick auf eine leere Stelle im Blatt oder öffnen Sie den Menüpunkt "Datei|Seiteneinstellungen..."

Hier geben Sie die Spaltenanzahl, die Breite und die Position jeder Spalte an. In unserem Fall reichen 2 Spalten aus, die restlichen Einstellungen wird FastReport automatisch einstellen. Die Begrenzungen der Spalten werden durch eine dünne, vertikale Linie angezeigt:

Das Erstellen des Reports wird auf folgende Weise durchgeführt. FastReport wird das Band "Masterdata" solange ausführen, solange es freien Platz auf der Seite gibt. Dann wird nicht wie sonst eine neue Seite erstellt, sondern eine neue Spalte auf dieser Seite und das Band wird dort oben fortgeführt. Jetzt werden alle Objekte an die Spaltebreite angepasst. Dies geschieht solange, bis die angegeben Anzahl der Spalten erreicht ist, dann wird eine neue Seite erstellt und FastReport beginnt wieder mit der Anzeige der Daten ab der ersten Spalte.

Unser Report mit den zwei Spalten sieht dann so aus:

Es gibt eine weitere Möglichkeit die Spaltenanzahl anzugeben, dies ist die Eigenschaft Columns bei alle Datenbändern. Hier kann man die Spaltenanzahl des einzelnen Bandes eingeben und nicht für die ganze Seite, wie im folgenden Beispiel. Die Daten hier werden nicht "von oben nach unten und dann von links nach rechts" angezeigt, sondern von "von links nach rechts und dann von oben nach unten"

In unserem Beispiel deaktivieren wir die Spalten der Seite (die Anzahl auf 1) und stellen 2 bei der Eigenschaft Columns des Bandes ein. FastReport zeigt mit einer gestrichelten Linie die Spaltengrenzen an. Durch ändern der Eigenschaft ColumnWidth (Breite der Spalte) erhalten wir die benötigten Maße:

Ein auf diese Weise erstellter Bericht unterscheidet sich von dem vorherigen dadurch, dass die Daten "von links nach rechts und dann erst von oben nach unten" angezeigt werden.


Child-Bänder

Betrachten wir den Fall, dass eine Zeile im Report des Types "Etikette" eine variable Größe besitzt. Um diese Situation in unserem Beispiel zu simulieren, verkleinern wir die Größe des Objektes Bio."Common Name" auf 2,5 cm und aktivieren wir die Option "Dehnen". Ebenfalls aktivieren wir diese Option bei dem Band "MasterData". Um das Prinzip des Dehnens besser darstellen zu können, aktivieren wir alle Rahmenlinien. Wir erhalten folgenden Report:

Wir sehen, dass im ersten Fall das Objekt einen langen Text enthält und deshalb auf zwei Zeilen verteilt wurde. Das darunter liegende Objekt, welches an das Feld Bio."Length (cm)" gebunden ist, wurde nach unten verlagert. Das geschah, weil alle Objekte standardmäßig die Eigenschaft "Verschieben" (ShiftMode = smAlways im Objektdesigner) aktiviert haben. Solche Objekte verschieben sich nach unten, wenn über ihnen ein dehnbares Objekt ist (Objekt "Text" mit der aktivierten Eigenschaft "Dehnen"). Die Höhe, um welche das Objekt verschoben wird, ist abhängig von der Stärke der Dehnung des oberen Objektes.

In unserem Fall ist dies jedoch nicht annehmbar, da das Objekt Bio."Length (cm)" ebenfalls verschoben werden muss. In FastReport gibt es ein spezielles Band hierfür, das "Child-Band". Dieses wird an das Hauptband angefügt und immer nach diesem ausgeführt. Machen wir das in unserem Report:

Um das Band "MasterData" mit dem "Child-Band" zu verbinden, stellen wir im Objektinspektor die Eigenschaft Child = Child1 ein. Jetzt wird beim Drucken immer ein "Child-Band" an das Hauptband angefügt:

Wie man jetzt sieht, wird die Überschrift dort angezeigt, wo sie hingehört. Um den Übertrag des "Child-Bandes" auf die folgende Seite zu verhindern (sprich die Trennung vom Hauptband), stellen Sie die Eigenschaft "Child zusammenhalten" (KeepChild im Objektinspektor) ein.


Verschieben von Objekten

Wir haben schon gesehen wie die Eigenschaft "Verschieben" funktioniert. Betrachten wir einen anderen Modus des Verschiebens: "Verschieben wenn Überlappung" (entspricht ShiftMode = smWhenOverlapped im Objektinspektor). Dieser führt dazu, dass das Objekt nur verschoben wird, wenn das obere Objekt beim Dehnen das darunter liegende überlappt. In der unteren Grafik werden drei Beispiele vorgestellt. Wie man sieht, wird das untere Objekt (mit aktivierter Option "Verschieben wenn Überlappung") nur im letzten Fall verschoben, wenn das obere Objekt viel Text enthält und dieser das untere Objekt überlagert.

Wenn man jedoch die Option "Verschieben" aktiviert, wird das untere Objekt auf jeden Fall verschoben:

In manchen Fällen erlaubt es eine komplizierte Logik der Darstellung der Objekte, insbesondere wenn ein Objekt über mehreren anderen liegt. Im nächsten Beispiel enthalten die beiden oberen Objekte einen dehnbaren Text und das untere Objekt hat die Eigenschaft "Verschieben wenn Überlappung" aktiviert. Unabhängig von der Menge des Textes in den oberen Objekten, wird das untere Objekt immer direkt an das Objekt angehängt, das den meisten Text enthält:

Wird "Verschieben" in dem unteren Objekt aktiviert, so wird dieses doppelt verschoben, da es sich unter zwei Objekten befindet und eine unnötige Lücke entsteht.


Report mit zwei Datenebenen (master-detail)

Bisher haben wir nur Reporte betrachtet, die nur ein Band "MasterData" (Daten 1. Ebene) enthielten. Dies erlaubte die Daten einer DB-Tabelle darzustellen. FastReport erlaubt jedoch die Darstellung von bis zu 6. Ebenen der Daten (es geht auch mehr indem man das Objekt "Unterreport", dazu jedoch später mehr). In der Regel sind Reporte auf 1-3 Ebenen beschränkt, selten mehr.

Betrachten wir die Erstellung eines 2. Ebenen Reports. Dieser soll die Daten der Tabellen Kunden und Aufträge enthalten. Die erste Tabelle enthält die Kundenliste, die zweite die Bestellungen der Kunden. Die Tabellen sehen wie folgt aus:

Kunden:

Kund.-Nr.Company

1221Kauai Dive Shoppe

1231Unisco

1351Sight Diver

Bestellungen:

Bestellnr.Kund.-Nr.Verkaufsdatum

1003135112.04.1988

1023122101.07.1988

1052135106.01.1989

1055135104.02.1989

1060123128.02.1989

1123122124.08.1993

Wie man sieht, enthält die zweite Tabelle die gesamte Liste aller Bestellungen, von allen Unternehmen. Um eine Liste mit Bestellungen zu erhalten, die nur ein Unternehmen gemacht hat, muss man aus der ersten Tabelle die gewünschte Kund.-Nr. auswählen. Der Report sieht nun wie folgt aus:

1221Kauai Dive Shoppe

1023 01.07.1988

1123 24.08.1993

1231Unisco

1060 28.02.1989

1351Sight Diver

1003 12.04.1988

1052 06.01.1989

1055 04.02.1989

Im Designer des Reports verknüpfen wir die Datenquellen im Fenster "Report|Daten..." und legen zwei Bänder auf die Seite "MasteData" ("Daten 1. Ebenen") und "DetailData" "Daten 2. Ebene":

Beachten Sie das Band "MasterData" dieser muss oben liegen! Wenn man ihn unter das Band "Daten 2. Ebene" setzt, wird FastReport dies beim Start des Reports melden.

Wenn wir den Report nun starten, sehen wir das die Bestellliste für jeden Kunden gleich ist und alle Einträge der Liste Bestellungen enthalten. Dies geschieht, weil wir den Listenfilter in der Tabelle Bestellungen eingestellt haben. Bei der Komponente Table2 stellen wir die Eigenschaft MasterSource = DataSource1 ein, dadurch stellen wir die Verbindung "master-detail" her. Jetzt muss man die Bedingung des Filters festlegen. Hierfür rufen Sie den Editor der Eigenschaft MasterFields der Komponente Table2 auf:

Wir müssen die beiden Felder CustNo der beiden Quellen verknüpfen. Wählen Sie die beiden(?) in der Liste oben aus und klicken Sie auf "Add". Die verknüpften Felder erscheinen im unteren Fenster. Sie können das Fenster jetzt schließen indem Sie auf OK klicken.

Beim Start des Reports macht FastReport folgendes. Nach Auswahl eines Datensatzes aus der Master-Tabelle (Kunde), filtert es die Detail-Tabelle (Orders). Danach werden nur Datensätze angezeigt, die die Bedingung Orders.CustNo = Customer.CustNo erfüllen (sprich für jeden Kunden werden nur seine Bestellungen angezeigt):

Auf diese Weise kann man Reporte mit bis zu 6. Datenebenen anlegen.


Kopf- und Fußzeilen der Datenbänder

Datenbänder können eine Kopf- und Fußzeile besitzen. Die Kopfzeile wird vor dem Datenband ausgeführt, die Fußzeile nach dem letzten Datenband. Hier ein Beispiel der Funktionsweise bei einem einfachen Report:

Betrachten wir die Anordnung der Kopf- und Fußzeilen bei einem "Master-Detail" Report:

Wie man sieht, wird die Kopfzeile vor jedem Datenband ausgeführt. Für das Band "Daten 1. Ebene" wird das einmal am Anfang des Reports gemacht. Für das Band "Daten 2. Ebene" jedesmal beim Erstellen der fogenden Bandgruppe, die mit dem Band "Daten 1. Ebene" verknüpft ist. Die Fußzeile wird nach dem letzten Band ausgeführt.

Durch Nutzung der Eigenschaft FooterAfterEach (im Kontextmenü "Fuß nach jeder Zeile") kann man die Fußzeile nach jeder Datenzeile ausführen. Dies ist nützlich bei Reporten des Typs "Master-Detail". Das folgende Beispiel mit der aktivierten Eigenschaft FooterAfterEach beim Band "Daten 1. Ebene" wird wie folgt aussehen:


Mehrseitige Reporte

FastReport ist in der Lage Reporte mit mehreren Seiten zu erstellen. Jede Seite kann eigene Maße, Ausrichtung, verschiedene Objekte und Bänder enthalten. Bei der Berichterstellung werden erst alle Bänder der ersten Seite ausgeführt, dann die der zweiten Seite usw.

Wenn wir einen neuen Report im Designer erstellen, enthält er standardmäßig eine Seite. Sie können eine neue Seite durch klicken auf den Button [image] auf der Symbolleiste "Standard" öffnen oder indem Sie auf "Datei|Neue Seite" gehen. Jetzt zieht man im Designer einen neuen Tab:

Das Auswählen ist einfach, man klickt auf den Tab der benötigten Seite. Man kann auch die Tabs per "Drag & Drop" verschieben und so die Anordnung der Seiten ändern. Will man eine Seite entfernen geht das über den Button [image] auf der Symbolleiste "Standard" oder über "Bearbeiten|Seite löschen". Ebenfalls kann man das Kontextmenü des Tabs, durch den Klick der rechten Maustaste, aufrufen:

Die Seitenanzahl im Report ist unbegrenzt. In der Regel werden zusätzliche Seiten für die Titelseite verwendet oder in komplexeren Reporten, die Daten vieler Quellen enthalten.

Betrachten wir ein einfaches Beispiel und erstellen eine Titelseite. Wir wählen einen Report mit nur einer Datenebene, wie wir sie am Anfang gemacht haben. Wir fügen eine neue Seite hinzu, die jetzt als zweite angezeigt wird. Um sie vor die erste Seite zu setzen, verschieben wir die zweite Seite per "Drag & Drop" vor die erste. Die Anordnung hat sich nun verändert. Jtzt gehen wir auf die erste Seite und fügen in die Mitte einen neues Objekt "Text" der "Unser Report" enthält. Der Report mit der Titelseite ist nun fertig:

Man muss eine Besonderheit der Mehrseitigen Reporte erwähnen. Aktiviert man auf der zweiten Seite die Option "Auf vorige Seite drucken" (die Eigenschaft PrintToPreviousPage im Objektinspektor), so werden die Objekte der zweiten Seite nicht auf eine neue Seite übertragen, sondern auf die vorhergehende.


Reporte ohne Nutzung von Datenbanken

Manchmal ist es notwendig statische Daten mehrmals auszuführen. Betrachten wir als Beispiel den Druck von Visitenkarten oder Postkarten. Dazu haben die Bänder die Eigenschaft RowCount und die Seite PageCount. Durch diese Eigenschaften kann man die Anzahl der Bänder/Seiten festlegen, die nicht mit Daten verknüpft sind.

Anhand der Grafiken kann man dies gut erkennen. Die Eigenschaft Rowcount des Bandes ist auf 14 gesetzt, dies führt dazu,dass das Band 14 mal ausgeführt wird.


Report mit Gruppen

Im vorherigen Beispiel haben wir einen zwei-ebenen Report erstellt, mit Daten aus zwei Tabellen. FastReport erlaubt die Erstellung eines analogen Reports auf Basis nur eines Datensatzes.

Hierfür ist es notwendig eine Anfrage mit SQL zu starten. Diese gibt uns die Daten beider Tabellen wieder, sortiert nach bestimmten Bedingungen. In unserem Fall die Übereinstimmungen der Felder CustNo in beiden Tabellen. Die SQL Abfrage kann folgenderweise aussehen:

select * from customer, orders

where orders.CustNo = customer.CustNo

orderby customer.CustNo

Die Zeile "order by" benötigt man zur Sortierung anhand von CustNo. Die Anfrage zeigt die Daten so an:

CustNoCompany…OrderNoSaleDate

1221 Kauai Dive Shoppe102301.07.1988

1221 Kauai Dive Shoppe112324.08.1993

1231Unisco106028.02.1989

1351Sight Diver100312.04.1988

1351Sight Diver105206.01.1989

1351Sight Diver105504.02.1989

Wie kann man mithilfe dieser Daten einen Mehrebenen Report erstellen? In FastReport gibt es dafür ein spezielles Band "Gruppenkopf". Beim Band wird eine Bedingung eingegeben (die Bedeutung des DB-Feldes oder ein Ausdruck) bei dessen Änderung das Band ausgeführt wird. Hier ein Beispiel.

Query1:

DatabaseName = 'DBDEMOS'

SQL =

select * from customer, orders

where orders.CustNo = customer.CustNo

order by customer.CustNo

Jetzt gehen wir in den Designer und verknüpfen unsere Datenquelle mit dem Report. Fügen wir nun zwei neue Bänder in den Report ein: "Gruppenkopf" und "Daten 1. Ebene". Im Editor des Bandes "Gruppenkopf" geben wir folgende Bedingung ein: ins Datenfeld Group.CustNo:

screenshot - 18.05.2009 , 16_06_50

Das Datenband veknüpfen wir mit der Datenquelle Group und ordnen die Objekte auf folgende weise an (beachten Sie das der "Gruppenkopf" über den Datenband sein muss):

Beim Starten erhalten wir folgenden Report:

Wie man sieht wird das Band "Gruppenkopf" nur in dem Fall ausgeführt, wenn das Feld, mit dem es verknüpft ist, den Wert ändert. Sonst wird das mit der Gruppe verknüpfte Datenband ausgeführt. Wenn man diesen Report mit dem Report "Master-Detail", den wir weiter oben erstellt haben, vergleicht, so sieht man, dass die Bestellnummern nicht aufsteigend sortiert sind. Dies kann man ändern, indem man die Anfrage in SQL ändert:

select * from customer, orders

where orders.CustNo = customer.CustNo

orderby customer.CustNo, orders.OrderNo

Auf die gleiche Weise kann man Reporte mit verschachtelten Gruppen konstruieren, wobei deren Anzahl nicht beschränkt ist. Auf diese Weise haben Reporte mit Gruppen gewisse Vorteile gegenüber den Reporten "Master-Detail":

- man benötigt nur eine Tabelle (Anfrage) für den Report;

- die Anzahl der Ebenen bei den Gruppierungen der Daten ist unbegrenzt;

- zusätzliche Möglichkeiten der Sortierung;

- optimalere Nutzung der Ressourcen der Datenbank (die Anfrage zeigt nur die Daten an, die man benötigt, ohne diese zu filtern).

Das einzig Negative ist, dass die Anfragen in SQL sein müssen. Wobei Grundkenntnisse in SQL in der Regel jeder besitzt, der auch mit Datenbanken arbeitet.


Weitere Besonderheiten der Gruppen

Sehen wir uns mal an, wie Gruppen auf die folgende Seite übertragen werden:

Beim blättern eines solchen Reports, ist es nicht immer klar, zu welchem Kunden die Bestellungen oben auf der zweiten Seite gehören. FastReport erlaubt die Anzeige des "Gruppenkopfs" (dieser enthält die Informationen des Kunden) auch auf dieser Seite. Dazu muss beim Band "Gruppenkopf" die Eigenschaft "Auf neuer Seite wiederholen" (ReprintOnNewPage im Objektinspektor) aktiviert sein. Der Report sieht nun so aus:

Es gibt eine weitere Möglichkeit das Trennen der Gruppe zu verhindern. Aktivieren Sie dafür die Eigenschaft des Gruppenkopfs "Zusammenhalten" (KeepTogether im Objektinspektor). Falls die Gruppe nun nicht ganz auf die Seite passt, so wird sie auf die nächste Seite übertragen. Siehe Beispiel:

Manche Seiten haben zwar dadurch noch freien Platz, so wird jedoch die Gruppe zusammengehalten.

Jetzt zu der Eigenschaft "Neue Seite" (StartNewPage). Diese erlaubt es dem Gruppenkopf, jede Gruppe auf einer separaten Seite darzustellen.. Dies verbraucht zwar viel Platz, ist aber manchmal notwendig.


Seitennummer zurücksetzen

Die Gruppe hat die Eigenschaft "Seitennummern zurücksetzen" (ResetPageNumbers im Kontextmenü), diese setzt die Seitenzahl nach dem Drucken zurück. Wozu braucht man das?

Gehen wir davon aus, dass wir einen Report erstellt haben der Gruppen enthält. Der Gruppenkopf enthält den Kundennamen, die Gruppe und die Bestellungen des Kunden. Der gedruckte Report soll nun dem Kunden übergeben werden, jeder erhält seine Seiten. Nun bekommt einer z. B. die Seiten 50, 51, 52 und möchte wissen, wo die restlichen Seiten geblieben sind? Um solche Situationen zu vermeiden, müssen die Seiten jedes Kunden einzeln nummeriert werden, d.h. innerhalb eines Reports wird jede Gruppe durchnummeriert.

Beachten Sie beim Einstellen der Eigenschaft ResetPageNumbers, dass man ebenfalls die Eigenschaft StartNewPage ("Neue Seite") aktivieren muss. Dadurch wird jede Gruppe auf einer separaten Seite gedruckt. Die Seitenzahl kann man mit den Variablen [Page], [TotalPages] des Objektes "Text" darstellen.


Drill-Down Gruppen

Der Gruppenkopf besitzt die Eigenschaft Drill-Down. Das Aktivieren dieser Eigenschaft macht die Gruppe interaktiv, d.h. dass die Gruppe im Vorschaufenster auf das Klicken mit der Maus reagiert. Dadurch kann man durch den Klick auf den Gruppenkopf die Gruppe öffnen (zeigt alle Einträge an), schließen und damit nur den Kopf anzeigen oder den Fuß anzeigen (wird über die Eigenschaft ShowFooterIfDrillDown eingestellt).

So sieht eine Gruppe mit geöffnetem Kopf aus:

Sie können angeben ob die Gruppen beim Starten des Reports geöffnet oder geschlossen sind. Standardmäßig sind sie geschlossen und werden über die Eigenschaft ExpandDrillDown gesteuert. Falls die Gruppen geöffnet sein sollen, so stellen Sie die Eigenschaft auf True. Genauso können alle Gruppen geöffnet und geschlossen werden. Man muss dazu die Punkte "Alle öffnen" oder "Alle schließen" aus dem Kontextmenü der Vorschau auswählen.


Zeilennummerierung

Betrachten wir nun in unserem Beispiel wie man die einzelnen Zeilen durchnummeriert. Wir fügen das Objekt "Text" ein mit der Systemvariablen [Line] auf beide Bänder (einfacher ist es, dies durch die "Drag & Drop" Methode aus dem Tab "Variablen" des Fenster "Datenbaum" zumachen)

Beim Starten sehen wir, dass beide Datenebenen durchnummeriert sind:

In manchen Reporten benötigen wir eine durchgehende Nummerierung. In unserem Beispiel nutzen wir deshalb die Variable Line#, anstatt Line auf dem Band und erhalten folgendes Ergebnis:


Aggregatfunktionen

In den meisten Fällen will man bei Gruppenreporten am Ende irgendeine zusammenfassende Information sehen z.B. die Summe, die Anzahl der Elemente usw. FastReport enthält für diesen Fall so genannte Aggregatfunktionen. Mit deren Hilfe kann man die Funktion zur Diagnose der Daten wählen. Die unten aufgeführte Liste enthält die enthaltenen Aggregatfunktionen:

Funktion

Beschreibung

SUM

Berechnet die Summe des Ausdrucks für die Datenmenge

MIN

Berechnet das Minimum des Ausdrucks für die Datenmenge

MAX

Berechnet das Maximum des Ausdrucks für die Datenmenge

AVG

Berechnet den Durchschnitt des Ausdrucks für die Datenmenge

COUNT

Zählt die Anzahl der Datensätze

Die Syntax aller Aggregatfunktionen (außer COUNT) sieht wie folgt aus (am Beispiel der Funktion SUM):

SUM(expression, band, flags)

SUM(expression, band)

SUM(expression)

Die Zuordnung der Parameter ist folgende:

expression Ausdruck, dessen Bedeutung bearbeitet werden muss

band der Name des Datenbandes, mit dem gearbeitet werden soll

flags ein Feld, welches folgende Bedeutungen haben kann und die Kombinationen dieser:

1 beachte unsichtbare Bänder

2 kumuliert den Wert

Wie man sieht, ist expression der einzige obligatorische Parameter, die restlichen sind optional. Es empfiehlt sich trotzdem das Parameter band zu nutzen um Fehler zu vermeiden.

Die Funktion COUNT hat folgende Syntax:

COUNT(band, flags)

COUNT(band)

Die Zuordnung der Parameter ist analog:

Es existiert eine Regel, die für alle Aggregatfunktionen Gültigkeit hat: die Funktion wird nur für das Datenband berechnet und wird nur in dem Fuß angezeigt (hierzu zählen: Fuß, Seitenfuß, Gruppenfuß, Spaltenfuß)

Wie funktionieren Aggregatfunktionen? Sehen wir uns ein Beispiel unseres Reports mit Gruppen an. Fügen wir neue Elemente ein:

Das Feld:" ItemsTotal" auf dem Datenband wird die Summe der Bestellung anzeigen. In den Gruppenfuß setzen wir das Objekt "Text" ein, dieses soll die Aggregatfunktion SUM enthalten. Es soll die Gesamtsumme aller Bestellungen des Kunden enthalten. Wenn wir den Report nun starten und mit einem Taschenrechner die Werte überprüfen, so werden wir sehen, das alles richtig funktioniert:

Also wie ist nun das Arbeitsprinzip der Aggregatfunktionen? Vor der Reporterstellung scannt FastReport den Inhalt der Objekte "Text" nach Aggregatfunktionen. Gefundene Funktionen werden den entsprechenden Datenbändern zugeordnet (hier im Beispiel wird die Funktion SUM mit dem Band MasterData1 verknüpft). Bei der Erstellung des Reports werden nun, sobald das Datenband auf dem Bildschirm erscheint, die Aggregatfunktionen ausgewertet. Hier wird Summe des Feldes Group."ItemsTotal" gebildet. Nachdem der Gruppenfuß, welcher die Summe anzeigt, ausgeführt worden ist, wird nun die Funktion für die nächste Gruppe neu gestartet usw.

Hier kann man die Bedeutung des Parameters flags in Aggregatfunktionen aufzeigen. In manchen Reporten ist ein Teil der Bänder (oder auch alle) verborgen. Wir wollen jedoch, dass bei der Auswertung der Funktion alle Datenbänder berücksichtigt werden. In unserem Beispiel können wir die Eigenschaft Visible bei dem Datenband deaktivieren. Dieser wird nun nicht auf dem Bildschirm angezeigt. Soll die Summe auch die Werte der verborgenen Bänder enthalten, so müssen wir einen dritten Parameter in den Aufruf der Funktion einsetzen.

[SUM(<Group."ItemsTotal">,MasterData1,1)]

Wir erhalten folgenden Report:

Bei dem Parameter flags = 2 wird der kumulierte Wert nicht zurückgesetzt. Es wird eine Gesamtsumme gebildet. Modifizieren wir den Aufruf der Funktion:

[SUM(<Group."ItemsTotal">,MasterData1,3)]

Die 3 ist eine Kombination von 1 und 2, d.h. es werden auch die verborgenen Bänder bearbeitet und es wird eine Gesamtsumme gebildet: Im Endeffekt:


Ergebnisse der Seite und des Reportes

Oft muss man im Report das Ergebnis der Seite oder des gesamten Reports darstellen. Dies wird ebenfalls mithilfe der Aggregatfunktionen gemacht. Sehen wir uns folgendes Beispiel an.

Wir haben das Band "Reportzusammenfassung" und ein Objekt "Text" eingefügt. Hier wird nun die Summe in den Bändern "Reportzusammenfassung" und "Seitenfuß" dargestellt.


Einfügen der Aggregatfunktionen

Bis jetzt haben wir die Aggregatfunktionen per Hand in das Objekt "Text" eingefügt. Betrachten wir nun ein paar weitere, bequemere Möglichkeiten eine Aggregatfunktion einzufügen.

Als Erstes kann man, um eine Aggregatfunktion auszuführen, das Objekt "Systemtext" verwenden. Eigentlich ist es dasselbe Objekt "Text", hat aber einen speziellen Editor um das Einfügen der Systemvariablen und Aggregatfunktionen einfacher zu machen.

screenshot - 18.05.2009 , 16_16_05

Im Editor muss nun der Typ der Funktion, das Datenband, das Datenfeld und der Ausdruck angegeben werden. Ebenfalls kann man "Unsichtbare Bänder zählen" und "Kumulative Summe" markieren.

Die zweite Möglichkeit ist die Nutzung des Objektes "Text" und der Button in dessen Editor. Es wird ein zusätzliches Fenster geöffnet (ist dem Fenster "Systemtext" ähnlich). Klickt man nun auf OK, so wird in den Text die Funktion eingefügt.


Values formatting

Beachten wir ein Besonderheit der Aggregatfunktionen. Diese geben uns die Zahlen nicht formatiert wieder.

Die wird so gemacht, weil die Datenfelder in der Regel, die Informationen des Objektes "Text" wiedergeben ohne diese vorher zu formatieren. Um das Resultat der Funktion SUM besser darzustellen, besitzt FastReport folgende Möglichkeiten der Formatierung.

Markieren wir das Objekt mit der Summe und rufen dessen Kontextmenü auf. Den Editor der Formatierung erreicht man über das Menü "Anzeigeformat..." oder mit der Eigenschaft DisplayFormat im Objektinspektor.

screenshot - 18.05.2009 , 16_18_05

Wie man sieht, befindet sich links die Kategorie der Formatierung und rechts die Liste der Formate in dieser Kategorie. Wählen wir die Kategorie "Zahl" und das Format "$1,234.50". Unten wird nun der Formatstring und der Dezimaltrenner dargestellt. Der Formatstring ist dem Argument der Delphi-Funktion Format ähnlich. FastReport formatiert mit Zahlen mit dessen Hilfe. Sie können den Formatstring und auch den Dezimaltrenner ändern. Wird der Dezimaltrenner nicht eingefügt, so wählt das Programm den üblichen verwendeten Trenner.

Wir klicken auf OK, der Report wird erstellt und wir sehen, dass die Summe nun folgendes Aussehnen angenommen hat:


Individuelle Formatierung

Das obere Beispiel der Formatierung wird für alle Ausdrücke verwendet, die ein Objekt enthält. Alles funktioniert einwandfrei, weil es nur einen Ausdruck im Objekt gibt. Was passiert jedoch wenn man zwei hat und dann auch noch verschiedener Typen?

Betrachten wir solch einen Fall. Es sollen die Summe und die Anzahl der Bestellungen angezeigt werden. Wir fügen in das Objekt folgenden Text ein:

Summe: [SUM(<Group."ItemsTotal">,MasterData1)]

Anzahl: [COUNT(MasterData1)]

Beim Start des Reports, sehen wir das beide Ausdrücke im Format Währung (oben eingegeben) angezeigt werden, was jedoch nicht richtig ist:

Um das ganze korrekt anzeigen zu können, muss jeder Ausdruck individuell formatiert werden. Hierfür gibt es so genannte Format-Tags. Diese werden vor der abschließenden eckigen Klammer eingefügt. In unserem Beispiel deaktivieren wir die Formatierung des Objektes (im Format-Editor wählen wir die Kategorie "Text (ohne Format)". Jetzt ändern wir das Format der ersten Variablen, die zweite ist dann nicht formatiert und wird, wie gewünscht, als ganze Zahl angezeigt. Den Text des Objekts ändern wir auf folgende Weise:

Summe: [SUM(<Group."ItemsTotal">,MasterData1) #n%2,2m]

Anzahl: [COUNT(MasterData1)]

vergewissern wir uns, dass der Report nun richtig ausgeführt wird:

Jetzt zur Nutzung der Tags. Die Syntax ist die folgende:

[expression #tag]

Beachten Sie, dass die Leerstelle zwischen dem Ausdruck und dem Zeichen # ist zwingend! Der Tag selber kann folgendes Aussehen haben:

#nFormatZeile Format Zahl

#dFormatZeile Format Datum/Zeit

#bFalse,True Format Wahrheitswert

Die FormatZeile ist in jedem Fall ein Argument für die Funktion, mit deren Hilfe man die Formatierung ausführt. Für das Format Zahl ist es die Delphi-Funktion Format und für das Format Datum/Zeit die Funktion FormatDateTime. Die möglichen Bedeutungen der Formatzeilen kann man in Hilfe von Delphi erfahren. Hier einige Bedeutungen, die in FastReport verwendet werden:

für das Format Zahl

%g eine Zahl mit der minimalen Anzahl der Zeichen nach dem Komma

%2.2f eine Zahl mit einer fixen Anzahl der Zeichen nach dem Komma

%2.2n eine Zahl mit Trennzeichen

%2.2m Format Währung, abhängig von lokalen Einstellungen im Kontrollpanell.

für das Format Datum/Zeit

dd.mm.yyyy Datum 23.12.2003

dd mmm yyyy Datum 23 nov 2003

dd mmmm yyyy Datum 23 November 2003

hh:mm Datum 23:12

hh:mm:ss Datum 23:12:00

dd mmmm yyyy, hh:mm Zeit und Datum 23 Íîÿáðü 2003, 23:12

Beim Format Zahl kann man anstatt des Punktes ein Komma oder ein Bindestrich verwenden. Dieses Symbol wird dann als Trennzeichen verwendet. Andere Ternnzeichen sind nicht zugelassen.

Die Formatierung des Typs #b stellt zwei Bedeutungen dar, die durch ein Komma getrennt sind. Die erste Bedeutung entspricht False, die zweite True.

Um nicht alle Tags und deren Bedeutungen im Kopf behalten zu müssen, gibt es im Editor "Text" eine bequeme Möglichkeit um die Formatierung durchzuführen. Durch den Klick auf den Button [image] wird der Editor der Formatierung aufgerufen. Diesen haben wir uns schon angesehen. Nach der Formatwahl wird dieser in den Text eingefügt. Steht der Cursor dabei vor oder hinter der eckigen Klammer so wird das Format korrekt eingefügt.


Hervorheben

Diese Besonderheit des Objektes "Text" erlaubt es ein Objekt farblich hervorzuheben und dies an eine bestimmte Bedingung zu knüpfen. Die Bedingung kann ein beliebiger Ausdruck sein. Betrachten wir die Hervorhebung am Beispiel. Es soll die Summe der Bestellungen grün hervorgehoben werden, wenn diese über 5000 liegt. Wir wählen das Feld Group."ItemsTotal" und klicken auf den Button "Hervorheben" [image] auf der Symbolleiste des Designers. Im Editor der Hervorhebung geben wir die Bedingung ein, bei welcher das Objekt hervorgehoben werden soll und geben die Parameter ein (Schrift, Fon).

screenshot - 18.05.2009 , 16_22_15

Wir erhalten folgendes:

Beachten Sie die angegebene Bedingung: Value > 5000. Value ist die Bedeutung des DB-Feldes, mit welchem das Objekt verknüpft ist. Man könnte auch <Group."ItemsTotal"> > 5000 eingeben, es würde zum selben Ergebnis führen. Im Endeffekt kann man alle erlaubten Ausdrücke des FastReport verwenden.


Hervorhebung der Zeilen nacheinander

Mithilfe der Hervorhebung kann man relativ einfach dem Report ein moderneres Aussehen verpassen, indem man z.B. jede zweite Zeile hervorhebt. Machen wir das am Beispiel des Reports "Liste", welchen wir in dem hervorgehendem Kapitel erstellt haben.

Am Anfang fügen wir die Bänder "ReportTitel" und "Masterdata" in das Blatt ein. Auf das Datenband legen wir ein Objekt "Text" und dehnen es auf die komplette Breite des Bandes:

Dieses Objekt hat die Rolle einer Unterlage und wird die Farbe ändern, abhängig von der Nummer der Datenzeile. Heben wir das Objekt hervor und stellen im Editor folgende Bedingung ein:

<Line> mod 2 = 1

Achtung: falls Sie die Scriptsprache C++Script benutzen (s.h. Kapitel "Script"), müssen Sie auch die Bedingung in C++Script verfassen:

<Line> % 2 == 1

Wir wählen die Farbe Grau, diese jedoch heller. Jetzt können auch die anderen Objekte auf das Datenband gelegt werden:

Da die eingefügten Objekte auf der Unterlage liegen, kann man die nicht so einfach ändern. Wenn wir den Report nun starten sehen wir folgendes:


Unterreporte

Manchmal muss man im eigentlichen Report zusätzliche Daten darstellen, welche an sich schon Reporte mit einer komplexen Struktur darstellen. Man kann solch einen Report mithilfe des Satzes der Bänder in FastReport erstellen, dies klappt jedoch nicht immer. In solch einem Fall kann man das Objekt "Unterreport" [image] nutzen.

Fügen wir dieses Objekt ein, so wird automatisch eine zusätzliche Seite eingefügt, die mit dem Objekt verknüpft ist. Der Unterreport ist dem mehrseitigen Report sehr ähnlich. Der einzige Unterschied ist, das der Unterreport an der angewiesenen Stelle im Hauptreport ausgeführt wird und nicht danach. Bei der Bildung des Reports, wird, sobald man auf das Objekt "Unterreport" trifft, der Report von der verknüpften Seite ausgeführt. Danach geht die Bildung des Hauptreports weiter.

Auf die Seite des Unterreports, kann man ebenfalls das Objekt "Unterreport" legen. Dadurch erhöht man die Ebenen der Verschachtelungen. Ein Beispiel dafür kann man in dem Demonstrationsprogramm unter dem Report "Subreports" finden.

Man muss bemerken, dass die Fähigkeit von FastReport Unterreport zu erstellen und damit die Ebenen der Verschachtelung zu erhöhen, unbegrenzt ist. Zur Erinnerung, ohne die Nutzung des Objekts "Unterreport", sind die Ebenen auf sechs begrenzt.


Die Ausführung der Unterreporte nebeneinander

Sie haben die Möglichkeit zwei oder mehr Objekte "Unterreport" nebeneinander auf dem selben Band anzulegen:

Dadurch kann man Reporte erstellen, die nicht auf eine andere Weise erstellt werden können. Wenn z.B. die Unterreporte die Listen verschiedener Längen enthalten:

Wie man sieht, bildet FastReport den Hauptreport weiter ann der Stelle, an der die längste Liste endet.


Beschränkungen bei der Nutzung der Unterreporte

Da der Unterreport auf der Seite des Hauptreports liegt, kann er folgende Bänder nicht enthalten. "ReportTitle/ReportFooter", "Seitenkopf/Seitenfuß/Seitenhintergrund", "Spaltenkopf/-fuß". Genau genommen kann man diese Bänder auf die Seite des Unterreports legen, diese werden jedoch nicht bearbeitet (auf die Seite des Hauptreports kann man weiterhin alles legen). Deshalb hat es auch keinen Sinn die Seiteneinstellungen des Unterreports zu ändern, bei der Erstellung des Reports werden die Seiteneinstellungen des Hauptreports verwendet.

Man kann keine Objekte unter das Objekt "Unterreport" legen:

Beim Darstellen des Unterreportes werden die darunter liegenden Objekte überlagert. Es würde z.B. wie folgt aussehen:

Um die Objekte unter dem Objekt "Unterreport" darzustellen, nutzen Sie das Child-Band:

Dies gilt auch, wenn man mehrere Unterreporte untereinander liegen sollen.


Option (PrintOnParent)

Das Objekt "Unterreport" hat eine sehr nützliche Eigenschaft und zwar PrintOnParent. Diese ist standardmäßig gleich False.

Normalerweise wird ein Unterreport in Form verschiedener Bänder auf den Hauptreport dargestellt. Das Band des Hauptreports welches das Objekt "Unterreport" enthält, hat jedoch keine Beziehung zu den Bändern des Unterreports. Wird die Option PrintOnParent aktiviert, so werden die Bänder des Unterreports, in dem Band welches das Objekt "Unterreport" enthält, eingefügt. Man kann solch ein Band dehnbar machen und es kann neben dem Unterreport ein, auf die gesamte Höhe des Bandes, gedehntes Objekt gelegen werden:


Script

Script ist ein, in einer Sprache des höheren Niveaus, geschriebenes Programm, das ein Teil eines Reports ist. Beim Start eines Reports wird ebenfalls auch Scripte gestartet. Scripte erlauben eine Bearbeitung der Daten, welche nicht mit den vorhandenen Möglichkeiten des Kerns von FastReport bearbeitet werden können. Zum Beispiel das Verbergen von Daten in Abhängigkeit von bestimmten Bedingungen. Scripte werden ebenfalls verwendet zur Steuerung von Dialogformen, die Komponenten des Reportes sind.

Scripte können in einer der Sprachen geschrieben werden, die die Scriptengine FastScript unterstützt. Bis zum heutigen Tag sind es folgende:

- PascalScript

- C++Script

- BasicScript

- JScript

Die Scriptengine FastScript besitzt folgende Eigenschaften:

- ein Standardsprachset: Variablen, Konstanten, Prozeduren, Funktionen (Verschachtelungen möglich), mit variablen/ständigen/standardmäßigen Parametern, alle Standardoperatoren (incl. case, try/finally/except, with), Typen (ganz, gebrochen, logisch, symbolisch, Zeilen, mehrdimensionale Reihen, Mehrzahl, Variante), Klassen (Methoden, Ereignisse, Eigenschaften, Indizes und Möglichkeiten der standardmäßigen Voreinstellung);

- die Erklärungen der Typen (records, classes) fehlen im Script, es gibt keine Aufzeichnungen (records), Anzeiger (pointers), Mengen (sets) (jedoch kann man den Operator 'IN' - "a in ['a'..'c','d']" verwenden), es gibt keinen Typ shortstring, Sprunganweisung (GOTO);

- Überprüfung der Typenvereinbarkeit;

- Zugang zu jedem Objekt des Reportes.

Sie können Scripte im FastReport Designer erstellen. Dieser beinhaltet einen Scripteditor mit dem Hervorheben der Syntax. Es gibt ebenfalls einen eingebetteten Debugger mit folgenden Funktionen: Step, Breakpoint, Run to cursor, Evaluate.


Erste Schritte

Die Tools um mit Scripten zu arbeiten befinden sich im Tab "Code" des Designers von FastReport. So sieht der Bildschirm aus beim Umschalten auf den Tab:

Die Zahlen bedeuten:

1 Tab "Code"

2 Fenster des Scripteditors;

3 Drop-Down-Liste der Scriptsprachen;

4 Toolbar des Debuggers:

- Script ausführen (F9);

95 - Gehe zur Cursorposition (Run to cursor);

- Einzelne Anweisung (Step into);

- Script beenden;

- Auswerten (Evaluate);

94 - Haltepunkt umschalten.

5 Fenster Watches zur Überwachung der Variablen;

6 Lesezeichen (bookmark) und Unterbrechungspunkte (breakpoint) werden in diesem Feld angezeigt, ebenso werden Zeilen, die den ausführenden Code enthalten, hervorgehoben:

Unten die im Scripteditor genutzten Tastaturbefehle.

Tasten

Bedeutung

Pfeiltasten

Bewegen den Cursor

PageUp, PageDown

Blättern vorherige/nächste Seite

Strg+PageUp

Geht zum Anfang des Textes

Strg+PageDown

Geht zum Ende des Textes

Pos 1

Geht zum Anfang der Zeile

Ende

Geht zum Ende der Zeile

Enter

Geht zur nächsten Zeile

Entf.

Entfernt das Symbol in der Position des Cursors, entfernt den hervorgehobenen Text.

Backspace

Entfernt das Symbol links vom Cursor

Strg+Y

Entfernt die aktuellen Zeile

Strg+Z

Macht die letzte Aktion rückgängig (bis zu 32 Stück)

Shift+Pfeiltasten

Hebt ein Textblock hervor

Strg+A

Markiert den gesamten Text

Strg+U

Verschiebt den hervorgehobenen Textblock zwei Symbole nach links

Strg+I

Verschiebt den hervorgehobenen Textblock zwei Symbole nach rechts

Strg+C, Strg+Einfg

Kopiert den markierten Textblock in den Zwischenspeicher

Strg+V, Shift+Einfg

Fügt den Text aus dem Zwischenspeicher ein

Strg+X, Shift+Entf

Schneidet den Text in den Zwischenspeicher aus

Strg+Shift+<Zahl>

Erstellt ein Lesezeichen mit der Zahl 0...9 in der aktuellen Zeile

Strg+<Zahl>

Geht zum gewählten Lesezeichen

Strg+F

Suche der Zeile

Strg+R

Ersetzen der Zeile

F3

Neue Suche/Ersatz ab der Cursorposition

F4

Start des Reports bis zu der Zeile in der sich der Cursor befindet (Run to cursor)

F5

Einstellen des Unterbrechungspunktes (Toggle breakpoint)

Strg +F2

Stoppt das Script (Program reset)

Strg +F7

Betrachtung der Bedeutungen von Variablen (Evaluate)

F9

Start des Scriptes (Run)

F7 èëè F8

Ausführen der Codezeile (Step into)

Strg +Leertaste

Zeigt eine Drop-Down-Liste mit den Methoden und Eigenschaften des Objektes, dessen Name ausgewählt ist.

Strg +Shift+Entf

Entfernt das Wort vor dem Cursor komplett

Strg +Shift+Backspace

Entfernt das Wort nach dem Cursor komplett


Scriptstruktur

Die Scriptstruktur hängt von der verwendeten Sprache ab, diese kann aber gemeinsame Elemente darstellen. Diese sind die Kopfzeile des Scriptes, der Körper und die Hauptprozedur die beim Start des Reports ausgeführt werden. Unten sehen Sie die Beispiele der Scripte der vier unterstützenden Sprachen:

Struktur PascalScript:

#language PascalScript // optional

program MyProgram; // optional

// der Teil uses muss vor allen anderen Teilen stehen

uses'unit1.pas', 'unit2.pas';

var // der Teil der Variablen kann an einer beliebigen Stellestehen

i, j: Integer;

const // der Teil konstant

pi = 3.14159;

procedure p1; // Prozeduren und Funktionen

var

i: Integer;

procedure p2;// verschachtelte Prozedur

begin

end;

begin

end;

begin // Hauptprozedur.

end.

Struktur C++Script:

#languageÑ++Script // optional

// der Teil include - muss vor allen anderen Teilen stehen

#include "unit1.cpp", "unit2.cpp"

int i, j = 0; // der Teil der Variablen kann an einer beliebigen Stellestehen

#DEFINE pi = 3.14159 // der Teil konstant

void p1() // Funktionen

{ // keine verschachtelten Prozeduren

}

{ // Hauptprozedur.

}

Struktur JScript:

#language JScript // optional

// der Teil import - muss vor allen anderen Teilen stehen

import "unit1.js", "unit2.js"

var i, j = 0; // der Teil der Variablen kann an einer beliebigen Stellestehen

function p1() // Funktionen

{ //

}

// Hauptprozedur.

p1();

for (i = 0; i < 10; i++) j++;

Struktur BasicScript:

#language BasicScript // optional

// der Teil imports - muss vor allen anderen Teilen stehen

imports "unit1.vb", "unit2.vb"

Dim i, j = 0 // der Teil der Variablen kann an einer beliebigen Stellestehen

Function p1() // Funktionen

{ //

}

// Hauptprozedur.

For i = 0To10

p1()

Next

Eine genauere Beschreibung der Möglichkeiten Scriptengine FastScript können Sie in der Dokumentation dazu finden. Der Autor hat folgende Inhalte nicht doppelt in das Handbuch eingefügt:

- Syntax-Charts aller Sprachen;

- unterstütze Datentypen;

- die Arbeit mit Klassen, Eigenschaften, Methoden, Ereignissen;

- eingebaute Funktionen

- Aufzählungen und Sets.

Im weiterem Verlauf werden wir Beispiele der Scripte in PascalScript betrachten. Bei der Erstellung eines neuen Reportes wird diese Sprache standardmässig ausgewählt.


Script “Hello, World!”

Script "Hello, World!"

Wir hatten das Beispiel des Reports "Hello, World!", lassen Sie uns jetzt mal ein einfachen Script erstellen. Dieser soll ein Fenster mit dem Text einer Begrüßung anzeigen.

Gehen wir in den Designer und klicken auf "Neuer Report". FastReport erstellt nun eine leere Schablone. Wir gehen auf den Tab Code und geben folgendes Script ein:

PascalScript:

begin

ShowMessage('Hello, World!');

end.

C++ Script:

{

ShowMessage("Hello, World!");

}

Danach starten wir den Report. Wie erwartet, zeigt FastReport auf dem Bildschirm ein kleines Fester mit einer Begrüssung:

Klären wir ein paar Details. Wir haben ein Script erstellt der aus einem Block besteht begin..end. Auf diese Weise hat unser Script eine sehr einfache Struktur, es besteht nur aus der Hauptprozedur (s.h. vorheriges Kapitel "Scriptstruktur"). Die Hauptprozedur wird beim Start des Reports ausgeführt. In unserem Fall zeigt sie das Fenster an und wird nach dem Schließen beendet. Nach dem Beenden der Hauptprozedur beginnt die Erstellung des Reports.


Benutzung von Objekten im Script

Mit dem Script kann man sich an jedes Objekt im Report wenden. Wenn der Report z.B. die Seite Page1 und ein Objekt Memo1 enthält, so kann man diese im Script verwenden, indem man deren Namen benutzt:

PascalScript:

Memo1.Color := clRed

C++Script:

Memo1.Color = clRed

Die Liste der Objekte im Report, die aus dem Script erreichbar sind, wird im Fenster des "Reporttree" angezeigt. Welche Eigenschaften der Objekte sind im Script zugänglich? Die Antwort ist einfach und zwar die, die im Objektinspektor sichtbar sind. Im unteren Teil des Fensters wird ein Hilfstext zu der gewählten Eigenschaft angezeigt. Beide Fenster (Reporttree und Inspektor) sind während der Arbeit mit dem Script zugänglich. Um eine ausführliche Auskunft über die Methoden und Eigenschaften der Objekte zu erhalten, verwenden Sie die FastReport Hilfe, die im Satz enthalten ist.

Demonstrieren wir das ganze an einem kleinen Beispiel. Fügen wir in die Reportseite das Objekt "Text" ein. Der Name soll MyTextObject lauten und als Text soll dort "Test" stehen. Wir schreiben das Script:

PascalScript:

begin

MyTextObject.Color := clRed

end.

C++Script:

{

MyTextObject.Color = clRed

}

Starten wir den Report und sehen, dass das Objekt rot geworden ist.


Zugriff auf Variablen aus der Liste der Reportvariablen

Im Script kann man auf jede Variable zugreifen, die in der Liste der Reportvariablen enthalten ist (Menüpunkt "Report|Variablen...". Der Name der Variablen muss dabei in spitze Klammern gesetzt werden:

PascalScript:

if <my variable> = 10then ...

C++ Script:

if (<my variable> == 10) { ... }

Eine alternative Variante, ist die Verwendung der Funktion Get:

PascalScript:

if Get('my variable') = 10then ...

C++ Script:

if (Get("my variable") == 10) { ... }

Die Änderung des Wertes dieser Variablen kann man nur mithilfe der Prozedur Set:

PascalScript:

Set('my variable', 10);

C++ Script:

Set("my variable", 10);

Man muss anmerken, dass das Hinzufügen der Zeilenbedeutung zusätzliche Klammern erfordert:

PascalScript:

Set('my variable', '''' + 'Zeile' + '''');

C++ Script:

Set("my variable", "\"Zeile\"");

Analog kann man auch auf Systemvariablen wie Page# zugreifen:

PascalScript:

if <Page#> = 1then ...

C++ Script:

if (<Page#> == 1) { ... }


Zugriff auf DB-Felder

Wie auch im Fall die Variablen, müssen auch hier eckige Klammern verwendet werden:

PascalScript:

if <Table1."Field1"> = Null then...

C++ Script:

if (<Table1."Field1"> == Null) { ... }

Ganauso kann man die Funktion Get verwenden (eigentlich wird diese Funktion immer für die Berechnung der Ausdrücke verwendet, die in Klammern gesetzt sind).


Die Verwendung von Aggregatfunktionen im Script

Die Besonderheit der Aggregatfunktion ist, dass sie innerhalb des Objektes "Text" verwendet werden muss. Danach kann man auf diese im Script zugreifen.Wird die Aggregatfunktion nur im Script verwendet (ohne die Verwendung im Objekt "Text"), so wird eine Fehlermeldung angezeigt. Dies ist notwendig, damit die Aggregatfunktion korrekt funktioniert. Deshalb muss sie an ein Band gebunden sein.


Anzeigen des Wertes der Variablen im Report

Um den Inhalt einer Scriptvariablen im Report anzuzeigen, muss diese beschrieben und ein Wert muss ihr zugeordnet werden. Hier ein einfaches Beispiel des Scriptes:

PascalScript:

var

MyVariable: String;

begin

MyVariable := 'Hello!';

end.

C++ Script:

string MyVariable;

{

MyVariable = "Hello!";

}

Den Wert der Variablen kann man z.B. Im Objekt "Òåxò" darstellen, indem man die Zeile [MyVariable] einfügt.

Der Name der Variablen muss einzigartig sein, d.h. es darf nicht denselben Namen haben wie die Objekte des Reportes, der Standardfunktionen, Konstanten. Bei jedem Fehler im Script erscheint eine Fehlermeldung auf dem Bildschirm und der Report wird nicht erstellt.


Ereignisse

Bis jetzt haben wir Scripte mit nur einer Hauptprozedur betrachtet, die beim Start des Reports ausgeführt wird. In der Hauptprozedur kann man Starteinstellungen ausführen oder die Variablen initialisieren. Aber für die volle Kontrolle über den Prozess der Reportbildung ist es ungenügend. Um den Report flexibel steuern zu können, hat jedes Objekt mehrere Ereignisse, denen ein Bearbeiter zugewiesen werden kann eine Pozedur im Script. Man kann zum Beispiel im Editor des Datenbandes Einträge filtern, d.h. verbergen und anzeigen des Bandes abhängig von bestimmten Bedingungen.

Betrachten wir den Prozess der Bildung des Reports und der Ereignisse, die dabei generiert werden am Beispiel eines einfachen Berichtes, der nur eine einzige Seite, ein Band "Daten 1. Ebene" und zwei Objekte Text im Band enthält.

Am Anfang des Reports wird, wie gesagt die Hauptprozedur ausgeführt. Erst danach beginnt der eigentliche Prozess der Reporterstellung. Das Ereignis OnStartReport wird am Anfang des Objekts "Reports" aufgerufen. Vor dem formieren der Seite wird das Ereignis OnBeforePrint. Dieses Ereignis wird einmal für jede Seite der Reportschablone aufgerufen (nicht zu verwechseln mit den Seiten des fertigen Reports!) In unserem Fall unabhängig der Seiten im fertigen Report, wird das Ereignis nur einmal aufgerufen, da die Reportschablone aus nur einer Seite besteht.

Als nächstes beginnt der Druck der Datenbänder. Das geschieht auf folgende Weise:

1. Ereignis OnBeforePrint des Bandes wird aufgerufen;

2. die Ereignisse OnBeforePrint der auf dem Band liegenden Objekte werden aufgerufen;

3. alle Objekte werden mit Daten gefüllt (in unserem Fall mit Bedeutungen der DB-Felder Company und Addr1);

4. die Objekte werden auf dem Band positioniert (falls dazwischen dehnbare sind), ebenfalls wird die Höhe des Bandes berechnet und es wird gedehnt (falls es dehnbar ist);

5. das Ereignis OnAfterCalcHeight des Bandes wird aufgerufen;

6. falls das Band nicht auf eine Seite passt, wird eine neue erstellt;

7. das Band und alle seine Objekte werden auf dem fertigen Report ausgeführt;

8. das Ereignis OnAfterPrint aller Objekte des Bandes wird aufgerufen;

9. das Ereignis OnAfterPrint des Bandes wird aufgerufen

Die Bänder werden ausgeführt, solange es Daten in der verknüpften Datenquelle gibt. Danach endet das Formieren des Reports in unserem Fall und das Ereignis OnAfterPrint der Reportseite wird aufgerufen. Als letztes wird das Ereignis OnStopReport des Objekts "Report" aufgerufen.

Auf diese Weise wird durch Benutzung der Ereignisse verschiedener Objekte praktisch jeder Moment beim Erstellen des Reports kontrolliert. Der Schlüssel zum richtigen Verwenden der Ereignisse ist das Verstehen all dieser neuen Punkte des Prozesses der Reporterstellung. So können viele Handlungen nur ausgeführt werden indem man das Ereignis OnBeforePrint verwendet. Alle Änderungen die im Objekt vorgenommen werden, werden sofort angezeigt. Hier kann aber nicht analysiert werden, auf welcher Seite das Band angezeigt wird wenn dieses dehnbar ist. Die Berechnung dazu findet erst bei Punkt 4 statt. Dies kann mit dem Ereignis OnAfterCalcHeight oder OnAfterPrint im Punkt 8 gemacht werden, aber im letzten Fall wird das Band schon gedruckt sein und die Bearbeitung der Objekte wird keine Auswirkungen haben. Deswegen müssen Sie genau wissen, wann welches Ereignis aufgerufen wird und genau die benutzen, die benötigt werden.


Beispiel der Nutzung des Ereignisses OnBeforePrint

Demonstrieren wir das oben genannte an einem Beispiel. Erstellen wir einen Report und zwar eine Kundenliste, die nur Unternehmen enthalten soll deren Name mit "A" beginnt.

Gehen wir in den Reporteditor und erstellen einen Report mit folgendem Aussehen:

Markieren wir das Datenband und gehen auf den Tab "Ereignisse" im Objektinspektor:

Um den Bearbeiter des Ereignisses OnBeforePrint (dieses passt hier am besten) zu starten, müssen wir einen Doppelklick mit der Maus auf eine leere Stelle gegenüber den Namen des Ereignisses durchführen:

Dadurch wird in den Scripttext ein leerer Bearbeiter hinzugefügt und der Designer schaltet auf den Tab "Code":

Die Arbeitsweise ist der der Umgebung Delphi ähnlich. Wir müssen nur noch den folgenden Code in den Bearbeiter eingeben.

PascalScript:

if Copy(<Customers."Company">, 1, 1) = 'A'then

MasterData1.Visible := True else

MasterData1.Visible := False;

C++Script:

if (Copy(<Customers."Company">, 1, 1) == "A")

MasterData1.Visible = true;

else

MasterData1.Visible = false;

Starten wir den Report und überzeugen uns, dass das Script richtig funktioniert:

Sie können einen Bearbeiter für mehrere Ereignisse verschiedener Objekte bestimmen. In diesem Fall Parameter Sender bestimmt das Objekt, welches das Ereignis initialisiert hat (analog dem Parameter Sender in den Ereignissen Delphi). Um dem Ereignis den Namen eines schon bestehenden Bearbeiters zu geben, kann dieser manuell im Objektinspektor eingetragen werden oder man kann ihn in der Drop-Down-Liste auswählen (ebenfalls analog der Umgebung Delphi):

Der Link zum Bearbeiter kann leicht entfernt werden. Wählen Sie die Eigenschaft aus und klicken auf Entf.


Drucken der Endsumme der Gruppe im Gruppenkopf

 Top

Dieser oft durchgeführte Schritt benötigt die Verwendung eines Scriptes. In einem Standardreport ist die Summe erst zugänglich nachdem alle Einträge der Gruppe bearbeitet wurden. Um diese im Gruppenkopf darzustellen (bevor die Gruppe bearbeitet wird) verwendet man folgenden Algorithmus:

- der Report muss Zweipass aktiviert haben

- beim ersten Durchgang wird die Summe jeder Gruppe ermittelt und in irgendeinem Datenfeld gespeichert

- beim zweiten Durchgang wird diese aus dem Datenfeld geholt und im Gruppenkopf dargestellt.

Demonstrieren wir die Lösung dieser Aufgabe auf zwei Arten. Als erstes erstellen wir ein neues Projekt in Delphi und legen auf die Seite die Komponenten TQuery, TfrxReport, TfrxDBDataSet. Die Einstellungen sind wie folgt:

Query1:

DatabaseName = 'DBDEMOS'

SQL =

select * from customer, orders

where orders.CustNo = customer.CustNo

order by customer.CustNo, orders.OrderNo

frxDBDataSet1:

DataSet = Query1

UserName = 'Group'

Jetzt gehen wir in den Designer und verknüpfen unsere Datenquelle mit dem Report. In den Einstellungen des Reports (Menüpunkt "Report|Einstellungen...") aktivieren wir Zweipass. Zwei Bänder werden eingefügt: "Gruppenkopf" und "Daten 1. Ebene". Im Editor des Bandes "Gruppenkopf" fügen wir die Bedingung Datenfeld Group.CustNo ein: Das Datenband verknüpfen wir mit der Datenquelle und ordnen die Objekte folgendermaßen an:

Das markierte Objekt in der Grafik (der Name: Memo8) benutzen wir um die Summe anzuzeigen.

Möglichkeit 1.

Wir verwenden als Datenfeld für die Aufbewahrung der Summen "TstringList". Die Summe soll in Form von Zeilen gespeichert werden. Dabei soll die erste Zeile die Werte der ersten Gruppe darstellen usw. Die Gruppennummer soll eine ganzzahlige Variable sein, die sich mit jeder folgenden Gruppe erhöht.

Unser Script sieht in diesem Fall so aus:

PascalScript:

var

List: TStringList;

i: Integer;

procedure frxReport1OnStartReport(Sender: TfrxComponent);

begin

List := TStringList.Create;

end;

procedure frxReport1OnStopReport(Sender: TfrxComponent);

begin

List.Free;

end;

procedure Page1OnBeforePrint(Sender: TfrxComponent);

begin

i := 0;

end;

procedure GroupHeader1OnBeforePrint(Sender: TfrxComponent);

begin

if Engine.FinalPass then

Memo8.Text := 'Sum: ' + List[i];

end;

procedure GroupFooter1OnBeforePrint(Sender: TfrxComponent);

begin

ifnot Engine.FinalPass then

List.Add(FloatToStr(SUM(<Group."ItemsTotal">,MasterData1)));

Inc(i);

end;

begin

end.

C++ Script:

TStringList List;

int i;

void frxReport1OnStartReport(TfrxComponent Sender)

{

List = TStringList.Create();

}

void frxReport1OnStopReport(TfrxComponent Sender)

{

List.Free();

}

void Page1OnBeforePrint(TfrxComponent Sender)

{

i = 0;

}

void GroupHeader1OnBeforePrint(TfrxComponent Sender)

{

if (Engine.FinalPass)

Memo8.Text = "Sum: " + List[i];

}

void GroupFooter1OnBeforePrint(TfrxComponent Sender)

{

List.Add(FloatToStr(SUM(<Group."ItemsTotal">,MasterData1)));

i++;

}

{

}

An dem Namen der Prozedur kann man sehen, welches Ereignis wir verwendet haben: Report.OnStartReport, Report.OnStopReport, Page1.OnBeforePrint, GroupHeader1.OnBeforePrint, GroupFooter1.OnBeforePrint. Was die beiden ersten Ereignisse angeht, so werden diese am Anfang und am Ende eines Reports aufgerufen. Um die Bearbeiter für diese Ereignisse zu erstellen, markieren wir das Objekt "Report" im Fenster "Reporttree". Die Eigenschaften erscheinen dadurch im Objektinspektor. Den Rest erledigen wir wie gewohnt, indem wir auf den Tab "Ereignisse" des Inspektors gehen und die Bearbeiter erstellen.

Wieso haben wir für die Erstellung der Liste List nicht die Hauptprozedur benutzt, sondern haben es im Ereignis OnStartReport gemacht? Weil das erstellte Objekt nach dem Vollenden des Reports befreit werden muss. Logischerweise ist es besser die Objekte im Ereignis OnStartReport zu erstellen und im OnStopReport zu befreien. In anderen Fällen (wenn der Speicher nicht befreit werden muss) kann man die Hauptprozedur verwenden um Variablen zu initialisieren.

Das Erstellen und das Befreien des Objektes "List" haben wir geklärt. Lassen Sie uns nun die Arbeitsweise des Scripts betrachten. Am Anfang der Seite wird der Zähler der laufenden Gruppe (Variable i) auf 0 gesetzt und wird um 1 erhöht nach jeder neuen Gruppe (im Ereignis GroupFooter1.OnBeforePrint). Ebenfalls wird in diesem Ereignis die Summe in die Liste eingefügt. Das Ereignis GroupHeader1.OnBeforePrint funktioniert beim ersten Durchgang nicht (Überprüfung Engine.FinalPass). Beim zweiten Durchgang (wenn die Liste List mit Werten gefüllt ist), wird dieses Eeignis den Wert der aktuellen Gruppe anzeigen und in den Text des Objektes Memo8 eintragen. Der Text zeigt die Summe in der Kopfzeile der Gruppe. Im fertigen Report sieht es so aus:

Wie man sieht ist der Algorithmus relativ einfach. Man kann ihn aber noch einfacher gestalten.

Möglichkeit 2.

Wir verwenden als Datenfeld zum Speichern der Summen die Liste der Reportvariablen. Der Bezug auf diese Variablen läuft mit den Funktionen Get und Set. Dadurch müssen wir nicht neue Objekte erstellen und der Speicher muss nicht gelöscht werden. Das Script sieht dann so aus:

PascalScript:

procedure GroupHeader1OnBeforePrint(Sender: TfrxComponent);

begin

if Engine.FinalPass then

Memo8.Text := 'Sum: ' + Get(<Group."CustNo">);

end;

procedure GroupFooter1OnBeforePrint(Sender: TfrxComponent);

begin

Set(<Group."CustNo">,

FloatToStr(SUM(<Group."ItemsTotal">,MasterData1)));

end;

begin

end.

C++ Script:

void GroupHeader1OnBeforePrint(TfrxComponent Sender)

{

if (Engine.FinalPass)

Memo8.Text = "Sum:" + Get(<Group."CustNo">);

}

void GroupFooter1OnBeforePrint(TfrxComponent Sender)

{

Set(<Group."CustNo">,

FloatToStr(SUM(<Group."ItemsTotal">,MasterData1)));

}

{

}

Wie man sieht ist das Script wesentlich einfacher geworden. Der Code im Bearbeiter GroupFooter1.OnBeforePrint stellt den Wert der Variablen mit dem Namen des Kunden (der Gleich der Kundennummer ist) dar. Man kann ein beliebiges Identifizierungszeichen verwenden, das den Kunden eindeutig identifiziert z. B. seinen Namen <Group."Company">. Gibt es eine solche Variable nicht, so wird sie erstellt. Gibt es sie, so wird deren Wert geändert. Im Bearbeiter GroupHeader1.OnBeforePrint wird der Wert der Variablen mit der Nummer der aktuellen Gruppe angezeigt.


Ereignis OnAfterData

Dieses Ereignis wird generiert, nachdem das Objekt im Report mit den verknüpften Daten gefüllt worden ist. Das Ereignis ist praktisch, um die Werte des DB-Feldes oder die Ausdrücke im Objekt zu analysieren. Tatsache ist, dass sich dieser Wert in der Dienstvariable Value befindet und deren Werte sind nur in diesem Ereignis zugänglich. Hat man zwei Objekte "Text" mit dem Inhalt [Table1."Field1"] und [<Table2."Field1"> + 10], kann man die Werte dieser Ausdrücke bequem analysieren, wenn man sich auf die Variable Value bezieht:

PascalScript:

if Value > 3000then

Memo1.Color := clRed

C++ Script:

if (Value > 3000)

Memo1.Color = clRed;

anstatt etwas wie dies zu schreiben:

PascalScript:

if <Table1."Field1"> > 3000then

Memo1.Color := clRed

C++ Script:

if (<Table1."Field1"> > 3000)

Memo1.Color = clRed;

Darüber hinaus gibt die Verwendung von Value, anstatt eines Ausdrucks, die Möglichkeit einen universellen Bearbeiter für das Ereignis OnAfterData zu erstellen und diesen mit mehreren Objekten zu verknüpfen.

Eins muss noch erwähnt werden, enthält das Objekt mehrere Ausdrücke z.B. [expr1] [expr2], so wird in die Variable Value der Wert des letzten Ausdruckes übernommen.

Das Ereignis OnAfterData passt ausgezeichnet, um die Höhe und Breite von Objekten wie z.B. "Text" zu berechnen. Sprich, wenn man im Script des Reports den tatsächlichen Wert der Höhe des Objekts haben möchte (dehnbares Objekt) und im Objekt "Text" wird ein Ausdruck verwendet, so kann man solch ein Script benutzen im Ereignis OnAfterData:

PascalScript:

var

MemoWidth: Extended;

begin

MemoWidth := TfrxMemoView(Sender).CalcWidth;

end;

C++ Script:

float MemoWidth;

MemoWidth = TfrxMemoView(Sender).CalcWidth;

Wenn der Datencode in das Ereignis OnBeforePrint einfügt wird, so wird das Resultat, die Höhe des Objektes (welches den Ausdruck enthält) und nicht sein Wert sein.


Serviceobjekte

Neben den im Report enthaltenen Objekten (Seiten, Bänder, Objekte "Text" usw.), sind zusätzlich im Script einige Serviceobjekte enthalten. Diese sind hilfreich bei der Steuerung der Erstellung eines Reports. Zu diesen Objekten gehört das oben benutzte Objekt Engine. Die Liste der Serviceobjekte ist unten aufgeführt:

- Report Objekt "Report";

- Engine Link zur Reportengine;

- Outline Link zum Steuerungselement "Reporttree" im Vorschaufenster.

Betrachten wir die Objekte.


Objekt Report

Stellt einen Link zum laufenden Report dar. Die Eigenschaften des Objekts kann man sehen, wenn man das Element "Report" im Fenster "Reporttree" auswählt.

Methoden:

Methode Beschreibung

function Calc(const Expr: String): Variant Zeigt den Wert des Ausdrucks Expr an, z.B. Report. Calc('1+2') würde 3 anzeigen. Jeder Ausdruck, der aus Sicht von FastReport korrekt ist, kann als Ausdruck übertragen werden.

function GetDataSet(const Alias: String): TfrxDataSet Gibt einen Datensatz mit einem angegebenen Namen zurück. Der Datensatz muss in der Liste der Reportdaten enthalten sein (Dialog "Report|Daten…").


Objekt Engine

Dies ist ein sehr nützliches und interessantes Objekt, welches einen Link zur Engine (der Kern von FastReport, welcher die Erstellung des Reports steuert) darstellt. Indem man die Eigenschaften und Methoden der Engine verwendet, kann man wahrhaft exotische Reporttypen erstellen. Betrachten wir die Eigenschaften und Methoden des Objekts.

Eigenschaft Typ Beschreibung

CurColumn Integer Die Nummer der aktuellen Spalte im Multispalten-Report. An diese Eigenschaft kann man einen Wert binden.

CurX Extended Die aktuelle Verschiebung der Koordinaten auf der X-Achse. An diese Eigenschaft kann man einen Wert binden.

CurY Extended Die aktuelle Verschiebung der Koordinaten auf der Y-Achse. An diese Eigenschaft kann man einen Wert binden.

DoublePass Boolean Standardmäßig True, wenn der Report Zweipass aktiviert hat. Analog Report.EngineOptions.DoublePass.

FinalPass Boolean Standardmäßig True, wenn der zweite Durchgang eines Reports ausgeführt wird.

PageHeight Extended Die Höhe der zu druckenden Region in Pixel.

PageWidth Extended Die Breite der zu druckenden Region in Pixel.

StartDate TDateTime Die Zeit des Startens des Reports. Analog der Systemvariable <Date>.

StartTime TDateTime Die Zeit des Startes des Reports. Analog der Systemvariable <Time>.

TotalPages Integer Anzahl der Seiten im Report. Analog der Systemvariablen <TotalPages>. Im diese Variable nutzen zu können, muss der Report Zweipass aktiviert haben.

SecondScriptcall Boolean Standardmäßig True, wenn beim Übertragen der Objekte das Ereignis des Objekts wiederholt aufgerufen wird (passiert beim Übertragen des Objektes "Text" mit der aktivierten Eigenschaft SuppressRepeated ).

Methoden:

Methode Beschreibung

procedure AddAnchor(const Text: String) Fügt einen "Anker" in die Liste der Anker ein. Genaueres folgt später.

procedure NewColumn Erstellt eine neue Spalte im Multispalten-Report. Nach der letzten Spalte wird automatisch die Seite getrennt.

procedure NewPage Erstellt eine neue Seite (Seitentrennung).

procedure ShowBand(Band: TfrxBand) Zeigt das Band mit dem eingegebenen Namen an. Nach der Ausführung des Bandes verschiebt sich automatisch die Position CurY.

function FreeSpace: Extended Zeigt die Höhe des restlichen freien Platzes auf der Seite an (in Pixel).

function GetAnchorPage(const Text: String): Integer Zeigt die Seitennummer an, auf der sich der eingegebene Anker befindet.


Objekt Outline

Dieses Objekt stellt ein Steuerungselement "Reporttree" im Vorschaufenster dar.

Dieses Element zeigt die Baumstruktur des fertigen Berichtes an. Beim Klick auf einen Knoten wechselt man auf die Reportseite, mit der dieser verbunden ist. Um den Baum darzustellen klickt man entweder auf auf den Instrumentenpanel im Vorschaufenster oder stellt die Eigenschaft Report.PreviewOptions.OutlineVisible gleich True. Dort kann man ebenfalls die Breite des Steuerungselementes in Pixel eingeben: Report.PreviewOptions.OutlineWidth.

Betrachten wir die Methoden dieses Objektes:

Methode Beschreibung

procedure AddItem(const Text: String) Fügt ein Element mit der Bezeichnung "Text" in die aktuelle Position des Baumes. Mit dem Element wird die aktuelle Reportseite und die aktuelle Position auf der Seite assoziiert.

procedure LevelRoot Verschiebt die aktuelle Position in dem Baum auf die Wurzelebene.

procedure LevelUp Verschiebt die aktuelle Position in dem Baum eine Ebene höher.


Anwendung des Objektes Engine

Wir haben schon erwähnt, dass das Objekt Engine die Reportengine darstellt und die Reporterstellung steuert. Durch die Verwendung der Eigenschaften und Methoden der Engine, steuert man den Prozess der Bandverteilung auf der Seite. Am Anfang etwas Theorie.

Die Grafik unten zeigt die Darstellung einer Reportseite und der Namen der Eigenschaften, welche die Maße steuern.

Eine Seite besitzt die physischen Maße PaperWidth, PaperHeight. Diese entsprechen namentlich den Eigenschaften der Seite, welche im Objektinspektor zusehen sind. Die Seite besitzt das Format A4 und ist 210õ297 mm groß.

Die Parameter PageWidth, PageHeight bestimmen die Größe der Seite auf der der Druck erfolgt. Diese ist in der Regel kleiner als die eigentliche Seite. Die Maße der bedruckbaren Fläche der Seite werden über die Eigenschaften LeftMargin, TopMargin, RightMargin, BottomMargin gesteuert. Die Eingabe der Maße der bedruckbaren Fläche in Pixel erfolgt über die Eigenschaften Engine.PageWidth, Engine.PageHeight

Das Parameter FreeSpace bestimmt die Höhe der freien Fläche der Seite. Enthält die Seite das Band "Seitenfuß" (Page Footer), so wird dessen Höhe beim Berechnen der Höhe durch FreeSpace berücksichtigt. Dieses Parameter in Pixel ist die Funktion Engine.FreeSpace. Man muss hinzufügen, dass nach dem Anzeigen des nächsten Bandes der freie Platz auf der Seite abnimmt. Auch dies berücksichtigt FreeSpace beim Berechnen.

Wie erfolgt das Formieren der Seiten eines fertigen Reports? Der Kern von FastReport fügt der Seite Bänder hinzu, solange es genügend Platz für das Band gibt. Reicht der Platz nicht aus, wird das Band "Seitenfuß" gedruckt (falls vorhanden) und eine neue Seite wird erstellt. Wie oben erwähnt, reduziert sich nach dem nächsten Band die freie Fläche. Außerdem wird das folgende Band von der gegenwärtigen Position angezeigt, die durch Koordinaten auf der X-Achse und Y-Achse definiert wird. Die Steuerung erfolgt über die Eigenschaften Engine.CurX, Engine.CurY. Nach dem Druck des nächsten Bandes erhöht CurY automatisch die Höhe, entsprechend der des Bandes. Nach dem Erstellen der neuen Seite ist CurY = 0. CurX verändert sich nur bei Multispalten-Reporten.

Die Eigenschaften Engine.CurX, Engine.CurY sind nicht nur zum Lesen verfügbar, sondern auch zum Schreiben. Die Bänder können dadurch manuell verschoben werden indem man eines der Ereignisse nutzt. Betrachten wir folgendes Beispiel:

Man kann ihn folgendermaßen drucken:

Die ist das Resultat eines Scripts, zugeteilt dem Ereignis OnBeforePrint des Bandes:

PascalScript:

procedure MasterData1OnBeforePrint(Sender: TfrxComponent);

begin

Engine.CurX := Engine.CurX + 5;

end;

C++ Script:

void MasterData1OnBeforePrint(TfrxComponent Sender)

{

Engine.CurX = Engine.CurX + 5;

}

Durch Manipulation der Eigenschaft CurY kann man die Bänder übereinander darstellen:

Das verantwortliche Script:

PascalScript:

procedure MasterData1OnBeforePrint(Sender: TfrxComponent);

begin

Engine.CurY := Engine.CurY - 15;

end;

C++ Script:

void MasterData1OnBeforePrint(TfrxComponent Sender)

{

Engine.CurY = Engine.CurY - 15;

}

Die Methode Engine.NewPage erlaubt die Trennung der Seite an der gewünschten Stelle. Der Druck erfolgt auf der nächsten Seite. In unserem Beispiel trennen wir die Seite nach der zweiten Zeile:

PascalScript:

procedure MasterData1OnAfterPrint(Sender: TfrxComponent);

begin

if <Line> = 2then

Engine.NewPage;

end;

C++ Script:

void MasterData1OnAfterPrint(TfrxComponent Sender)

{

if (<Line> == 2)

Engine.NewPage();

}

Beachten Sie, dass wir es jetzt im Ereignis OnAfterPrint machen, sprich nachdem das Band schon erstellt worden ist. Die Systemvariable Line fügt die korrekte Nummer des Eintrags ein.

Die Methode Engine.NewColumn trennt die Spalten im Multispalten-Report. Nach der letzten Spalte wird eine neue Seite erstellt.


Anker

Anker (anchors) ist eines der Elemente des Hyperlink Systems, welches es erlaubt, durch einen Klick auf ein Objekt im fertigen Report (im Vorschaufenster), auf das verbunde Element zu wechseln.

Anker ist ein spezielles Zeichen, welches über die Methode Engine.AddAnchor gesetzt wird. Der Anker hat einen Namen und ihm entspricht die Nummer und die Position auf der Seite. Um zu einem Anker mit dem angegebenen Namen zu wechseln, kann man in die Eigenschaft URL eines beliebiges Objektes des Reports, die folgende Zeile einfügen:

#NameAnker

èëè

#[NameAnker]

Im letzten Fall wird FastReport den Wert in der eckigen Klammer anzeigen.

Beim Klick auf dieses Objekt, wird man zu der Stelle des Reports weitergeleitet, in der der Anker eingefügt wurde.

Anker sind praktisch beim Erstellen des Kapitels "Inhaltverzeichnis" mit Links zu den entsprechenden Kapiteln. Zeigen wir dies an einem kleinen Beispiel. Hierfür benötigen wir die uns bekannte Tabelle Customer.db.

Unser Report wird zweiseitig (sprich zwei Seiten im Designer). Auf der ersten Seite erstellen wir das "Inhaltverzeichnis" und auf der zweiten die eigentliche Kundenliste. Beim Klick auf eine Zeile im Inhaltsverzeichnis, wird man zum entsprechenden Element des Reports weitergeleitet.

Erste Seite:

In die Eigenschaft URL des Objektes "Text", welcher auf dem Datenband liegt, fügen wir folgende Zeile ein:

#[Customers."Company"]

und stellen die Eigenschaften der Schrift ein: blau und unterstrichen, um das Aussehen des Hyperlinks zu immitieren.

Zweite Seite:

Um den Anker einzufügen, schreiben wir im Script des Bandes MasterData2.OnBeforePrint:

PascalScript:

procedure MasterData2OnBeforePrint(Sender: TfrxComponent);

begin

Engine.AddAnchor(<Customers."Company">);

end;

C++ Script:

void MasterData2OnBeforePrint(TfrxComponent Sender)

{

Engine.AddAnchor(<Customers."Company">);

}

Nun starten wird den Report und vergewissern uns, dass die Hyperlinks funktionieren.

Was man noch erwähnen kann, ist die Funktion Engine.GetAnchorPage. Diese zeigt die Nummer der Seite an, in der der Anker hinzugefügt wurde. Ebenfalls ist diese Funktion wichtig für die Erstellung des "Inhaltsverzeichnisses". Dazu muss im Report Zweipass aktiviert werden.


Anwendung des Objektes Outline

Das Objekt Outline stellt den Reporttree dar, welcher im Vorschaufenster angezeigt werden kann. Beim Klick auf ein Element des Baums wird man auf die damit verbundene Reportseite geleitet. Um mit Outline arbeiten zu können muss man das Script nutzen, weil manche Bänder einen Mechanismus besitzen, der es ihnen erlaubt, den Baum automatisch zu erstellen. Betrachten wir zwei Beispiele der Nutzung von Outline. Einmal mit Hilfe der Bänder und aus dem Script.

Um den Baum automatisch zu erstellen, besitzen fast alle Bänder die Eigenschaft OutlineText in die die Zeile des Ausdrucks eingefügt wird. Der Ausdruck wird berechnet und der Wert wird beim Druck des Bandes in den Baum eingefügt. Die Hierarchie der Elemente im Baum entspricht der, der Bänder im Report. Das heißt im Baum werden Haupt, und untergeordnete Elemente vorhanden sein, die den Haupt und Untergeordneten Bändern im Report entsprechen (z. B. ein Report mit zwei Ebenen oder mit Gruppen). Betrachten wir die Arbeit mit dem Baum am Beispiel des Reportes mit Gruppen, welchen wir vorhin hatten.

Stellen wir die Eigenschaft des Bandes GroupHeader1.OutlineText gleich <Group."Company">. Beim Start sehen wir folgendes:

Beim Klick auf ein beliebiges Element des Baumes, werden wir auf die entsprechende Seite des Reportes geleitet. Das Element wird oben im Fenster angezeigt.

Fügen wir eine zweite Ebene in den Reporttree ein. Hierfür müssen wir die Eigenschaft des Bandes MasterData.OutlineText gleich <Group."OrderNo"> stellen. Der Baum sieht nun wie folgt aus:

Wie man sieht, ist nun die Navigation über die Bestellnummern möglich. Die Hierarchie der Elemente im Baum, entspricht der Hierarchie der Elemente im Report.

Schauen wir uns die Erstellung eines analogen Baumes mit Hilfe eines Scriptes und ohne die Nutzung der Eigenschaft OutlineText. Bereinigen wir die Eigenschaften OutlineText beider Bänder und erstellen zwei Bearbeiter der Ereignisse GroupHeader1.OnBeforePrint und MasterData1.OnBeforePrint:

PascalScript:

procedure GroupHeader1OnBeforePrint(Sender: TfrxComponent);

begin

Outline.LevelRoot;

Outline.AddItem(<Group."Company">);

end;

procedure MasterData1OnBeforePrint(Sender: TfrxComponent);

begin

Outline.AddItem(<Group."OrderNo">);

Outline.LevelUp;

end;

begin

end.

C++ Script:

void GroupHeader1OnBeforePrint(TfrxComponent Sender)

{

Outline.LevelRoot;

Outline.AddItem(<Group."Company">);

}

void MasterData1OnBeforePrint(TfrxComponent Sender)

{

Outline.AddItem(<Group."OrderNo">);

Outline.LevelUp;

}

{

}

Starten wir den Report und vergewissern uns, dass dieser analog dem vorherigen Report ist, in dem der Baum automatisch erstellt wurde. Sehen wir uns nun die Erstellung des Baumes an.

Die Methode Outline.AddItem fügt dem aktuellen Knoten im Baum, einen weiteren untergeordneten hinzu und macht ihn zum aktuellen. Ruft man AddItem ein paar mal auf, so erhält man eine "Treppe" folgender Art

Item1

Item2

Item3

...

Zur Steuerung des aktuellen Elementes dienen "Outline LevelUp" und "LevelRoot". Die erste Methode verschiebt das Element eine Ebene höher. Das Script

Outline.AddItem('Item1');

Outline.AddItem('Item2');

Outline.AddItem('Item3');

Outline.LevelUp;

Outline.AddItem('Item4');

würde folgenden Baum erstellen.

Item1

Item2

Item3

Item4

Sprich, das Element Item4 wird dem Element Item2 untergeordnet. Die Methode LevelRoot verschiebt das aktuelle Element in die Wurzel. Hier ein Beispiel, das Script

Outline.AddItem('Item1');

Outline.AddItem('Item2');

Outline.AddItem('Item3');

Outline.LevelRoot;

Outline.AddItem('Item4');

würde folgenden Baum erstellen

Item1

Item2

Item3

Item4

Nach diesen Erklärungen sollte klar sein wie unser Report funktioniert. Jedesmal beim Druck des Gruppenkopfes wird die Wurzel zum aktuellen Element und der Unternehmensname eingefügt. Danach wird die Liste der Bestellungen gedruckt und jede Bestellung wird als untergeordnetes Element hinzugefügt. Damit die Bestellnummern auf einer Ebene liegen und nicht in Form einer "Treppe" dargestellt werden. verschieben Sie diese im Script eine Ebene höher mit Hilfe von Outline.LevelUp.


Das Ereignis der Seite OnManualBuild

Normalerweise übernimmt die Erstellung des Reports der Kern von FastReport. Dieser führt die Bänder in einer bestimmten Reihenfolge aus und zwar solange es Daten gibt und bildet dadurch den fertigen Report. Manchmal ist es notwendig einen Report zu erstellen, welcher nicht die Standardform besitzt und deswegen nicht vom Kern FastReport gebildet werden kann. In diesem Fall kann man die Möglichkeit nutzen den Report manuell zu erstellen, durch Nutzung des auf der Seite enthaltenen Ereignisses OnManualBuild. Wenn man den Bearbeiter dieses Ereignisses definiert, so übergibt FastReport die Steuerung bei der Erstellung ihm. Gleichzeitig stellt der Kern die auf der Seite enthaltenen Bänder "Gruppenkopf", "Spaltenkopf", "Fuß", "Seitenfuß", "Spaltenfuß" und "Background" dar. Der Kern bearbeitet die Bildung neuer Seiten/Spalten. Die Aufgabe des Bearbeiters des Ereignisses OnManualBuild, ist die Ausführung der Datenbänder und deren Köpfe und Füße in einer bestimmten Reihenfolge.

Der Sinn des Bearbeiters OnManualBuild besteht darin, dem Kern von FastReport die Befehle zu Ausführung bestimmter Bänder zu geben. Alles andere erledigt der Kern selbstständig: die Bildung einer neuen Seite ( wenn die aktuelle endet), die Ausführung von Scripten, usw.

Demonstrieren wir das Ganze am Beispiel deines einfachen Bearbeiters. Der Report enthält zwei Bänder MasterData, diese sind nicht mit Daten verknüpft:

Der Bearbeiter wird diese Bänder je sechs mal ausführen und zwar abwechselnd. Nach sechs Bändern soll eine kleine Lücke sein.

PascalScript:

procedure Page1OnManualBuild(Sender: TfrxComponent);

var

i: Integer;

begin

for i := 1to6do

begin

{ zeigen nacheinander zwei Bänder }

Engine.ShowBand(MasterData1);

Engine.ShowBand(MasterData2);

{ machen eine kleine Lücke }

if i = 3then

Engine.CurY := Engine.CurY + 10;

end;

end;

C++ Script:

void Page1OnManualBuild(TfrxComponent Sender)

{

int i;

for (i = 1; i <= 6; i++)

{

// zeigen nacheinander zwei Bänder

Engine.ShowBand(MasterData1);

Engine.ShowBand(MasterData2);

// machen eine kleine Lücke

if (i == 3)

Engine.CurY = Engine.CurY + 10;

}

}

Das nächste Beispiel wird zwei Gruppen mit Bändern nebeneinander anzeigen.

PascalScript:

procedure Page1OnManualBuild(Sender: TfrxComponent);

var

i, j: Integer;

SaveY: Extended;

begin

SaveY := Engine.CurY;

for j := 1to2do

begin

for i := 1to6do

begin

Engine.ShowBand(MasterData1);

Engine.ShowBand(MasterData2);

if i = 3then

Engine.CurY := Engine.CurY + 10;

end;

Engine.CurY := SaveY;

Engine.CurX := Engine.CurX + 200;

end;

end;

C++Script:

void Page1OnManualBuild(TfrxComponent Sender)

{

int i, j;

Extended SaveY;

SaveY = Engine.CurY;

for (j = 1; j <= 2; j++)

{

for (i = 1; i <= 6; i++)

{

Engine.ShowBand(MasterData1);

Engine.ShowBand(MasterData2);

if (i == 3)

Engine.CurY = Engine.CurY + 10;

}

Engine.CurY = SaveY;

Engine.CurX = Engine.CurX + 200;

}

}

Wie man an diesen Beispielen sehen kann, steuerten wir nur den Output der Datenbänder. Alle anderen Bänder (z. B. "Seitenkopf" in unserem Beispiel) wurden automatisch gedruckt.

Jetzt werden wir einen Report "Kundenliste" erstellen (diesen haben wir schon ein paar mal erstellt), wir nutzten dazu das Ereignis OnManualBuild. Hier verknüpfen wir das Datenband mit der Datenquelle.

Der Script des Ereignisses ist folgender:

PascalScript:

procedure Page1OnManualBuild(Sender: TfrxComponent);

var

DataSet: TfrxDataSet;

begin

DataSet := MasterData1.DataSet;

DataSet.First;

whilenot DataSet.Eof do

begin

Engine.ShowBand(MasterData1);

DataSet.Next;

end;

end;

C++Script:

void Page1OnManualBuild(TfrxComponent Sender)

{

TfrxDataSet DataSet;

DataSet = MasterData1.DataSet;

DataSet.First();

while (!DataSet.Eof)

{

Engine.ShowBand(MasterData1);

DataSet.Next();

}

}

Wenn wir den Report nun starten, sehen wir, das das Resultat sich nicht vom Standardreport unterscheidet. Beachten Sie wie der Link zu Dataset funktioniert. In unserem Beispiel haben wir das Band mit der Datenquelle verlinkt, deswegen wird die Zeile

DataSet := MasterData1.DataSet;

uns mit der Datenquelle verbinden. Den Link zu der benötigten Datenquelle kann man auch so erhalten:

DataSet := Report.GetDataSet('Customers');

Selbstverständlich muss die uns interessierende Quelle in dem Report hinzugefügt werden in "Report|Daten...".


Das Erstellen von Objekten im Script

Durch Nutzung des Scripts kann man dem Report neue Objekte hinzufügen. Zeigen wir das an einem kleinen Beispiel. Wir erstellen einen neuen Report und fügen in die Hauptprozedur des Scripts folgendes ein:

PascalScript:

var

Band: TfrxReportTitle;

Memo: TfrxMemoView;

begin

Band := TfrxReportTitle.Create(Page1);

Band.Height := 20;

Memo := TfrxMemoView.Create(Band);

Memo.SetBounds(10, 0, 100, 20);

Memo.Text := 'This memo is created in code';

end.

C++ Script:

TfrxReportTitle Band;

TfrxMemoView Memo;

{

Band = TfrxReportTitle.Create(Page1);

Band.Height = 20;

Memo = TfrxMemoView.Create(Band);

Memo.SetBounds(10, 0, 100, 20);

Memo.Text = "This memo is created in code";

}

Wir starten den Report:

Beachten Sie das die Objekte des Reports nicht zerstört werden müssen. Dies ist nicht notwendig, da FastReport diese automatisch zerstört nachdem der Report fertig ist.


Kreuztabellen (Cross-tab Objekt)

Dieser Art des Report hat eine Tabellenstruktur, d.h. er besteht aus Zeilen und Spalten, wobei man nicht genau weiß wieviele Zeilen und Spalten enthalten sein werden. Deswegen wächst der Report nicht nur nach unten, wie die schon betrachteten Reporttypen, sondern auch zur Seite. Ein typisches Beispiel eines solchen Reportes sieht so aus:

Schauen wir uns die Elemente der Tabelle an:

In der Grafik sehen wir eine Tabelle mit zwei Zeilen und vier Spalten. Hier stellen a und b, die Zeilenbezeichnungen, 1,2,3,4 die Spaltenbezeichnungen und a1...a4, b1...b4 usw. die einzelnen Zellen dar. Um solch einen Report erstellen zu können benötigen wir nur einen Datensatz (die Anfrage oder Tabelle), welcher drei Felder und folgende Daten enthält:

a1a1

a2a2

a3a3

a4a4

b1b1

b2b2

b3b3

b4b4

Wie man sieht, enthält das erste Feld die Zeilennummer, das zweite die Spaltennummer und das dritte den Inhalt der Überkreuzung (Zeilen-, und Spaltennummer). Beim Erstellen des Reports konstruiert FastReport die Tabelle im Speicher und füllt diese mit Daten. Sollten die eingegebenen Zeilen-, Spaltennummern nicht vorhanden sein, so wird die Tabelle dynamisch vergrößert.

Die Spalten können mehr als nur eine Ebene haben. Betrachten wir folgendes Beispiel:

Hier besteht die Spaltennummer (Index) aus zwei Ebenen. Dieser Report benötigt folgende Daten:

a101a10.1

a102a10.2

a201a20.1

a202a20.2

b101b10.1

b102b10.2

b201b20.1

b202b20.2

Hier enthält das erste Feld wie vorhin die Zeilenbezeichnung, das zweite und dritte Feld den Spaltenindex. Das letzte Feld enhält den Inhalt der Zellen. Um zu verstehen wie FastReport eine Tabelle mit komplexen Spaltenbezeichnungen erstellt, betrachten wir folgende Grafik:

Unsere Tabelle sah vor dem Bearbeiten ungefähr so aus. Während der Bearbeitung verbindet FastReport die Spaltenköpfe und mit den Werten der entsprechenden Ebene.

Das folgende Element der Tabelle zeigt Zwischenergebnisse und Endergebnisse an, wie die folgende Grafik zeigt:

Dieser Report wird mit denselben Datenerstellt wie der vorhergehende. Die grauen Spalten in der Grafik werden automatisch berechnet.


Die Erstellung einer Kreuztabelle (Cross-tab Objekt)

Gehen wir von der Theorie zur Praxis über. Erstellen wir eine einfache Kreuztabelle. Diese soll das Gehalt der Mitarbeiter für die letzten vier Jahre anzeigen. Wir benötigen dafür die Tabelle "crosstest", welche im Ordner FastReport DEMOS\MAIN enthalten ist. Die Tabelle enthält folgende Daten:

NameYearSalary

Ann19993300

Ben20022000

….

Wie üblich erstellen wir ein neues Projekt in Delphi. In die Form fügen wir die Komponenten TTable, TfrxDBDataSet, TfrxReport ein und stellen diese wie folgt ein:

Table1:

DatabaseName = 'c:\Program Files\FastReports\FastReport 3\Demos\Main'

TableName = ' crosstest.db'

Selbstverständlich muss der Wert der Eigenschaft DatabaseName, dem Pfad zu Ihrem Ordner FastReport entsprechen!

frxDBDataSet1:

DataSet = Table1

UserName = 'SimpleCross'

Um Kreuztabellen konstruieren zu können, müssen Sie die Komponente TfrxCrossObject [image] aus dem Satz der FastReport Komponenten verwenden. Legen Sie diese einfach auf die Seite, man muss nichts einstellen. In die Liste "uses" Ihres Projektes wird das Modul frxCross hinzugefügt, dieses besitzt alle benötigten Funktionalitäten.

Gehen wir in den Reportdesigner. Als erstes verknüpfen wir die Datenquelle im Menü "Report|Daten...". Auf das Blatt legen wir nun das Objekt "Datenbank Cross-tab Objekt" 159 :

Alle Einstellungen werden mit dem Editor des Objektes gemacht. Diesen rufen wir über den Doppelklick auf:

screenshot - 18.05.2009 , 16_56_20

Die Zahlen bedeuten:

1 Drop-Down-Leste der vorhandenen Datenquellen;

2 die Liste der Felder in der Datenquelle; Diese können nach 3, 4, 5 rübergezogen werden;

3 die Liste der Felder, die die Kopfzeile darstellen werden;

4 die Liste der Felder, die die Spaltenüberschriften darstellen werden;

5 die Liste der Felder, die die Zellen der Tabellen darstellen werden;

6 hier wird die Struktur der zukünftigen Tabelle angezeigt;

7 die Objekteinstellungen.

Wie man sieht wird hier nur mit der Maus gearbeitet. In unserem Fall werden nur die Felder aus Liste 2 in die Listen 3, 4, 5 rübergezogen. Mehr machen wir fürs erste nicht und schließen den Editor mit OK. Jetzt sehen wir, dass das Objekt diese Struktur auf der Reportseite annimmt:

Wenn wir den Report nun starten, erscheint folgendes:


Aussehen der Tabelle

Fahren wir fort das Objekt näher kennenzulernen. Als erstes sollten wir die Farbe der Überschriften ändern und die englischen Bezeichnungen ins deutsche übersetzen. Dies ist ganz einfach. Um die Farbe zu wechseln, klicken Sie auf "Year", "Name", "Grand Total" und wählen die benötigte Farbe mit [image] auf dem Instrumentenpanell aus. Folgendes sollte passieren:

Man kann auich vorgefertigte Stile verwenden. Hierfür gehen Sie in den Objekteditor und klicken auf den Button "Stil auswählen":

Um den Text der Überschriften zu ändern, klicken Sie doppelt auf die Zelle. Es erscheint der uns bekannte Texteditor, hier wählen wir den gewünschten Text. Danach sieht unser Objekt so aus:

Jetzt müssen wir nur noch das Format eingeben, in welchem die Werte angezeigt werden sollen. Dazu klicken Sie auf die erste Zelle (wo sich Year und Name kreuzen) und rufen das Kontextmenü mit einem Rechtsklick der Maus. Dann wählen Sie "Formatieren...".

Hier wählen Sie das benötigte Format:


Die Verwendung von Funktionen

In unserem Beispiel haben wir in der Zeile "Summe" das Gehalt der letzten vier Jahre. Außer der Summe kann man folgende Funktionen verwenden:

MIN Minimaler Wert

MAX maximaler Wert

AVG Mittelwert

COUNT Anzahl der Werte

Lassen Sie uns die Funktion Min ausprobieren. Öffnen wir den Editor des Cross-Tab Objektes und klicken auf das Feld "Salary" im Bereich der Drop-Down-Liste.

Wählen Sie im Menü die Funktion MIN aus. Jetzt können Sie den Text der Zelle von "Summe" in "Minimum" abändern. Der Report sieht nun wie folgt aus:


Sortieren der Werte

Standardmäßig sind die Werte der Zeilen und Spalten aufsteigend sortiert. Handelt es sich dabei um Zahlen so werden diese der Höhe nach sortiert. Bei Text verwendet man die alphabetische Reihenfolge. Das Sortieren kann für jede Zeile und Spalte separat eingestellt werden. Folgende Arten der Sortierung sind möglich: aufsteigend, absteigend oder keine Sortierung. Im letzten Fall werden die Werte der Zeilen/Spalten so angezeigt, wie sie eingetragen werden.

Ändern wir die Sortierung der Spalten in unserem Beispiel. Die Jahre sollen absteigend sortiert werden. Wir gehen in den Editor des Cross-tab Objektes und wählen das Spaltenelement "Year" aus und klicken, um die Sortierung zu ändern, auf den Pfeil nach unten:

Danach schließen wir den Editor und starten den Report. Dieser sieht jetzt wie folgt aus:


Tabelle mit zusammengesetzten Kopfzeilen

Unser vorhergehendes Beispiel enthielt nur einen Wert im Spaltenkopf bzw. Zeilenkopf. Betrachten wir nun am Beispiel, die Erstellung einer Tabelle welche zusammengesetzte Kopfzeilen besitzt (zwei und mehr Überschriften). Die Tabelle enthält folgende Daten:

NameYearMonthDaysSalary

Ann1999231000

Ben2002152000

Es sind zwei Felder hinzugekommen Month und Days. Diese enthalten die Monatsnummer und die Tage an denen gearbeitet worden ist. Mit diesen Daten kann man schon einige Reporte erstellen z. B. das Gehalt der Mitarbeiter für die Jahre mit der Monatseinteilung.

Welches Aussehen soll unser Report besitzen? Er soll ähnlich dem Report aus dem vorherigen Beispiel sein, aber zusätzlich eine Monatseinteilung der Jahre besitzen. Deswegen stellen wir das "Cross-tab Objekt" auf die selbe Weise ein und fügen in den Spaltenkopf das Feld "Month" hinzu:

screenshot - 18.05.2009 , 17_04_37

Falls gewünscht, kann man die Farben ändern und die englischen Ausdrücke "Grand total" und "Total" durch "Summe" ersetzen. Wir erhalten folgenden Report:

Beachten Sie, dass FastReport automatisch eine Spalte mit der Zwischensumme eines jeden Jahres eingefügt hat. Diese Option ist über den Editor des Cross-tab Objekts erreichbar. Man markiert das Element "Year" in der Spalte und setzt/entfernt das Häkchen bei "Zwischensumme":

screenshot - 18.05.2009 , 17_05_52

Ebenfalls kann man erwähnen, dass das Zwischenergebnis beim untersten Element der Spalte fehlt (auch falls es das einzige Element ist). In unserem Beispiel sind die Zwischenergebnisse nach jedem Monat nicht nötig.

Betrachten wir eine weitere Möglcihkeit der Darstellung der Zwischenergebnisse. In unserem Beispiel wäre es besser statt "Summe" die Überschrift "Summe für 2000". Dies ist einfach: markieren Sie das gewünschte Objekt und schreiben Sie folgenden Text rein:

Summe für [Value]

Bei der Erstellung wird der Ausdruck "Value" durch den Wert aus der darüberliegenden Kopfzeile ersetzt:


Zellengröße

In der vorhergehenden Grafik sieht man, dass FastReport automatisch die Breite der Zellen anpasst und zwar so, das die längsten Zeilen reinpassen. In manchen Fällen ist das nicht erwünscht, da bei sehr langen Zeilen das Aussehen der Tabelle darunter leidet. Was kann man in solch einen Fall machen? Betrachten wir drei Beispiele der Steuerung der Größenanpassung der Zellen.

Die erste Variante ist es, einen Bruch der Zeile in den Text des Objektes mit den Zwischenergebnissen einzusetzen, d.h. eine Zeile einfügen:

Summe

für [Value]

Wir sehen die Tabelle sieht jetzt viel besser aus:

Diese Methode kann man aber auch nicht immer verwenden, da die Werte der Zeilen/Spalten auch zu lang sein können und die Trennung nicht im nachhinein manuell eingefügt werden kann. Die zweite Methode, ist die Nutzung der Eigenschaften MinWidth und MaxWidth (minimale und maximale Breite der Zellen selbst). Beide Eigenschaften sind nur über den Objektinspektor erreichbar.

Standardmäßig ist der Wert MinWidth = 0 und MaxWidth = 200. Dies ist in den meisten Fällen ausreichend. Sie können diese jedoch verändern, falls an die Tabellen besondere Ansprüche gestellt werden.

In unserem Beispiel kann man MinWidth = MaxWidth = 50 eingeben, d.h. die Breite der Zelle soll in jedem Fall 50 Pixel betragen. Ist die Zelle kleiner, so wird sie auf diese Breite gedehnt. Ist sie größer, so richtet sie sich nach MaxWidth aus und der Text wird mit einzelnen Wörtern übertragen. Was so aussieht:

Jetzt die dritte Methode, in welcher man selbstständig die benötigten Maße einstellt. Hierfür deaktivieren wir die Eigenschaft "Größe automatisch" im Objekteditor (AutoSize im Inspektor). Jetzt können die Maße der Elemente in der Tabelle manuell verändert werden. Dazu ziehen Sie die Maus über die einzelnen Elemente, der Mauszeiger ändert dabei seine Form und erlaubt die Höhe und Breite zu ändern. Hier ein Beispiel dazu:

Beachten Sie, dass das Deaktivieren der Eigenschaft "Größe automatisch" dazu führt, dass die Maße der Zellen nicht mehr automatisch angepasst werden. Falls Sie die Breite der Zelle zu klein einstellen, so wird der Text einfach abgeschnitten:

Sollte dies passieren, erhöhen Sie die Maße der betroffenen Zellen.


Farbliche Hervorhebung der Werte

Oft ist es notwendig bestimmte Werte in einer anderen Farbe der Schrift oder des Hintergrunds darzustellen. Wir hatten schon eine ähnliche Aufgabe, betrachtet am Beispiel des Reportes mit Gruppen. Damals verwendeten wir das Hervorheben unter bestimmten Bedingungen des Objektes "Text". Dies wollen wir auch jetzt anwenden.

Betrachten wir das Hervorheben an unserem Beispiel. Gehen wir davon aus das ein Wert über 3000 in roter Schrift dargestellt werden muss. Wir klicken auf das Objekt das die Tabellenzelle darstellt und drücken auf den Button [image] auf den Instrumentenpanell. Es öffnet sich der Editor der Hervorhebung und hier trägt man folgende Bedingung ein:

Value > 3000

screenshot - 18.05.2009 , 17_10_33

Mehr braucht man nicht. Schließen wir den Editor mit OK und starten den Report:

Falls nötig, kann man auf diese Weise die Spalten-/Zeilensummen hervorheben.


Steuerung der Kreuztabelle aus dem Script

Falls die visuellen Möglichkeiten der Tabelleneinstellungen nicht ausreichen, kann man das Script nutzen, um Feineinstellungen des Tabellenäußeren vorzunehmen. Das "Cross-tab Objekt" besitzt folgende Ereignisse:

Ereignis Beschreibung

OnAfterPrint Ereignis wird nach dem Druck der Tabelle aufgerufen.

OnBeforePrint Ereignis wird vor dem Druck der Tabelle aufgerufen.

OnCalcHeight Ereignis wird vor dem Berechnen der Zeilenhöhe der Tabelle aufgerufen. Der Bearbeiter des Ereignisses gibt die eingegebene Höhe wieder oder 0 um die Zeile zu verbergen.

OnCalcWidth Ereignis wird vor dem Berechnen der Spaltenbreite der Tabelle aufgerufen. Der Bearbeiter des Ereignisses gibt die eingegebene Breite wieder oder 0 um die Spalte zu verbergen.

OnPrintCell Ereignis wird vor dem Anzeigen der Zellen der Tabelle aufgerufen. Der Bearbeiter kann das Format und den Inhalt ändern.

OnPrintColumnHeader Ereignis wird vor dem Anzeigen der Spaltenköpfe der Tabelle aufgerufen. Der Bearbeiter kann das Format und den Inhalt der Spaltenköpfe ändern.

OnPrintRowHeader Ereignis wird vor dem Anzeigen der Zeilenköpfe der Tabelle aufgerufen. Der Bearbeiter kann das Format und den Inhalt der Zeilenköpfe ändern.

In den Ereignissen kann man folgende Methoden des "Cross-tab Objektes verwenden":

Methode Beschreibung

function ColCount: Integer Zählt die Anzahl der Spalten in der Tabelle.

function RowCount: Integer Zählt die Anzahl der Zeilen in der Tabelle.

function IsGrandTotalColumn(Index: Integer): Boolean Zeigt True an, falls die angegebene Spalte eine Summenspalte ist.

function IsGrandTotalRow(Index: Integer): Boolean Zeigt True an, falls die angegebene Zeile eine Summenzeile ist.

function IsTotalColumn(Index: Integer): Boolean Zeigt True an, falls die angegebene Spalte eine Spalte mit Zwischensummen ist.

function IsTotalRow(Index: Integer): Boolean Zeigt True an, falls die angegebene Zeile eine Zeile mit Zwischensummen ist.

procedure AddValue(const Rows, Columns, Cells:arrayof Variant) Fügt einen Wert in die Tabelle ein.

Betrachten wir am Beispiel, wie man den Hintergrund der dritten Spalte hervorheben kann (in unserem Beispiel sind es die Daten des November 1999). Wir markieren die Kreuztabelle und erstellen den Bearbeiter des Ereignisses OnPrintCell:

Pascal script:

procedure Cross1OnPrintCell(Memo: TfrxMemoView;

RowIndex, ColumnIndex, CellIndex: Integer;

RowValues, ColumnValues, Value: Variant);

begin

if ColumnIndex = 2then

Memo.Color := clRed;

end;

C++ Script:

void Cross1OnPrintCell(

TfrxMemoView Memo,

int RowIndex,

int ColumnIndex,

int CellIndex,

Variant RowValues,

Variant ColumnValues,

Variant Value)

{

if (ColumnIndex == 2) { Memo.Color = clRed; }

}

Wir erhalten folgendes Ergebnis:

Um den Spaltenkopf hervorzuheben, erstellen wir einen Bearbeiter des Ereignisses OnPrintColumnHeader:

Pascal script:

procedure Cross1OnPrintColumnHeader(Memo: TfrxMemoView;

HeaderIndexes, HeaderValues, Value: Variant);

begin

if (VarToStr(HeaderValues[0]) = '1999') and

(VarToStr(HeaderValues[1]) = '11') then

Memo.Color := clRed;

end;

C++ Script:

void Cross1OnPrintColumnHeader(

TfrxMemoView Memo,

Variant HeaderIndexes,

Variant HeaderValues,

Variant Value)

{

if ((VarToStr(HeaderValues[0]) == "1999") &&

(VarToStr(HeaderValues[1]) == "11"))

{

Memo.Color = clRed;

}

}

Das Resultat:

Klären wir die Arbeitsweise der Scripte. Der Bearbeiter des Ereignisses OnPrintCell wird vor dem Druck der Zelle, welche in der Tabelle ist, aufgerufen. Beim Druck der Zellen der Spaltenköpfe der Tabelle werden die Bearbeiter OnPrintColumnHeader oder OnPrintRowHeader aufgerufen. Dazu wird in den Bearbeiter OnPrintCell ein Link zum Objekt "Text" erstellt. Dieser stellt die Zellen der Tabelle (Parameter Memo) und die Adresse der Zellen in zwei Varianten dar: Zeilen-, Spalten-, Zellennummer (die letzte aktuell, falls Sie in der Tabelle Zellen mit mehreren Ebenen haben) in Parametern RowIndex, ColumnIndex, CellIndex entsprechend. Die zweite Variante der "Adresse", sind die Parameter RowValues und ColumnValues. Das Parameter Values stellt den Inhalt der Zelle dar.

Um eine "Adresse" zu spezifizieren, können Sie sowohl die erste Variante (RowIndex, ColumnIndex), als auch die zweite Variante (RowValues, ColumnValues) verwenden. Diese ist in unserem Beispiel besser. Wir wollten in unserem Fall die dritte Spalte hervorheben, deswegen analysieren wir am besten die erste Variante. Da die Nummerierung der Spalten und Zeilen bei 0 beginnt, hilft die Überprüfung ColumnIndex = 2 uns, die dritte Spalte zu ermitteln. Man kann auch anders vorgehen und die Spalte anhand der Daten ermitteln (wir benötigen den 11 Monat 1999):

Pascal script:

procedure Cross1OnPrintCell(Memo: TfrxMemoView;

RowIndex, ColumnIndex, CellIndex: Integer;

RowValues, ColumnValues, Value: Variant);

begin

if (VarToStr(ColumnValues[0]) = '1999') and

(VarToStr(ColumnValues[1]) = '11') then

Memo.Color := clRed;

end;

C++ Script:

void Cross1OnPrintCell(

TfrxMemoView Memo,

int RowIndex,

int ColumnIndex,

int CellIndex,

Variant RowValues,

Variant ColumnValues,

Variant Value)

{

if ((VarToStr(ColumnValues[0]) == "1999") &&

(VarToStr(ColumnValues[1]) == "11"))

{

Memo.Color = clRed;

}

}

Die Werte, die in den Parametern RowValues und ColumnValues sind Reihen des Types "Variant" mit einer Nullbasis. Das Nullelement ist der Wert der obersten Ebene im Tabellenkopf, das erste Element der Wert der nächsten Ebene usw. In unserem Fall ist ColumnValues[0] die Jahre und ColumnValues[1] die Monate.

Wozu benötigt man VarToStr? Dies garantiert die Fehlerfreiheit bei der Konvertierung der Typen. Bei Operationen des Typs Variant versucht FastReport die Zeilen automatisch im Format "Zahl" darzustellen. In unserem Fall würde das zu einem Fehler führen, wenn die Werte der Spalten 'Total' und 'Grand Total' angezeigt werden sollen.

Der Bearbeiter des Ereignisses OnPrintColumnHeader wird beim Druck der Zellen des Spaltenkopfes aufgerufen. Die Auswahl der Parameter ist ähnlich der Bearbeiter OnPrintCell, hier jedoch wird die "Adresse" der Zelle (Parameter HeaderIndexes, HeaderValues) anders transferiert. Der Parameter HeaderValues zeigt dieselben Werte wie die Parameter ColumnValues und RowValues im Bearbeiter OnPrintCell. Der Parameter HeaderIndexes ist ebenfalls eine Reihe des Types Variant und enthält die "Adresse" der Zelle des Kopfes in einer anderen Form. Das Nullelement ist die Reihennummer der obersten Ebene, das erste Element die Nummer der nächsten Ebene usw. Das Prinzip der Nummerierung der Zellen wird verständlich, wenn man die Grafik betrachtet:

In unserem Beispiel ist es einfacher die Werte HeaderValues zu analysieren, aber man kann auch den folgenden Bearbeiter schreiben:

Pascal script:

procedure Cross1OnPrintColumnHeader(Memo: TfrxMemoView;

HeaderIndexes, HeaderValues, Value: Variant);

begin

if (HeaderIndexes[0] = 0) and (HeaderIndexes[1] = 2) then

Memo.Color := clRed;

end;

C++ Script:

void Cross1OnPrintColumnHeader(

TfrxMemoView Memo,

Variant HeaderIndexes,

Variant HeaderValues,

Variant Value)

{

if ((HeaderIndexes[0] == 0) && (HeaderIndexes[1] == 2)) { Memo.Color = clRed; }

}

Mit Hilfe der Bearbeiter der Ereignisse OnCalcWidth und OnCalcHeight kann man die Breite und Höhe der Zeilen/Spalten steuern. Zeigen wir das an einem Beispiel: wir vergrößern die Breite der Spalte, welche 11 Monat 1999 entspricht. Hierfür erstellen wir Bearbeiter des Ereignisses OnCalcWidth:

Pascal script:

procedure Cross1OnCalcWidth(ColumnIndex: Integer;

ColumnValues: Variant; var Width: Extended);

begin

if (VarToStr(ColumnValues[0]) = '1999') and

(VarToStr(ColumnValues[1]) = '11') then

Width := 100;

end;

C++ Script:

void Cross1OnCalcWidth(

int ColumnIndex,

variant ColumnValues,

Extended &Width)

{

if ((VarToStr(ColumnValues[0]) == "1999") &&

(VarToStr(ColumnValues[1]) = "11"))

{

Width = 100;

}

}

Das Resultat:

Um die Spalte zu verbergen, reicht es aus Width := 0 einzustellen. Beachten Sie, dass die Summen nicht neu berechnet werden, da die Matrix schon mit Werten gefüllt worden ist.


Farbliche Hervorhebung der Werte

The user can adjust width and height of the tables rows and columns using the "OnCalcWidth" and "OnCalcHeight:" events handlers. Let us show how to increase width of the column, which corresponds to the 11th month of 1999 by the following example. To do this, create the "OnCalcWidth" events handler:

Pascal script:

procedure Cross1OnCalcWidth(ColumnIndex: Integer;

ColumnValues: Variant; var Width: Extended);

begin

if (VarToStr(ColumnValues[0]) = '1999') and

(VarToStr(ColumnValues[1]) = '11') then

Width := 100;

end;

C++ Script:

void Cross1OnCalcWidth(

int ColumnIndex,

variant ColumnValues,

Extended &Width)

{

if ((VarToStr(ColumnValues[0]) == "1999") &&

(VarToStr(ColumnValues[1]) = "11"))

{

Width = 100;

}

}

And the result would appear as follows:

In our example, to hide a column, it is enough to return the Width := 0. Note, that the sums are not recalculated at the same time, since the matrix is already full of values at this time.


Manuelles Ausfüllen der Tabelle

Wie wir bereits wissen, gibt es 2 Arten der Kreuztabelle: die Objekte "Datenbank Cross-tab Objekt" und "Cross-tab Objekt" Bis jetzt haben wir nur mit dem ersten Objekt gearbeitet. Dieses wird an die Daten der DB-Tabelle geknüpft und wird beim Start des Reports automatisch mit Daten gefüllt. Betrachten wir nun das zweite Objekt "Cross-tab Objekt".

Dieses Objekt ist nicht mit Daten der Datenbank verknüpft. Sie müssen diese selber in die Tabelle eintragen. Das Objekt hat einen ähnlichen Editor, hier wählen Sie aber die Anzahl Zeilen, der Spalten und der Zellen:

screenshot - 18.05.2009 , 17_15_14

Betrachten wir die Arbeit mit dem Objekt "Cross-tab" am Beispiel. Wir legen auf das Blatt des Reportes das Objekt und stellen die Eigenschaften wie in der folgenden Grafik ein: die Anzahl der Ebenen im Zeilenkopf 1, im Spaltenkopf 2, in Zellen 1. Um die Tabelle mit Daten zu füllen, nutzen wir den Bearbeiter des Ereignisses OnBeforePrint des Objektes:

PascalScript:

procedure Cross1OnBeforePrint(Sender: TfrxComponent);

begin

with Cross1 do

begin

AddValue(['Ann'], [2001, 2], [1500]);

AddValue(['Ann'], [2001, 3], [1600]);

AddValue(['Ann'], [2002, 1], [1700]);

AddValue(['Ben'], [2002, 1], [2000]);

AddValue(['Den'], [2001, 1], [4000]);

AddValue(['Den'], [2001, 2], [4100]);

end;

end;

C++ Script:

void Cross1OnBeforePrint(TfrxComponent Sender)

{

Cross1.AddValue(["Ann"], [2001, 2], [1500]);

Cross1.AddValue(["Ann"], [2001, 3], [1600]);

Cross1.AddValue(["Ann"], [2002, 1], [1700]);

Cross1.AddValue(["Ben"], [2002, 1], [2000]);

Cross1.AddValue(["Den"], [2001, 1], [4000]);

Cross1.AddValue(["Den"], [2001, 2], [4100]);

}

Im Bearbeiter ist es notwendig die benötigten Daten mit Hilfe der Methode TfrxCrossView.AddValue einzufügen. Diese Methode besitzt drei Parameter und jedes ist eine Reihe des Types Variant. Der erste Parameter, ist der Wert der Zeile, der zweite der Wert der Spalte und der dritte stellt den Wert der Zellen dar. Beachten Sie, dass die Anzahl der Werte in jeder Reihe der Einstellungen des Objektes entsprechen muss! In unserem Beispiel besitzt das Objekt eine Ebene im Kopf der Zeilen, zwei Ebenen im Kopf der Spalten und eine Ebene in den Zellen. Entsprechend fügen wir in AddValue einen Wert für die Zeilen, zwei Werte für die Spalten und einen Wert für die Zellen hinzu.

Starten wir den Report, sehen wir nun folgendes:

Die Methode AddValue kann man genauso verwenden für das Objekt " Datenbank Cross-tab Objekt". Dadurch kann man in die Kreuztabelle Daten eintragen, die nicht in der verknüpften Datenquelle vorhanden sind. Sind die Daten vorhanden, so werden diese hinzuaddiert.


Hinzufügen von Objekten in die Tabelle

In die Tabelle können zusätzliche Objekte eingefügt werden. Wozu braucht man das? Man kann z. B. bestimmte Werte in den Zellen damit grafisch hervorheben. Zwar kann man dazu auch das Hervorheben unter bestimmten Bedingungen verwenden, aber das reicht nicht immer aus.

Betrachten wir ein Beispiel. Jeder Wert in den Zellen soll zusätzlich einen kleinen Balken erhalten, welcher die Höhe des Gehaltes anzeigt. Wir erhalten folgendes:

In rot werden Werte unter 100 angezeigt, in gelb die weniger 3000 und in grün die Werte über 3000.

Fangen wir mit der Erstellung des Reports an. Legen wir das Objekt "Datenbank Cross-tab Objekt" auf das Blatt und stellen es wie folgt ein:

screenshot - 18.05.2009 , 17_16_48

Jetzt stellen wir das Erscheinungsbild ein. Hierzu wählen wir eine Farbe für die Köpfe, ändern die englischen Bezeichnungen in deutsche (Gehalt, Mitarbeiter, Jahr, Summe) und deaktivieren die Eigenschaft "Größe automatisch" (AutoSize). Als Resultat erhalten wir folgende Tabelle:

Nun fügen wir die Elemente in die Tabelle ein, die den Balken darstellen sollen. Wählen Sie "Zeichnen/Rechteck" im Objektenpanell aus und legen diesen in die Zelle:

screenshot - 18.05.2009 , 17_20_22

Jetzt erstellen wir ein Script, das die nötige Anzahl der Rechtecke einfügt und diese in der gewünschten Farbe anzeigt. Wählen Sie die Zelle an und erstellen einen Bearbeiter des Ereignisses OnBeforePrint:

Im Bearbeiter schreiben wir folgendes (beachten Sie Objektbezeichnungen, die Objekte in der Tabelle haben genau die Namen):

procedure DBCross1Cell0OnBeforePrint(Sender: TfrxComponent);

begin

// Value - aktueller Wert der Zelle

if Value < 100then

begin

// das ist das erste Objekt

DBCross1Object1.Color := clMaroon; // rot

// das ist das zweite Objekt

DBCross1Object2.Color := clWhite;

// das ist das dritte Objekt

DBCross1Object3.Color := clWhite;

end

elseif Value < 3000then

begin

DBCross1Object1.Color := $00CCFF; // gelb

DBCross1Object2.Color := $00CCFF;

DBCross1Object3.Color := clWhite;

end

else

begin

DBCross1Object1.Color := $00CC98; // grün

DBCross1Object2.Color := $00CC98;

DBCross1Object3.Color := $00CC98;

end;

end;

Wenn wir den Report nun starten, sehen wir die am Anfang gezeigte Tabelle.


Weitere nützliche Einstellungen

Betrachten wir weitere Tabelleneinstellungen, die uns nützlich sein können. Alle diese Einstellungen sind im Editor des Objektes erreichbar.

screenshot - 18.05.2009 , 17_22_43

Die obere Gruppe der Einstellungen zeigt oder verbirgt verschiedene Elemente der Tabelle.

Die Option "Größe automatisch" haben wir schon kennen gelernt. Diese deaktiviert die automatische Anpassung der Tabelle und erlaubt die manuelle Einstellung.

Die Option "Umrandung der Zellen" fügt äußere Rahmenlinien den Zellen hinzu. Man kann damit einen Rahmen um den kompletten Zellenblock machen (nicht um die Tabelle!). Hier ein Beispiel (alle Rahmenlinien, bis auf den äußeren Rahmen, sind deaktiviert):

Die Option "Druckrichtung erst nach unten, dann gegenüber" steuert die Verteilung einer großen Tabelle auf mehrere Seiten. Hier ein Beispiel einmal mit der aktivierten Option und einmal ohne (beachten Sie die Nummerierung der Seiten).

1) " Druckrichtung erst nach unten, dann gegenüber " - aktiviert:

2) " Druckrichtung erst nach unten, dann gegenüber " - deaktiviert:

Die Option "Kopf auf neuer Seite wiederholen" bestimmt, ob die Köpfe der Tabelle auf jeder neuen Seite der Tabelle gedruckt werden sollen.

Die Option "Zellen Seite an Seite" wird verwendet, wenn in der Zelle mehrere Ebenen vorhanden sind. Die Option bestimmt, ob die Zellen nebeneinander gedruckt werden sollen (in einer Zeile) oder untereinander.

Die Option "Verbinde gleiche Zellen" erlaubt zwei oder mehr Zellen in einer Zeile zusammenzufassen, wenn sie dieselben Werte haben. Hier ein Beispiel:

Weitere Einstellungen sind im Objektinspektor enthalten:

- AddWidth, AddHeight der freie Platz der hinzugefügt wird beim Berechnen der Zellenmaße. Diese Eigenschaft vergrößert die Zelle auf die gewünschten Maße. Die Eigenschaft AutoSize muss gleich True sein;

- NextCross Hinweis zum nächstem "Cross-tab Objekt", wird rechts neben den Tabellendaten angezeigt;

- NextCrossGap der Abstand zwischen zwei Tabellen.


Grafiken, Diagramme

FastReport erlaubt es in den Report Diagramme einzufügen.

Betrachten wir die Erstellung eines einfachen Diagramms am Beispiel. Dazu benötigen wir die Tabelle country aus dem Komplekt der Demonstrationsdatenbank DBDEMOS. Die Tabelle enthält Daten über ein Land, dessen Fläche und Bevölkerung.

NameAreaPopulation

Argentina2 777 81532 300 003

Bolivia1 098 5757 300 000

….

Erstellen wir ein neues Projekt in Delphi. Wir legen auf die Form die Komponenten TTable, TfrxDBDataSet, TfrxReport und stellen diese wie folgt ein:

Table1:

DatabaseName = 'DBDEMOS'

TableName = 'coutry.db'

frxDBDataSet1:

DataSet = Table1

UserName = 'Country'

Wir öffnen den Reportdesigner und verknüpfen ihn mit der Datenquelle im Fenster "Report|Daten…". Auf das Blatt legen wir das Objekt "Diagram" embim2. Die Maße des Objektes setzen wir auf 18õ8 cm. Um die Einstellungen des Objektes verändern zu können, rufen wir den Editor mit einem Doppelklick der Maus auf.

screenshot - 18.05.2009 , 17_55_50

Die Zahlen in der Grafik bedeuten:

1 Diagrammstruktur. Das Diagramm kann eine oder mehrere Serien (series) enthalten.

2 Objektinspektor. Dieser zeigt die Eigenschaften des gewählten 1 Elementes an. Auf diese Weise können die Feineinstellungen der Eigenschaften vorgenommen werden.

3 das Panell der Vernüpfung der Daten und der Serie, zugänglich nach Auswahl einer Serie im Fenster 1.

Beim ersten Start des Editors sieht das Fenster wie oben dargestellt aus. Das erste was gemacht werden muss, ist das Zufügen einer oder mehrerer Serien (in unserem Beispiel nur eine). Klicken Sie dazu auf den Button [image] und wählen aus der Drop-Down-Liste das Kreisdiagramm (Pie):

Nach dem Hinzufügen der Serie, ist das Panell 3 aktiviert worden. Hier muss eingegeben werden welche Daten bei der Diagrammerstellung verwendet werden sollen. Als erstes wählen wir den Datensatz aus der Drop-Down-Liste "Datensatz". Die Felder "Label" und "Pie" füllen wir auf folgende Weise (diese können ebenfalls über die Drop-Down-Listen gewählt werden):

screenshot - 18.05.2009 , 17_50_42

Die Buttons mit den Pfeilen nach oben und nach unten erlauben es die Serie des Diagrams zu verschieben und geben die Reihenflge der Darstellung vor. Falls nötig kann man den Namen der Serie über einen Klick darauf eingeben.

In unserem Beispiel (mit dem Kreisdiagramm) werden die Werte "Label" für die Beschriftungen verwendet. Für die Erstellung des Diagrames selber werden nur die Werte "Pie" verwendet. Man kann ebenfalls in "Color" für jedes "Stück" des Diagramms die gewünschte Farbe einstellen.

Beenden wir erstmal die Konfiguration und schließen den Editor mit dem Button OK. Nun starten wir den Report:

Was könnte man in diesem Report besser machen? Als erstes wäre es gut die Sortierung absteigen einzustellen. Wir öffnen den Editor des Diagramms erneut und wählen die Serie oben im Fenster aus. Nun müssen wir die Art der Sortierung auswählen:

screenshot - 18.05.2009 , 17_53_54

Wenn wir den Report wieder starten sehen wir, dass die Daten in der Tabelle durchsortiert worden sind.


Begrenzung der Anzahl der Werte im Diagramm

Unser Diagramm sieht überfüllt aus. Zu viele kleine Werte, die im Diagramm sowieso nicht zu sehen sind. Mit FastReport kann man die Mengen der Werte im Diagramm beschränken. Dabei werden alle Werte die nicht eine bestimmte Bedingung erfüllen, zu einem Wert zusammengefasst. Dieser Wert wird dann als Summe angezeigt.

In unserem Beispiel hat das Diagramm 18 Werte, wir wollen nur 8 davon darstellen. Öffnen wir den Editor und geben die Beschränkung ein:

screenshot - 18.05.2009 , 17_57_29

Die Begrenzung wird arbeiten, wenn das Feld "ErsteN Werte" ungleich null ist. Im Feld "ErsteNBeschriftung" muss der Name eingetragen werden, welche gegenüber der Summe stehen soll. Die Art der Sortierung spielt keine Rolle, diese ist absteigend.

Das Resultat sieht so aus:


Weitere nützliche Einstellungen

Betrachten wir weitere Einstellungen, die uns dabei helfen das Erscheinungsbild des Diagramms zu gestalten. Diese Einstellungen kann man nur im Objektinspektor durchführen.

Folgende Grundeigenschaften sind beim Anwählen des Diagramms in der Liste oben anwähbar:

- Gradient Einstellungen für die steigende Hintergrundfüllung. Um diesen anzuzeigen, aktivieren Sie Gradient.Visible.

- Legend Einstellungen des Aussehens der Legende. Wird über Legend.Visible deaktiviert. Verschieben kann man sie über Legend.Alignment.

Haben Sie eine Serie ausgewählt, sind folgende Eigenschaften zugänglich:

- ColorEachPoint markiert jeden Wert in einer anderen Farbe.

- ExplodeBiggest markiert den höchsten Wert (nur beim Kreisdiagramm).

- Marks Einstellungen für das Aussehen der Hilfstexte.

- ValueFormat Zeile der Formatierung der Werte.

Man muss anmerken, dass man alle Möglichkeiten der Diagrammbearbeitung mit dem Paket TeeChart Pro erhält (wird separat erworben). Dieses Paket enthält viele weitere Arten der Diagramme und besitzt Editoren zur bequemen Bearbeitung der Diagramme und Serien. All das erlaubt eine einfache und schnelle Bearbeitung der Diagramme.


Chart with specified values

Im vorherigen Beispiel haben wir ein Diagramm auf Basis der DB-Tabelle erstellt. Man kann aber auch das Diagramm auf eine andere Weise erstellen und zwar indem man die Daten manuell eingibt. Diese Möglichkeit ist praktisch für kleine Diagramme.

Schauen wir uns das ganze an einem Beispiel an. Legen wir ein Diagramm auf das Blatt und gehen in dessen Editor. Als nächstes fügen wir die Serie "Säulendiagramm" ein und konfigurieren die Eigenschaften:

screenshot - 18.05.2009 , 18_03_27

Beim Start des Reports sehen wir folgendes Ergebnis:


Füllen des Diagrammes aus dem Script

Füllen wir das vorhergehende Diagramm mit Daten aus einem Script. Dazu lassen wir im Editor die Felder X und Y leer. Im Script des Reports schreiben wir folgendes:

PascalScript:

begin

Chart1.SeriesData[0].Source1 := 'Januar;Februar;März;April';

Chart1.SeriesData[0].Source2 := '31;28;31;30';

end.

C++Script:

{

Chart1.SeriesData[0].Source1 = "Januar;Februar;März;April";

Chart1.SeriesData[0].Source2 = "31;28;31;30";

}

In diesem Fall erlaubt SeriesData[0] die Eingabe der Parameter der ersten Serie im Diagramm. Hat das Diagramm mehrere Serien, so kann man diese über SeriesData[Nummer_Serie] erreichen.


Drucken von Diagrammen (erstellt in Delphi)

Falls Sie schon ein Diagramm im Code Delphi erstellt haben und dieses in den Report einfügen wollen, so benötigen Sie das Objekt "Grafik". Plazieren Sie das Objekt an dem gewünschten Platz und schreiben folgenden Bearbeiter des Ereignisses TfrxReport.OnBeforePrint:

procedure TForm1.frxReport1BeforePrint(Sender: TfrxReportComponent);

begin

if Sender.Name = 'Picture1'then

TfrxPictureView(Sender).Picture.Assign(

Chart1.TeeCreateMetafile(False,

Rect(0, 0, Round(Sender.Width), Round(Sender.Height))));

end;

wo Picture1 steht, kommt der Name des Objetes "Grafik" rein. Chart1 ist Ihr Delphi Diagramm.


Dot-Matrix Reporte

Bis jetzt haben wir uns Reporte angesehen, die für den Druck auf Standarddruckern (Tinten-, Laserdrucker) bestimmt waren. Das Drucken eines solchen Reportes wird auf einem Nadeldrucker sehr viel Zeit in Anspruch nehmen. Mit FastReport kann man spezielle Reporte extra für Nadeldrucker erstellen. Es werden nur die Standardsymbole der Schrift verwendet, ohne grafische Elemente. Dadurch erfolgt der Druck wesentlich schneller.

Betrachten wir das Erstellen eines Reportes der Art «Liste» bestimmt zum Druck auf einem Nadeldrucker. Wir haben solch einen Report schon eher erstellt s.h. Kapitel «Report «Kundenliste». Wir verwenden für den Report jetzt dieselben Daten.

Nun erstellen wir ein neues Projekt in Delphi und legen auf die Form die Komponenten TTable, TfrxDBDataSet, TfrxReport, TfrxDotMatrixExport und stellen die Egenschaften ein:

TTable:

DatabaseName = 'DBDEMOS'

TableName = 'Customer.db'

TfrxDBDataSet:

DataSet = Table1

UserName = Customers

Wir öffnen den Reportdesigner und wählen den Punkt "Datei|Neu…". Es öffnet sich ein Fenster, in dem sich die Assistenten aufgeführt sind. Wir wählen «Dot-Matrix Report»:

screenshot - 18.05.2009 , 18_06_02

Wenn Sie auf OK gehen erscheint eine leere Seite. Diese ist der Matrixschrift angepasst:

Die Liste der Objekte, welche eingefügt werden können, hat sich verändert. Es sind nun «Band», «Text», «Dot-matrix Linie», «ESC-Befehl», «Unterreport» und «Cross-tab Objekt». Andere Objekte können in einem Matrixreport nicht verwendet werden.

Fügen wir auf die Seite die Bänder Report title, Page header und Master data ein:

Die Objekte "Text" verteilen wir auf die Bänder auf folgende Weise:

Das Prinzip der Objektverteilung ist dasselbe wie auch im Standardreport. Der Unterschied besteht darin, dass die Objekte fest im Netz verankert sind. Für diese kann man keine andere Schriftgröße oder Farbe wählen. Jedoch können bestimmte Eigenschaften der Schrift verändert werden. Wählen Sie das Objekt "Text" an und klicken auf 72.6 im Instrumentenpanell:

screenshot - 18.05.2009 , 18_08_54

Wie man sieht können hier die Eigenschaften eingegeben werden die für das Drucken auf Nadeldruckern speziefisch sind. Diese Eigenschaften besitzt die Seite und alle Matrixobjekte (ausgenommen die Bänder).

Achtung! Im Designer und der Vorschau werden nur die Eigenschaften «Fett», «Kursiv», «Unterstrichen». Zum Drucken werden jedoch alle Eigenschaften verwendet.

Verändern wir das Aussehen des Reportes und geben für die Köpfe «Fett». Der Report ist nun fertig und kann in der Vorschau betrachtet werden:


Cross-tab in dot-matrix

Die Anzahl der Objekte im Matrixreport ist nur auf die beschränkt, die in der Textform dargestellt werden können. Dazu gehört auch das «Cross-òàb Objekt». Betrachten wir die Erstellung solch eines Reports, dies geschieht analog dem im Kapitel «Tabelle mit zusammengesetzten Kopfzeilen» erstellten Report.

Wir führen nun dieselben Schritte durch und rufen den Assistenten "Dot-matrix Report" auf. Auf die Seite legen wir nun die Komponente "Datenbank Cross-tab Objekt" und konfigurieren die Struktur:

screenshot - 18.05.2009 , 18_09_57

Wie man sieht, zeigt der Editor die Struktur der zukünftigen Tabelle schon in der Matrixform. Den Stil der Zellen kann man im Designer durch den Button 73.2 verändern. Die übrigen Arbeitsschritte unterscheiden sich nicht von den oben durchgeführten. Auf dem Bildschirm würde solch ein Report so aussehen:


Dot-matrix reports printing

Um einen Matrixreport im Textmodus drucken zu können (d.h. mit maximaler Geschwindigkeit), muss auf die Seite Ihres Projektes unbedingt die Komponente TfrxDotMatrixExport [image] aus dem Komponentensatz von "FastReport 4.0" gelegt werden. Der Standarddialog zum Drucken ändert sich dabei:

screenshot - 18.05.2009 , 18_11_47

Das Fenster sieht dem Standardfenster ähnlich, es enthält jedoch auch Spezifikationen für Nadeldrucker. Vor dem Drucken muss der ESC-Befehl gewählt werden. Folgende Befehle sind vorhanden:

screenshot - 18.05.2009 , 18_12_29

Auch können folgende Optionen des Druckens eingegeben werden:

- Speichern in Datei bestimmt ob die Daten auf der Festplatte gespeichert werden sollen. Setzt man das Häkchen, wird vor dem Drucken eine Anfrage der Datei erfolgen;

- Seitenbruch bestimmt ob der Befehl «Seitenbruch» erteilt wird, wenn das Ende der Seite erreicht wird. Setzt man das Häkchen nicht, wird auf Rollenpapier gedruckt;

- OEM Codierung bestimmt wie die vertikalen bzw. horizontalen Linien gezeichnet werden. Ist das Häkchen nicht gesetzt, werden die Linien mithilfe der Symbole -, |, + gezeichnet.


"Dot-matrix Befehlsobjekt"

&quot;Dot-matrix Befehlsobjekt&quot;

 Top Letztes Next

Wie wir vorhin beschrieben haben, können Sie folgende Eigenschaften für Dot-Matrix Reporte einstellen:

screenshot - 18.05.2009 , 18_08_54

Dies ist die Standardauswahl, welche von allen Modellen der Nadeldrucker verstanden wird. Außerdem kann ein konkretes Druckermodell Befehle unterstützen, die nicht in der Standardauswahl vorhanden sind z.B. erhöhen auf 20 Zeichen pro Zoll. Um diesen Befehl einzugeben nutzen Sie das «Dot-matrix Befehlsobjekt» .

Man fügt das Objekt auf die gewünschte Stelle der Seite (z.B. oben links oder vor die Objektgruppe, die diese Einstellungen haben sollen). Um den Befehl einzugeben, editieren Sie die Eigenschaft des Objektes im Objektinspektor:

Sie können den Befehl auf zwei Arten erteilen: dezimal (z. B. #27#40) oder hexadezimal (1B28).


Dialogformen

Im Report können neben den Reportseiten, Dialogformen enthalten sein. Um diese zu erstellen verwenden Sie denselben Designer wie den der Seiten. Um eine neue Dialogseite zu erstellen, klicken Sie auf den Button [image] auf der Instrumentenleiste. Eine neue Seite wird dann in den Report eingefügt. Wenn Sie nun auf die Dialogseite wechseln, ändert sich die Arbeitsfläche. Hier können nun Objekte eingefügt werden, die die Steuerungselemente darstellen:

screenshot - 18.05.2009 , 18_18_51


Steuerungselemente

Die Steuerungselemente der Dialogseiten werden durch die Verwendung der Komponente TfrxDialogControls [image] verknüpft aus dem Komponentenset FastReport. Es reicht aus die Komponente auf eine beliebige Seite des Projektes zu legen oder in die Liste uses frxDCtrl einzufügen. Es werden dann folgende Steuerungslemente hinzugefügt:

Element Bezeichnung Beschreibung

TfrxLabelControl Dieses Steuerungselement wird verwendet um Hilfstexte auf der Dialogform anzuzeigen.

TfrxEditControl Mit Hilfe des Steuerungselementes wird eine Textzeile mithilfe der Tastatur eingefügt.

TfrxMemoControl Mit Hilfe des Steuerungselementes werden mehrere Textzeilen mit Hilfe der Tastatur eingefügt.

TfrxButtonControl Dieses Element stellt einen Button dar.

TfrxCheckBoxControl Dieses Element stellt ein Häkchen dar im aktivierten/deaktivierten Zustand. Neben dem Häkchen wird ein Hilfstext angezeigt.

TfrxRadioButtonControl Dieses Element stellt einen Umschalter mit einer abhängigen Fixierung dar. Deswegen wird es nicht alleine verwendet.

TfrxListBoxControl Dieses Element stellt eine Liste mit Zeilen dar und der Möglichkeit eine auszuwählen.

TfrxComboBoxControl Dieses Element stellt eine Drop-Down-Liste mit Zeilen dar und der Möglichkeit eine auszuwählen.

TfrxDateEditControl Dieses Element stellt ein Datumeingabefeld dar, mit einem ausfahrbaren Kalender.

TfrxGroupBoxControl Dieses Element stellt ein Panell mit einem Hilfstext dar, und dient dem Vereinigen mehrerer Steuerungselemente.

TfrxPanelControl Dieses Element stellt ein Panell dar und dient dem Vereinigen mehrerer Steuerungselemente.

TfrxBitBtnControl Dieses Element stellt einen Button mit einer Grafik dar.

TfrxSpeedButtonControl Dieses Element stellt einen Button mit einer Grafik dar.

TfrxMaskEditControl Dieses Element stellt ein Feld zum Einfügen von Informationen in eine Maske dar.

TfrxCheckListBoxControl Dieses Element stellt eine Liste mit Kontrollkästchen dar.

TfrxBevelControl Dieses Element wird zum designender Dialogform verwendet.

TfrxImageControl Dieses Element stellt eine Grafik in den Formaten BMP, ICO, WMF, EMF dar.

Wie man sieht sind die Steuerungselemente denen in Delphi ähnlich. Hilfe zu den Eigenschaften, Ereignissen und Methoden eines jeden Elementes, erhält man in der FastReport-Hilfe


Report "Hello, World!"

Report &quot;Hello, World!&quot;

 Top Letztes Next

Diesmal erstellen wir einen Report, der uns vor dem eigentlichen Report eine Begrüßung anzeigt indem wir eine Dialogform verwenden. Starten wir ein neues Projekt in Delphi und legen folgende Komponenten auf die Seite: TfrxReport, TfrxDialogControls. Durch einen Doppelklick auf die Komponente TfrxReport rufen wir den FastReport Designer auf und fügen in den Report eine Dialogform ein. In die Form fügen wir die Objekte TfrxLabelControl, TfrxButtonControl ein:

Die Objekteigenschaften werden folgendermaßen eingestellt:

TfrxLabelControl:

Caption = 'Hello, World!'

TfrxButtonControl:

Caption = 'OK'

Default = True

ModalResult = mrOk

Jetzt stellen wir die Eigenschaft der Dialogform BorderStyle = bsDialog ein. Wie man sehen kann haben die Steuerungselemente und die Dialogform denselben Satz der Eigenschaften wie auch die entsprechenden Elemente in Delphi.

Nachdem wir die Einstellungen eingestellt haben, kehren wir auf die Reportseite zurück und fügen dort ein Objekt "Text" ein mit einem beliebigen Satz. Starten wir nun den Report und sehen unsere Dialogform:

Wenn man auf OK geht, wird der Report erstellt und angezeigt. Schließt man das Fenster mit X, so wird der Report nicht erstellt. So arbeitet der Algorithmus von FastReport, ein Report wird nur durch klick auf OK erstellt. Deshalb haben wir am Anfang die Eigenschaft ModalResult des Buttons gleich mrOk gestellt.


Einfügen von Parametern und deren Transfer in den Report

Machen wir unser Beispiel komplizierter um zu zeigen auf welche Weise die in der Dialogform enthaltenen Werte in den Report übertragen werden. Dazu verändern wir unsere Dialogform folgendermaßen:

Auf der Reportseite fügen wir das Objekt "Text" mit folgendem Text ein:

You've entered:

[Edit1.Text]

Starten wir den Report und vergewissern uns, dass der eingefügte Parameter im Report angezeigt wird. Analog können auch andere Elemente der Dialogform bearbeitet werden. Jedes Objekt besitzt einen einzigartigen Namen innerhalb des Reports und kann deshalb an einer beliebigen Stelle im Report verwendet werden.


Interaktion der Steuerungselemente

Wenn man Scripte verwendet kann man die Logik der Arbeitsweise der Dialogform leicht nachvollziehen z. B. die Interaktion der Steuerungselemente. Schauen wir uns ein Beispiel an. Modifizieren wir die Dialogform auf folgende Weise:

Nun klicken wir doppelt auf das Objekt "CheckBox", dabei wird ein Bearbeiter des Ereignisses OnClick erstellt und schreiben folgenden Script:

PascalScript:

procedure CheckBox1OnClick(Sender: TfrxComponent);

begin

Button1.Enabled := not CheckBox1.Checked;

end;

C++ Script:

void CheckBox1OnClick(TfrxComponent Sender)

{

Button1.Enabled = !CheckBox1.Checked;

}

Wie man sieht, unterscheidet sich der Code nicht von dem in Delphi verwendeten. Starten wir den Report und sehen, dass der Button darauf reagiert, ob das Häkchen da ist oder nicht.


Verschiedene Dialogformen

Schauen wir uns an wie ein Report mit zwei Dialogformen arbeitet. Erstellen wir einen Report mit zwei Dialogformen und einer Seite:

Wir stellen die Eigenschaften ModalResult (mrOk und mrCancel entsprechend) der Buttons OK und Cancel ein. Jetzt starten wir den Report. Zuerst sollen wir die Fragen des ersten Dialoges beantworten (Name, Kinder ja/nein), danach (nach dem klick auf OK) die des zweiten (Namen der Kinder). Klicken wir auf OK des zweiten Dialoges so wird der Report erstellt. Dies ist die Arbeitsweise des Kerns von FastReport. Die Dialoge werden in der Reihenfolge der Erstellung angezeigt. Der folgende Dialog erscheint dabei nur, wenn man den vorherigen (mit der Eigenschaft ModalResult = mrOk) mit OK schließt. Wird einer der Dialoge abgelehnt (Button Cancel oder mit dem Kreuz oben rechts) so wird die Erstellung des Reports beendet.


Steuerung der Reportformen

Im vorherigen Beispiel werden die Dialogformen angezeigt. Unabhängig davon, ob wir ein Häkchen bei "Have children" gesetzt haben oder nicht. Schauen wir uns an, wie man den zweiten Dialog verbergen kann, falls kein Häkchen gesetzt worden ist. Hierfür erstellen wir einen Bearbeiter OnClick beim Button OK im ersten Dialog (führen Sie einen Doppelklick auf den Button aus, um den Bearbeiter zu erstellen):

PascalScript:

procedure Button1OnClick(Sender: TfrxComponent);

begin

DialogPage2.Visible := CheckBox1.Checked;

end;

C++Script:

void Button1OnClick(TfrxComponent Sender)

{

DialogPage2.Visible = CheckBox1.Checked;

}

Dieser Code verbirgt den zweiten Dialog (DialogPage2), falls man kein Häkchen gesetzt hat. Wenn wir den Report nun starten, sehen wir, dass der Report einwandfrei funktioniert.

Eine andere Möglichkeit der Steuerung der Dialogformen, ist die Verwendung des Ereignisses OnRunDialogs. Um den Bearbeiter dieses Ereignisses zu erstellen, wählen sie das Objekt Report im Reporttree oder im Objektinspektor aus und gehen auf den Tab "Ereignis" im Inspektor. Der Doppelklick auf das Ereignis OnRunDialogs erstellt nun den Bearbeiter:

Im Bearbeiter schreiben wir folgenden Code:

PascalScript:

procedure frxReport1OnRunDialogs(var Result: Boolean);

begin

Result := DialogPage1.ShowModal = mrOk;

if Result then

begin

if CheckBox1.Checked then

Result := DialogPage2.ShowModal = mrOk;

end;

end;

C++Script:

void frxReport1OnRunDialogs(bool &Result);

{

Result = DialogPage1.ShowModal == mrOk;

if (Result)

{

if (CheckBox1.Checked)

Result = DialogPage2.ShowModal == mrOk;

}

}

Der Bearbeiter arbeitet folgendermaßen: wir zeigen den ersten Dialog. Wird dieser mit OK geschlossen, schauen wir uns das Kontrollkästchen CheckBox1 an und zeigen den zweiten Dialog, falls nötig. Gibt der Bearbeiter Result = True wieder, so wird der Report erstellt. Ist Result = False, so wird der Report gestoppt.


Assistenten

Das Komplekt von FastReport enthält einige Assistenten die die Erstellung der Reporte vereinfachen sollen. Die Assistenten sind über das Menü "Datei|Neu..." erreichbar.

screenshot - 18.05.2009 , 18_55_03


Assistenten neuer Reporte

Es gibt 4 Assistenten neuer Reporte:

- Standard Report Assistent

- Dot-Matrix Report Assistent

- Standard Report

- Dot-Matrix Report

Die Assistenten "Standard Report" und "Dot-Matrix Report" erstellen einen leeren Report (für Standarddrucker oder Nadeldrucker über Matrixreporte s.h. nächstes Kapitel), welcher eine Seite enthält.

Die Assistenten "Standard Report Assistent" und "Dot-Matrix Report Assistent" erlauben die Auswahl der Felder, der Gruppen, des Layouts usw. im Report. Betrachten wir die Erstellung eines Reportes mit Hilfe des "Standard Report Assistent" genauer.

Wählen Sie im Menü "Datei|Neu..." und in dem sich öffnendem Fenster den Punkt "Standard Report Assistent" aus. Wir sehen nun das Fenster des Assistenten:

screenshot - 18.05.2009 , 18_51_03

Wie man sieht, besitzt das Fenster mehrere Tabs. Auf dem ersten Tab wählen wir die Datenquelle aus, auf der der Report erstellt werden soll. Hier befinden sich alle uns zur Verfügung stehenden Datenquellen (Komponenten TfrxDBDataSet). Wir können ebenfalls eine neue Datenquelle erstellen (Tabelle oder Abfrage) indem wir die Buttons "Neue Tabelle" oder "Neue Abfrage" anklicken. Es wird der Assistent der neuen Tabelle/Abfrage aufgerufen (dazu später im Kapitel mehr). Wählen wir nun die Datenquelle und klicken den Button "Weiter >>".

Im folgenden Tab müssen wir die Felder auswählen, die im Report erscheinen sollen:

screenshot - 18.05.2009 , 18_52_52

In der Liste links befinden sich die verfügbaren Felder, in der Liste rechts die ausgewählten. Die Felder kann man verschieben, indem man die Pfeile dazwischen verwendet. Mithilfe der Buttons [image] kann die Reinfolge der Felder verändert werden. Fügen wir nun die Felder Company, Contact, Phone, FAX hinzu und klicken auf "Weiter >>".

Im nächsten Tab können Gruppen gebildet werden. Dabei werden in den Report die Bänder Group header, Group footer eingefügt.

screenshot - 18.05.2009 , 18_53_18

Die Bildung der Gruppen ist jedoch nicht notwendig. Klicken wir auf "Weiter >>".

Beim nächsten Tab wählen wir die Ausrichtung der Seite und das Layout:

screenshot - 18.05.2009 , 18_53_49

Das Layout kann in der Tabellen- oder Spaltenform erfolgen. In der Tabellenform bedeutet das, die Felder gehen von links nach rechts. In Spalten bedeutet, die Felder liegen untereinander. Je nach Auswahl des Layouts verändert sich das Bild auf der rechten Seite. Die Option "Felder an Seitenbreite anpassen" verändert die Breite der ausgewählten Felder so, dass alle Felder auf die Seite passen.

Im letzten Tab kann der Stil des Reports ausgesucht werden. Es stehen verschiedene Farbenpaletten der Reportelemente zur Auswahl.

screenshot - 18.05.2009 , 18_54_18

Nach dem Klick auf den Button "Fertig" erstellt der Assistent folgenden Report:

Der Report kann auch gleich im Vorschaufenster betrachtet werden.


Assistent für neue Verbindung

Dieser Assistent erlaubt, in den schon bestehenden Report, ein neue Verbindung zur Datenbank hinzuzufügen. Dies kann nötig sein, wenn Sie im Report Daten aus zwei oder mehr Datenquellen anzeigen möchten. Der Assistent fügt in den Report ein Komponente des Types "ADO Datenbank" hinzu.

screenshot - 18.05.2009 , 19_00_47

Sie müssen die Verbindungszeile hinzufügen ( [image]). Es öffnet sich ein Standardfenster Windows, wo Sie die Art der Verbindung und die Parameter auswählen können. Danach geben Sie den Benutzernamen und das Passwort ein, falls nötig.

Eine neue Verbindung kann ebenfalls erstellt werden, indem man auf das Tab "Data" geht und in den Report die Komponente "ADO Datenbank" hinzufügt.


Assistent für neue Tabellen

Dieser Assistent erlaubt in einen bestehenden Report eine neue Datenquelle einzufügen und zwar eine Tabelle. Achtung: zuerst muss eine Verknüpfung zur Datenbank im Menü"Report|Daten..." hergestellt werden!

screenshot - 18.05.2009 , 19_02_05

Im Fenster des Assistenten müssen Sie den Namen der Tabelle auswählen. Ebenfalls können Bedingungen für das Filtern eingegeben werden z.B.:

(CustNo > 2000) and (CustNo < 3000)

Eine neue Tabelle kann ebenfalls erstellt werden, indem man auf das Tab "Data" geht und die Komponente "ADO Tabelle" in den Report einfügt.


Assistent für neue Abfragen

Dieser Assistent erlaubt in einen bestehenden Report eine neue Datenquelle einzufügen und zwar eine SQL-Abfrage. Achtung: zuerst muss eine Verknüpfung zur Datenbank im Menü"Report|Daten..." hergestellt werden!

screenshot - 18.05.2009 , 19_03_49

Im Fenster des Assistenten tragen Sie die SQL-Abfrage ein. Sie könne ebenfalls die Abfrage mit dem visuellen Query Builder erstellen, indem Sie auf den Button [image] klicken. Der visuelle Query Builder wird später im Kapitel beschrieben.

Eine neue Abfrage kann ebenfalls erstellt werden, indem man auf das Tab "Data" geht und die Komponente "ADO Abfrage" in den Report einfügt.


Query construction

FastReport (Versionen Professional, Enterprise) enthält einen visuellen Query Builder. Dazu verwendet man den FastQueryBuilder, welcher auch als separates Produkt in Ihren Anwendungen verwendet werden kann. Den Query Builder nutzt man um visuelle Textabfragen in SQL zu erstellen. Der Query Builder sieht wie folgt aus:

Die Zahlen bedeuten:

1 - Instrumentenleiste

2 Arbeitsfläche des Designers

3 Liste der verwendbaren Tabellen

4 Parameter der ausgewählten Tabellenfelder

Instrumentenleiste:

- Öffnen SQL Datei

- Speichern der Abfrage (das Schema wird ebenfalls gespeichert)

- leeren der Arbeitsfläche des Designers

- Button Îê. Schließen des Designers mit anschließendem Speichern

- Schließen des Designers ohne zu speichern

Die Arbeitsfläche des Query Builders und die Liste der Tabellen unterstützen Drag&Drop, d.h. um eine Tabelle auf die Arbeitsfläche zu legen, zieht man diese einfach mit der Maus rüber. Die andere Möglichkeit ist die benötigte Tabelle in der Liste doppelt anzuklicken.

Um ein Feld in die Abfrage miteinzubeziehen, reicht es aus, dieses zu markieren:

Markierte Felder erscheinen in der Parametertabelle:

- Visibility bestimmt, ob das Feld später angezeigt werden soll

- Where die Bedingung, ob das Feld ausgewählt werden soll z.B. '> 5'

- Sort Art der Sortierung

- Function bestimmt die Funktion, die angewendet werden soll

- Group die Gruppierung des Feldes

Durch das "Rüberziehen" der Felder zwischen den Tabellen, werden Verbindungen geknüpft (join). Bevor die Verbindungen erstellt werden, wird überprüft, ob die Arten der Felder zusammenpassen. Ist das nicht der Fall können diese nicht verknüpft werden. Um die Einstellungen der Verknüpfungen bearbeiten zu können, muss man auf die Verbindungslinie klicken und den Punkt Link options auswählen. Es erscheint das Fenster der Verbindungsparameter:


Die Verwendung des Query Builders

Erstellen wir einen einfachen Report unter Verwendung des Query Builders.

Wählen Sie in der Instrumentenleiste "Neuer Report" [image] aus. Es wird eine Seite erstellt, die die Bänder "ReportTitel", "MasterData1" und den "Seitenfuß" enthält.

Auf die Seite "Data" legen Sie die Komponente "ADO Abfrage" und klicken darauf doppelt, um den Editor aufzurufen.

Klicken Sie nun auf den Button [image] im Editor und es erscheint der Query Builder. Wählen Sie die Tabelle Customer aus und ziehen diese auf die Arbeitsfläche (man kann diese auch durch den Doppelklick auswählen). Als nächstes werden nun Häkchen an die Felder CustNo, Company und Phone gesetzt:

Mehr braucht man nicht um ein Abfrage zu erstellen. Der Text der Abfrage wird im Tab SQL angezeigt und die Daten, die die Abfrage liefert, im Tab Result. Klicken Sie auf [image] um den Query Builder zu schließen. Wir kehren zurück zum Editor der Abfrage und sehen den generierten Text dieser:

Achtung! Falls Sie den Text der Abfrage verändern, so verlieren sie das Schema (die Anordnung der Tabellen im Query Builder und die Verbindungen zwischen diesen). Wird der Text der Abfrage nicht manuell verändert, so können Sie immer im Query Builder das Schema visuell verändern. Klicken Sie auf OK im Editor und kehren in den Reportdesigner zurück. Jetzt müssen nur noch das Band "MasterData1" mit der Datenquelle verknüpft und die Felder auf dem Band verteilt werden.


Erstellen einer komplexen Abfrage

Im vorherigen Beispiel haben wir einen Report auf den Daten einer Tabelle aufgebaut. Betrachten wir nun einen Report der die Daten zweier Tabellen enthält.

Früher haben wir die Arbeit des Reports mit Gruppen (Kapitel "Report mit Gruppen") betrachtet. Erstellen wir nun eine Abfrage für diesen Report mit Hilfe des Query Builders. Wir müssen die Abfrage in SQL verfassen. Dieser soll die Daten beider Tabellen anzeigen, welche auf bestimmte Weise sortiert sind. In unserem Fall durch die Verknüpfung der Felder CustNo in beiden Tabellen.

Wie im Beispiel vorhin, erstellen wir einen neuen Report und legen auf die Seite die Komponente "ADO Abfrage". Im Editor starten wir nun den Query Builder.

Nun werden zwei Tabellen auf die Arbeitsfläche gezogen Customers und Orders. Beide Tabellen besitzen das Feld CustNo über welches sie verbunden werden. Durch das Rüberziehen des Feldes CustNo von der einen Tabelle in die andere erstellen wir die Verknüpfung:

Jetzt müssen die Felder markiert werden, die die Abfrage enthalten sollen. Diese sollen anhand des Feldes CustNo sortiert werden. Setzen Sie dazu Häkchen an die Felder "*" in beide Tabellen und auch das Feld Custno in der Tabelle Customer. Im Fenster unten erscheinen nun die von uns ausgewählten Felder und es muss die Art der Sortierung für das Feld CustNo ausgewählt werden:

Die Abfrage ist nun fertig und sieht wie folgt aus:


Betrachten, Drucken, Export des Reports

Der fertige Report kann auf dem Bildschirm betrachtet, über einen Drucker gedruckt oder in ein unterstützendes Format exportiert werden. Das alles kann im Vorschaufenster machen.

Die Zahlen bedeuten:

1 Seiten des fertigen Reportes;

2 Instrumentenleiste ;

3 Statusleiste;

4 Seitenpanell. Hier wird entweder der Reporttree angezeigt (wie in der Grafik) oder Vorschau der Seiten.

Die Instrumentenleiste besitzt folgende Buttons:

Icon

Bezeichnung

Beschreibung

Drucken

Druckt den Report. Tastaturbefehl Strg P.

Öffnen

Öffnet einen Report (*.fp3).

Speichern

Speichert einen Report (*.fp3).

Export

Export des Reportes in ein unterstütztes Format.

Export nach PDF

Exportiert den Report in eine pdf-Datei. Dieser Button wird angezeigt, wenn der entsprechende Exportfilter installiert worden ist.

Als E-Mail senden

Export in ein unterstützendes Format und Versand per E-Mail als Anhang. Dieser Button wird angezeigt, wenn der entsprechende Exportfilter installiert worden ist.

Suchen

Textsuche im Report. Tastaturbefehl Strg F.

Vergrößern

Vergrößert den Maßstab.

Zoom

Auswahl des Maßstabes.

Verkleinern

Verkleinert den Maßstab.

Vollbild

Zeigt den Report auf dem ganzen Bildschirm an. Um zur Standardansicht zu wechseln, klicken Sie doppelt auf die Seite.

Baumansicht

Zeigt und verbirgt den Reporttree.

Miniaturansicht

Zeigt/Verbirgt die Miniaturansicht der Seiten.

Seiteneinstellungen

Ruft einen Dialog mit den Seiteneigenschaften auf.

Seite bearbeiten

Editiert die aktuelle Seite.

Erste Seite

Springt zur ersten Seite des Reportes.

Vorige Seite

Geht zur vorherigen Seite im Report.

Seitennummer

Geht zur angegebenen Seitennummer im Report. Fügen Sie die Nummer ein und klicken auf Enter.

Nächste Seite

Geht zur nächsten Seite im Report.

Letzte Seite

Springt zur letzten Seite im Report.

Schließen

Schließen

Schließt das Vorschaufenster.


Tastatursteuerung

Tasten Beschreibung

Strg+S Speichert den Report *.fp3.

Strg+P Druckt den Report.

Strg+F Textsuche.

F3 Weiterführen der Suche.

Pfeile Flüssiges Scrollen des Dokumentes.

Bild hoch, Bild runter Scrollen hoch/runter.

Strg+Bild hoch, Bild runter Scrollen hoch/runter zur nächsten Seite.

Pos 1 Springt zum Anfang des Dokumentes.

Ende Springt zum Ende des Dokumentes.


Maussteuerung

Aktion Beschreibung

Linke Maustaste Klick auf ausgewählte Objekte (im interaktiven Report); Scrollen im Modus «Hand» (Taste festhalten und Maus bewegen); im Modus «Zoom» - heranzoomen.

Rechte Maustaste Kontextmenü; im Modus «Zoom» - herauszoomen.

Doppelklick Bei Anzeige des Reports auf dem ganzen Bildschirm, Rückkehr zur Standardansicht.

Mausrad Scrollen der Seite.


Druck des Reports

Um den Report auszudrucken, klicken Sie auf den Button [image] (oder die Tasten Strg+P). Es erscheint folgendes Fenster:

screenshot - 18.05.2009 , 19_22_33

Schauen wir uns die vorhandenen Einstellungen an.

In der Gruppe "Drucker" kann man den Drucker aussuchen, dessen Einstellungen bearbeiten und "In Datei drucken" auswählen.

screenshot - 18.05.2009 , 19_23_14

In der Gruppe "Seite" können die zum Druck bestimmten Seiten ausgewählt werden (alle, aktuelle oder bestimmte).

screenshot - 18.05.2009 , 19_23_37

Gruppe "Kopien": hier geben wir die Anzahl der Kopien an und wählen die Sortierung der Seiten aus ("Sortieren"):

screenshot - 18.05.2009 , 19_24_02

Gruppe "Druckoptionen": hier wählen wir welche Seiten gedruckt werden sollen (alle, gerade, ungerade), die Reihenfolge (ab erster Seite oder ab der letzten) und geben die Einstellungen für doppelseitigen Druck ein ("Duplex" falls Ihr Drucker das unterstützt).

screenshot - 18.05.2009 , 19_24_21

In der Gruppe "Druckmodus" kann einer der Modi ausgewählt werden.

screenshot - 18.05.2009 , 19_24_47

- Standarddruck. Der Drucker druckt das, in dem Report angegebene Format. Eine Seite des Reports entspricht einer gedruckten Seite

- Aufteilen. Dies wird verwendet um Seiten im DIN A3 Format als DIN A4 zu drucken. Aus einer Reportseite werden zwei gedruckte. Wählen Sie diesen Modus, müssen Sie auch das gewünschte Papierformat aus der Liste "Papierformat" auswählen.

- Zusammenfügen. Will man den Report DIN A4 im Format DIN A3 drucken so wählt man zusammenfügen aus. Auf einer gedruckten Seite werden zwei Reportseiten dargestellt. Auch hier muss man das gewünschte Papierformat aus der Liste "Papierformat" auswählen.

- Anpassen. Druckt den Report im gewünschten Format. Dabei wird das Erscheinungsbild gezoomt (größer/kleiner) abhängig vom Format des Reports und der Seite. Eine Reportseite erscheint dann auf einer Blattseite. Hier muss ebenfalls das gewünschte Papierformat aus der Liste "Papierformat" auswählt werden.

Klickt man auf OK, startet der Druck. Ist das Kontrollkästchen «In Datei drucken» ausgewählt, so erfolgt eine Anfrage nach dem Dateinamen und die Speicherung in dieser (die Datei mit der Endung *.prn enthält die Kopie der Informationen, die an den Drucker gesendet worden sind).


Textsuche im Report

Mit FastReport kann man im Vorschaufenster eine Textsuche durchführen. Dazu klicken Sie auf den Button [image] auf der Instrumentenleiste (Tastaturbefehl Strg+F). Es erscheint das Fenster der Suche:

screenshot - 18.05.2009 , 19_30_42

Hier kann der Text eingegeben werden und die Optionen der Suche:

- Ab Anfang die Suche wird vom Anfang des Dokumentes an durchgeführt, ansonsten auf der aktuellen Seite.

- Groß-/Kleinschreibung wählt man es aus, so wird die Groß-/Kleinsschreibung bei der Suche beachtet.

Klicken Sie nun auf OK wird die Textsuche durchgeführt und das erste gefundene Element angezeigt:

Um die Suche fortzuführen, drücken Sie auf F3. Es wird das nächste Element angezeigt.


Export der Reporte

FastReport erlaubt den Export des fertigen Reports in verschiedene Formate zur weiteren Bearbeitung, Archivierung, dem Versand per E-mail usw.

Im Moment werden 13 Formate unterstützt: PDF, ODS, ODT, Excel, XML, RTF, HTML, text, CSV, BMP, Jpeg, Tiff und Gif. Es besteht die Möglichkeit den Report in all diesen Formaten per E-mail zu versenden. Um den Export auszuwählen klicken Sie auf 103.6 auf der Instrumentenleiste:

screenshot - 18.05.2009 , 19_33_09

Für den Export verwendet FastReport eine der 3 Möglichkeiten:

- Schicht-für-Schicht die Objekte im Bericht werden nacheinander in die Datei übertragen. Der Export ist dem Original ähnlich.

- Tabellarisch beim Übertragen der Objekte wird eine Zwischenmatrix verwendet, in der die Objekte untergebracht werden. Das Aussehen entspricht im hohen Maße dem Original, falls die Regeln der Erstellung der Maske beachtet worden sind (Kapitel «Vorschläge zur Reporterstellung»);

- Rendering es werden die sich auf der Seite befindenden Objekte gerendert. Die Kopie entspricht dem Original. Wird angewendet für den Export grafischer Formate.


Export ins Format PDF

PDF (Portable Document Format) ist ein plattformunabhängiges Format der Firma Adobe Systems. Es wird das kostenlose Paket Acrobat Reader verwendet. Dieses Format ist recht flexibel. Es können die Schriftart, Vektoren und Raster eingefügt werden. Es eignet sich sehr gut zum Versand und der Speicherung der Dokumente, welche angezeigt und gedruckt werden sollen.

Art des Exportes - Schicht für Schicht.

Beim Export in das Format PDF, wird ein Fenster mit den Einstellungen der zu exportierenden Datei angezeigt.

screenshot - 18.05.2009 , 19_35_09

Einstellungen:

- Komprimiert komprimiert die Datei, erhöht jedoch die Zeit des Exportes;

- Schriften einbetten alle Schriften die im Report verwendet werden, sind später auch in der PDF Datei vorhanden, damit diese korrekt angezeigt wird. Wo es diese Schriften nicht gibt, erhöht sich die Größe der ausgehenden Datei enorm.

- Hintergrund der Export der Grafiken die die Seite in PDF enthält, erhöht die Größe der Datei erheblich;

- Druckoptimiert die Grafiken werden in hoher Auflösung dargestellt, um beim Druck korrekt angezeigt zu werden. Diese Option ist sinnvoll, wenn das Dokument Grafiken enthält und deren Druck unbedingt notwendig ist. Die Größe der ausgehenden Datei wird auch hier erhöht;

- Lesezeichen diese Option ist aktiv, wenn der Report den Reporttree enthält. Beinhaltet die Möglichkeit des Exportes des Trees in das PDF-Dokument;

- Nach Export öffnen die PDF-Datei wird gleich nach dem Export mit dem Programm der Betrachtung der PDF-Dateien (z.B. Adobe Acrobat Reader) geöffnet.

Besonderheit des Exportes: RichText-Objekte werden wie Grafiken exportiert.


Export in das Format Open Dokument

OpenDocument Format (ODF Abkürzung für OASIS Open Document Format for Office Application) ist ein offenes Dateienformat zur Speicherung und den Austausch von Office-Dokumenten, einschließlich von Textdokumenten (z.B. Notizen, Berichten oder Büchern), elektronischen Tabellen, Grafiken, Datenbanken, Präsentationen. Dieser Standard wurde im Unternehmen OASIS entwickelt und basiert auf dem XML-Format. Dieser Format wurde als erstes durch OpenOffice.org entwickelt und am 1. Mai 2006 als internationaler Standard ISO/IEC 26300 übernommen.

FastReport unterstützt den Export in Tabellen ( .ods Datei) und Text ( .odt Datei) OpenDocument. Diese Dateien können mit Hilfe des kostenlosen Paketes OpenOffice geöffnet werden.

Art des Exportes Tabellarisch.

Beim Export erscheint ein Dialog mit den Einstellungen der Parameter der ausgehenden Datei.

screenshot - 18.05.2009 , 19_39_04

Exporteinstellungen:

- Weiter ununterbrochener Export. Die Seiten und Tabellen werden exportiert ohne unterbrochen zu werden und der Ausblendung der Spaltenbezeichnungen (diese werden nur auf der ersten und letzten Seite angezeigt). Die Option ist sinnvoll bei großen Dokumenten, die zur weiteren Bearbeitung vorgesehen sind;

- WYSIWYG eine hundertprozentige Übereinstimmung des Äußeren der Datei beim Export. Wird die Option deaktiviert, so wird eine Optimierung durchgeführt, bei welcher die Anzahl der Spalten und Zeilen in der resultierenden Datei reduziert wird;

- Hintergrund - der Export der gewählten Hintergrundfarbe;

- Seitenumbrüche aktiviert die Seitenumbrüche in der resultierenden Datei;

- Nach dem Export öffnen die Datei wird gleich nach dem Export geöffnet.

Besonderheit des Exportes: RichText-Objekte werden wie einfacher Text exportiert, die Weiterleitung von Grafiken wird unterstützt.


Export in das Format RTF

RTF (Rich Text Format) wurde als Standardformat zum Austausch von Textdokumenten entwickelt. Heutzutage werden RTF-Dokumente von den meisten aktuellen Texteditoren und Operationssystemen unterstützt.

Art des Exportes Tabellarisch.

Beim Export in das Format RTF, wird ein Fenster mit den Einstellungen der zu exportierenden Datei angezeigt.

screenshot - 18.05.2009 , 19_35_41

Exporteinstellungen:

- Bilder aktiviert die Möglichkeit des Exportes von Grafiken in die RTF-Datei;

- Seitenumbrüche aktiviert Seitenumbrüche in der RTF-Datei;

- WYSIWYG eine hundertprozentige Übereinstimmung des Äußeren der Datei beim Export. Wird die Option deaktiviert, so wird eine Optimierung durchgeführt, bei welcher die Anzahl der Spalten und Zeilen in der resultierenden Datei reduziert wird;

- Weiter ununterbrochener Export. Die Seiten und Tabellen werden exportiert ohne unterbrochen zu werden und der Ausblendung der Spaltenbezeichnungen (diese werden nur auf der ersten und letzten Seite angezeigt). Die Option ist sinnvoll bei großen Dokumenten, die zur weiteren Bearbeitung vorgesehen sind;

- Seiten Kopf/Fuß Ausführungsweisen: Text wird wie gewöhnlicher Text behandelt, Kopf/Fuß im RTF-Dokument werden diese gebildet, Nichts - Kopf/Fuß werden ignoriert;

- Nach Export öffnen die Datei wird gleich nach dem Export mit dem voreingestellten Programm (z.B. Microsoft WordPad) geöffnet.

Besonderheit des Exportes: RichText Objekte werden komplett ins Format RTF übertragen, das Aussehen und die Größe der Datei sind stark von der Maske des Reports abhänging (Kapitel «Vorschläge zur Reporterstellung»);


Export in Excell

Excell eine Anwendung zur Arbeit mit Tabellen. Enthalten im Microsoft Office System.

Art des Exportes Tabellarisch.

Beim Export in Excell, wird ein Fenster mit den Einstellungen der zu exportierenden Datei angezeigt.

screenshot - 18.05.2009 , 19_35_56

Exporteinstellungen:

- Weiter ununterbrochener Export. Die Seiten und Tabellen werden exportiert ohne unterbrochen zu werden und der Ausblendung der Spaltenbezeichnungen (diese werden nur auf der ersten und letzten Seite angezeigt). Die Option ist sinnvoll bei großen Dokumenten, die zur weiteren Bearbeitung vorgesehen sind;

- Bilder aktiviert die Möglichkeit des Exportes von Grafiken in die Tabelle;

- Als Text alle Objekte werden in die Tabelle als Textobjekte übertragen. Diese Option ist nützlich beim übertragen von nummerischen Feldern mit komplexen Formatierungen;

- Fast Export dabei wird die Übertragung der Daten optimiert und somit beschleunigt. Das Deaktivieren der Option verlangsamt die Übertragung, steigert jedoch die Vereinbarkeit beim Export, sollten Fehler dabei entstehen;

- Zellen verbinden das Verbinden der Zellen in der entstehenden Tabelle um die maximale Ähnlichkeit mit dem Original zu erreichen. Das Deaktivieren beschleunigt den Export, das Aussehen wird jedoch schlechter.

- WYSIWYG eine hundertprozentige Übereinstimmung des Äußeren der Datei beim Export. Wird die Option deaktiviert, so wird eine Optimierung durchgeführt, bei welcher die Anzahl der Spalten und Zeilen in der resultierenden Datei reduziert wird;

- Hintergrund - der Export der gewählten Hintergrundfarbe;

- Seitenumbrüche aktiviert Seitenumbrüche in der Excell-Datei;

- Excell nach Export öffnen die Datei wird gleich nach dem Export mit Excell geöffnet.

Besonderheit des Exportes: damit der Export einwandfrei funktionieren kann, ist das Vorhandensein von Excell auf dem PC unbedingt notwendig! RichText-Objekte werden wie einfacher Text exportiert, die Übertragung von Grafiken wird unterstützt.


Export in das XML-Format

XML (Extensible Markup Language). XML ist für die Aufbewahrung von strukturierten Daten vorgesehen, aber auch zum Austausch der Daten zwischen verschiedenen Programmen. FastReport verwendet das Format XML zum Übertragen der Daten in den Tabelleneditor Excell `03 und älterer Versionen.

Art des Exportes Tabellarisch.

Beim Export in das Format XML, wird ein Fenster mit den Einstellungen der zu exportierenden Datei angezeigt.

screenshot - 18.05.2009 , 19_36_13

Exporteinstellungen:

- Weiter ununterbrochener Export. Die Seiten und Tabellen werden exportiert ohne unterbrochen zu werden und der Ausblendung der Spaltenbezeichnungen (diese werden nur auf der ersten und letzten Seite angezeigt). Die Option ist sinnvoll bei großen Dokumenten, die zur weiteren Bearbeitung vorgesehen sind;

- Seitenumbrüche aktiviert Seitenumbrüche in der Excell-Datei;

- WYSIWYG eine hundertprozentige Übereinstimmung des Äußeren der Datei beim Export. Wird die Option deaktiviert, so wird eine Optimierung durchgeführt, bei welcher die Anzahl der Spalten und Zeilen in der resultierenden Datei reduziert wird;

- Hintergrund - der Export der gewählten Hintergrundfarbe;

- Excell nach Export öffnen die Datei wird gleich nach dem Export mit Excell geöffnet.

Besonderheit des Exportes: RichText-Objekte werden wie einfacher Text exportiert, die Übertragung von Grafiken wird nicht unterstützt.


Export ins CSV-Format

Die CSV-Datei enthält Werte in Form von Tabellen und diese sind so angeordnet, dass jeder Wert in der Spalte vom Wert der folgenden Spalte durch Trennzeichen getrennt ist und jede neue Reihe beginnt in einer neuen Zeile. Dieses Format kann in verschiedene Tabelleneditoren importiert werden.

Art des Exportes Tabellarisch.

Beim Export in das Format CSV, wird ein Fenster mit den Einstellungen der zu exportierenden Datei angezeigt.

screenshot - 18.05.2009 , 19_38_01

Exporteinstellungen:

- OEM Zeichensatz Auswahl des OEM Zeichensatzes der CSV-Datei;

- Trennzeichen Trennzeichen der Werte;

- Nach Export öffnen die Datei wird gleich nach dem Export mit dem voreingestellten Programm geöffnet.

Besonderheit des Exportes: Das Reportdesign wird beim Export in dieses Format nicht gespeichert. Grafiken werden nicht unterstützt.


Export in das HTML-Format

HTML (Hypertext Markup Language) gilt als die Standardsprache im Internet. HTML wurde entwickelt um wissenschaftliche und technische Dokumentationen auszutauschen, welche von Leuten verwendet werden sollten, die nicht Spezialisten auf dem Gebiet der Verschachtelungen sind. Es dient der Erstellung von einfachen aber optisch guten Dokumenten. Um die Dokumentenstruktur zu vereinfachen, wird Hypertext unterstützt.

Art des Exportes Tabellarisch.

Beim Export in das HTML-Format, wird ein Fenster mit den Einstellungen der zu exportierenden Datei angezeigt.

screenshot - 18.05.2009 , 19_35_28

Exporteinstellungen:

- Stile Export der Stile der Textobjekte. Das Deaktivieren beschleunigt den Prozess des Exportes, das Aussehen wird jedoch verschlechtert;

- Alles in einen Ordner alle zusätzlichen Dateien werden im selben Ordner aufbewahrt wie die Hauptdatei;

- Seitennavigator ein spezieller Navigator wird erstellt zur schnelleren Navigation über die Seiten;

- Feste Breite die automatische Änderung der Tabellenbreite bei Änderung der Größe des Fensters wird blockiert;

- Mehrfachseite jede Seite wird in einer separaten Datei gespeichert;

- Hintergrund Export grafischer Attribute, die auf der Seite vorhanden sind;

- Bilder aktiviert die Möglichkeit der Darstellung von Grafiken;

- Nach Export öffnen die Datei wird gleich nach dem Export mit dem voreingestellten Programm geöffnet.

Besonderheit des Exportes: der Export kann aus mehreren Dateien bestehen, Grafiken werden unterstützt und jede separat in einer eigenen Datei gespeichert. RichText Objekte werden als einfacher Text exportiert, das Aussehen und die Größe der Datei sind stark von der verwendeten Maske des Reportes abhängig (Kapitel «Vorschläge zur Reporterstellung»).


Export in ein Textformat

Standard Textdatei enthält Informationen aus dem Report, diese ist maximal optimiert und umgewandelt in Zusammenhang mit der Besonderheit des gegebenen Formates.

Art des Exportes Tabellarisch.

Beim Export in Text, wird ein Fenster mit den Einstellungen der zu exportierenden Datei angezeigt.

screenshot - 18.05.2009 , 19_38_33

Exporteinstellungen:

- Seitenumbrüche aktiviert Seitenumbrüche in der ausgehenden Datei;

- Leerzeilen Export leerer Zeilen;

- Rahmen Export von Rahmen der Textobjekte;

- OEM Zeichensatz die Auswahl des OEM Zeichensatzes in der entstehenden Datei;

- Nach Export öffnen die Datei wird gleich nach dem Export mit dem voreingestellten Programm geöffnet.

Besonderheit des Exportes: die Formatierung des Reporte wird beim Export in dieses Format nicht beibehalten. Grafiken werden nicht unterstützt und die Seitenbreite ist von den enthaltenen Textobjekten abhängig.


Export in Formate Jpeg, BMP, Gif, Tiff

FastReport erlaubt den Export in folgende grafische Formate.

- JPEG (Joint Photographic Experts Group) das Format basiert auf dem Komprimierungsalgorithmus. Dieses sucht nicht die gleichen Elemente, sondern betrachtet den Abstand zwischen den Pixeln. Es hebt sich durch einen hohen Stand der Kompression hervor, jedoch auf Kosten eines Teilverlustes von grafischen Informationen.

- BMP (Windows Device Independent Bitmap) wird zur Speicherung von Rasterdarstellungen verwendet, die zur Verwendung in Windows vorgesehen sind. Es ist das Standardformat der Dateien für Computer die Windows besitzen.

- GIF (Graphics Interchange Format) Unabhängig von der Hardware, unterstützt das GIF-Format den Transfer von Bitmap-Dateien in Netzwerken. Dies erlaubt die hohe Komprimierung der Dateien, welche viele gleichartige Inhalte besitzen (Logos, Aufschriften, Pläne)

- TIFF, TIF (Target Image File Format) ein unabhängiges Format. Eines der am weitverbreitesteten und zuverlässigsten Formate in Polygrafie und im Faksimile-Übertragung von Informationen

Art des Exportes Rendering.

Beim Export in eines der oben genannten Grafikformate, wird ein Fenster mit den Optionen der Darstellung geöffnet.

screenshot - 18.05.2009 , 19_36_30

Exporteinstellungen:

- Einzelne Dateien ist die Option aktiviert, so wird jede Seite des Reports in eine separate Datei exportiert. Der Name der Datei wird der gewünschte sein, mit dem Zusatz der Unterstreichung und Seitenzahl;

- Schwarz/Weiss die Darstellung in Schwarz/Weiss;

- Seiten zuschneiden nach dem Export wird die freie Fläche an den Seiten abgeschnitten;

- JPEG Qualität die Ebene der Komprimierung der JPEG-Datei. Die Option ist nur aktiv beim Export in das JPEG-Format;

- Auflösung (dpi) die Auflösung der ausgehenden grafischen Darstellung;

Besonderheit des Exportes: beim Export einiger Seiten in eine Datei (deaktivierte Option "Einzelne Dateien" muss die hohe Ressourcennutzung des Exportes beachtet werden.


Versand des Reportes über E-Mail

FastReport erlaubt den Versand des fertigen Reportes über E-Mail in dem benötigten Format. Es braucht keine unterstützenden Programme.

Bei Auswahl des Exportes über E-Mail, wird ein Dialog aufgerufen, in dem die Optionen der E-Mail und des zu exportierenden Formates eingestellt werden.

Vor der Erstellung des Exportes und dessen Versand über E-Mail, ist es wichtig die Benutzerparameter des E-Mail Fachs einzustellen. Diese Einstellungen befinden sich im Tab "eMail Konto":

screenshot - 18.05.2009 , 19_37_44

- Absender Name Name des Absenders;

- Absender Adresse E-Mail Adresse des Absenders;

- Organisation das Unternehmen des Absenders;

- Signatur Signatur des Briefes. Diese kann automatisch erstellt werden, beim Klicken auf "Erstellen", wenn die vorherigen Felder ausgefüllt worden sind;

- Server - Adresse des SMTP Servers;

- Port - des SMPT Servers;

- Login Login des Zuganges zu dem SMPT Server, wenn dies notwendig ist;

- Kennwort Kennwort der Autorisierung;

- Eigenschaften speichern diese werden für weitere Benutzung gespeichert.

Nachdem die Einstellungen zum Versand der E-Mail festgelegt worden sind (dies muss nur einmal gemacht werden), müssen die Eigenschaften des E-Mail selbst festgelegt werden im Tab «eMail»:

screenshot - 18.05.2009 , 19_37_20

- Adresse die E-Mail Adresse des Empfängers. Die früher gewählten Adressen können aus der Drop-Down-Liste ausgewählt werden;

- Betreff Betreff der E-Mail. Die früher gewählten Betreffe können aus der Drop-Down-Liste ausgewählt werden;

- Text Text der E-Mail;

- Format das Format des Anhangs. Kann aus den oben erwähnten Formaten ausgewählt werden, aber auch das Format des fertigen Reportes kann ausgesucht werden (.FP3);

- Erweiterte Export Einstellungen ist diese Option aktiviert, so wird nach dem Klicken auf «OK» ein Fenster mit den Einstellungen des gewählten Formates aufgerufen. Ansonsten werden die standardmäßig verwendeten Einstellungen benutzt.

Besonderheit des Exportes über E-Mail: es wird nur der plain der Autentifizierng auf SMTP Servern unterstützt. Wird die Authentifizierung nicht verlangt, so müssen die Felder «Login» und «Kennwort» in den Einstellungen nicht ausgefüllt werden.


Vorschläge zur Reporterstellung

Es ist wichtig zu erwähnen, dass die Qualität des Exportes sehr stark von der Art der Erstellung der Maske abhängig ist. FastReport besitzt umfangreiche Möglichkeiten zur Manipulation der Objekte bei der Herstellung der Reportmaske. Dadurch besitzt man viele Vorteile bei der schnellen Generierung der Reporte und dem Druck dieser. Das gedruckte Dokument wird genauso aussehen wie auf dem Monitor, was auch das eigentliche Ziel des Reportgenerators FastReport ist. Auf der anderen Seite dieser Freiheit bei der Erstellung, ist das komplizierte Exportieren des erhaltenen Dokumentes in verschiedene Formate. Diese besitzen eigene, oftmals große Beschränkungen in der Darstellung der Daten. In diesem Kapitel werden Vorschläge gegeben bei der Erstellung der Reporte, welche zum Export vorgesehen sind.

Viele Formate verwenden tabellarische Darstellungen der Daten. Vor allem sind es die Formate HTML, XLS, XML, RTF und CSV. Die Überschneidungen und Schichtung der Zellen sind in diesen Formaten nicht zulässig (insbesondere HTML und RTF). Im Gegensatz zu den Freiheiten beim Prozess der Maskenerstellung im Designer FastReport. Die Exportfilter beachten diese Anforderungen beim Transfer der Objekte in das benötigte Format. Dies wird durch spezielle Algorithmen der Übertragung und der optimalen Anordnung ermöglicht. An Stellen wo sich die Objekte überschneiden werden neue Spalten und Zeilen in der neuen Tabelle gebildet. Dies ist notwendig zur genaueren Positionierung der übertragenden Objekte in FastReport zu erhalten und die größtmögliche Übereinstimmung zwischen der ursprünglichen und der gedruckten Datei zu erreichen. Viele, sich überschneidende Objekte im Report führen dazu, das sich die Anzahl der Spalten und Zeilen in der Tabelle erhöht. Dies erschwert die weitere Verwendung der Datei und verlangsamt den Export dieser.

Zum Beispiel ist im Report eine geringfügige Überschneidung von zwei Objekten vorhanden. Diese befinden sich auf einem Band und überschneiden sich. Die Zahl der Einträge bei der Erstellung des Reportes beträgt 150. Beim Export in das Format RTF werden 450 Zeilen in der Tabelle erstellt (150 für jedes Objekt und 150 für die Überschneidung). Wird die Überschneidung behoben, wird die Zahl auf 300 reduziert. Bei großen Reporten und und hoher Anzahl der Objekte wird der Unterschied enorm sein, auch in der Größe der ausgehenden Datei.

Objekte auf der Reportseite Objekte nach dem Export in Excell

Sie müssen dies beachten bei der Erstellung der Maske, falls Sie vorhaben diese später in verschiedene Formate zu exportieren.

Bei der Erstellung der Tabellen in den Reporten, achten Sie darauf, dass die Ränder der Zellen aneinanderliegen. Es ist wichtig, dass sich die Zellen nicht überschneiden und nicht übereinanderliegen. Der Algorithmus des Exportfilters wird die Zellen anpassen, aber das Resultat des Exportes kann von dem gewünschten abweichen (sprich man sieht nicht das, was man erwartet hat). Plazieren Sie die Objekte so, dass diese auf einer Linie liegen; vertikal und horizontal. Dabei helfen die Hilfslinien:

Um die Hilfslinien verwenden zu können, klicken Sie auf das Lineal oben bzw. links und bei festgehaltener Maustaste ziehen Sie die Linie auf die Seite. Dort legen Sie sie auf dem gewünschten Platz ab. Sie können nun die Objekte entlang der vertikalen/horizontalen Linie anordnen.

Überlappungen der Zellen können ebenfalls durch die Ausrichtung der Textobjekte an den Gitterlinien vermieden werden. Achten Sie darauf das diese Option im Designer aktiviert ist. Um die Ausrichtung zu vereinfachen, kann der Abstand der Gitterlinien erhöht werden. Die Abstände und die Ausrichtung kann man im Menü des Designers unter «Ansicht|Optionen...» einstellen:

screenshot - 18.05.2009 , 19_45_16.zoom64

Für die Rahmenlinien der Textobjekte ist es besser die integrierten Möglichkeiten der Textobjekte und nicht die grafischen Objekte wie Linien, Rechtecke und weitere zu verwenden. Versuchen Sie nicht Hintergrundobjekte unter durchsichtige Textobjekte zu legen.

Die Anwendung dieser einfachen Regeln, erlaubt die Erstellung von Reporten, die nach dem Export in ein Format welches tabellarisch ist, ein professionelles Aussehen besitzen.

Die unten aufgeführten Beispiele zeigen einmal die falsche und einmal die richtige Anordnung der Objektanordnung bei der Erstellung der Reportmaske.

falschrichtig

Die Objekte sind horizontal ausgerichtet. Wenn möglich sollte bei der Ausrichtung auf die hervorgehobenen Linien geachtet werden. Dadurch erhalten die Objekte eine gleichmäßige horizontale Ausrichtung.

falsch

richtig

Die Objekte überschneiden sich. In einem solchem Fall werden bei einem Export in ein Tabellenformat zusätzliche, nutzlose Spalten und Zeilen gebildet. Auch entstehen drei zusätzliche Zellen im Bereich der Überschneidung.

Um die Grundlagen der optimalen Reporterstellung zu erlernen, empfehlen wir, sich mit den Beispielen (welche im Set FastReport enthalten sind) vertraut zu machen.


Nummernkreise

Das Modul für Nummernkreise verwaltet die verschiedenen Nummernkreise des Programms.

Nummernkreise können z.B. Adressnummern, Auftragsnummern, Belegnummer usw. sein. Jeder Nummernkreis besitzt einen eigenen, eindeutigen Zähler. Optional kann jedem Benutzer des System einen eigenen Nummernkreis zugeordnet werden.


Konfiguration

Die Einstellungen werden in der Backstage-Ansicht unter Konfiguration => Nummernkreise aufgerufen.


Nummernkreise

Alle verfügbaren Nummernkreise werde zentral verwaltet. Welche Nummernkreise verfügbar sind, hängt von der eingesetzten Programmversion ab.

Links stehen alle verfügbaren Nummernkreise zur Verfügung. Um die Einstellungen eines Nummernkreises zu bearbeiten muss dieser ausgewählt werden.

Im Eingabefeld Zusammensetzung der Nummer kann der Aufbau der Nummer durch Verwendung der rechts verfügbaren Nummern-Teile definiert werden. Die Nummer kann beliebige Zeichen und Zahlen enthalten. Der Zähler selbst kann durch ein Makro (zB. [COUNTER]) an einer beliebigen Stelle in der Nummer eingefügt werden.

Im Bereich Zähler pro Benutzer kann für jeden Benutzer ein individueller Zählerstand definiert werden. Ist für einen Benutzer kein Zähler definiert, wird der globale Zähler verwendet.


Berichte im RTF/Word-Layout

In der Referenz für RTF-Berichte wird Format, Aufbau und Syntax zum erstellen einer Vorlage für RTF-Berichte beschrieben.

siehe auch:

Berichte


RTF Layout-Datei

Die Designdefinition der Berichte wird in einer RTF Datei beschrieben, einer sogenannten Layout-Datei.

Es ist eine Datei im RTF Format, die mit jedem gängigen RTF Editor (z.B. Microsoft Word) erstellt und bearbeitet werden kann.

In einer RTF Layout-Datei kann mit einer speziellen Syntax definiert werden, wie die Daten in einem Bericht dargestellt werden.


Aufbau

Wie man eine Vorlage und das zugehörige Layout erstellt wird in Berichte beschrieben.

siehe auch:

Vorlagen


Scans

In einem Scan werden alle Datensätze einer Abfrage durchlaufen und die Daten der Abfrage ausgegeben.

Scans können verschachtelt werden. Auf diese Weise können Master-Detail Reports realisiert werden.


Einfacher Scan

In einem einfachen Scan wird der Abschnitt zwischen den Linien Scan und EndScan für jeden Datensatz in der Abfrage repetiert.

Code

\Scan(Abfrage) [, while(FUNCTION(...))] [,page] [,noeof] [,function1,...,functionN]\

\EndScan [,function1,...,functionN]\

Beispiel

\scan(a)\

Hallo Welt

\EndScan\

Hier wird für jeden Datensatz in der Abfrage a Hallo Welt auf dem Report plaziert. Wenn die Abfrage also 10 Datensätze beinhalltet, wird 10-mal Hallo Welt auf dem Report platziert.


Erweiterter Scan

In einem erweiterten Scan wird der Abschnitt zwischen den Linien ScanEntry und ScanFooter für jeden Datensatz in der Abfrage repetiert.

Beim Eintreten in den Scan wird einmalig der Abschnitt zwischen Scan und ScanEntry platziert.

Nachdem alle Datensätze durchlaufen sind wird einmalig der Abschnitt zwischen Scanfooter und EndScan platziert.

Diese Funkionalität kann z.B. bei Tabellen angewendet werden:

Zwischen Scan und ScanEntry wird der Tabellenkopf platziert.

Zwischen ScanEntry und ScanFooter werden die Daten der Tabelle platziert.

Zwischen Scanfooter und EndScan wird die Zusammenfassung platziert.

ScanEntry und ScanFooter müssen nicht zwingend verwendet werden. Es ist möglich beide, oder nur eines der beiden zu verwenden.

Erweiterter Scan

\Scan(Abfrage) [, while(FUNCTION(...))] [,page] [,noeof] [,function1,...,functionN]\

\Scanentry [,function1,...,functionN]\

\Scanfooter [,function1,...,functionN]\

\Endscan [,function1,...,functionN]\

Beispiel

\scan(a)\

Titel

\ScanEntry\

Hallo Welt

\ScanFooter\

Zusammenfassung

\EndScan\

Hier wird für jeden Datensatz in der Abfrage a Hallo Welt auf dem Report platziert. Wenn die Abfrage also 10 Datensätze beinhalltet, wird 10-mal Hallo Welt auf dem Report platziert. Vor das erste Hallo Welt wird Titel platziert und nach dem letzten wird Zusammenfassung platziert.


Scanfunktionen

In jedem Scanelement können beliebig viele Funktionen ausgeführt werden.

Die Funktionen werden durch Kommas voneinander getrennt.

Diese Funktionen können z.B.verwendet werden, um Beträge zusammenzuzählen. Das Resultat kann dann, z.B. in einem ScanFooter, als Total ausgegeben werden.

Die Verfügbaren Funktionen finden sind im Kapitel Funktionen beschrieben.

Beispiel

\Scan(a), FUNCTION(PARAMETER1, PARAMETER2)\


Spezielle Scan Funktionen

Es gibt spezielle Funktionen die nur in einem Scanelement verwendet werden können.

Scanelementfunktionen

while | Der Scan läuft vom Ersten bis zum Letzten Datensatz der Abfrage solange die Funktion in while true ist. Liefert die Funktion in while false zurück, wird der Scan abgebrochen und verlassen.
page | Fügt bei jedem Durchlauf eine neue Seite ein, ausgenommen beim Ersten.
noeof | Der Scanblock wird nur platziert wenn die Abfrage Daten enthält. Wird meistens bei Master-Detail Reports für den Detail-Scan verwendet.


Variablen

Auf einem Report können Variablen verwendet werden, um temporäre Berechungen durchzuführen oder um gewisse Sachen zwischenzuspeichern.

Eine Reportvariable kann auf einfache Weise über \VARIABELNAME\ auf dem Report platziert werden.

Die meisten Funktionen verwenden Variablen um Werte zu speichern. Viele der Funktionen erzeugen bei Bedarf eine neue Variable wenn diese noch nicht existiert.

Beispiel

\CTN('1', a_var)\

Wenn beim Ausführen dieser Funktion die Variable a_var noch nicht existiert, wird die Variable neu angelegt und das Ergebnis in diese gespeichert.


Konstanten

Einer Funktion können nicht nur Variablen und Datenbankfelder einer Abfrage übergeben werden, sondern es können auch konstante Werte übergeben werden.

Ein konstanter Wert muss immer in '' oder ~~ Zeichen eingeschlossen werden.

Beispiel

\CTN('1', a_var)\

\CTN(~1~, a_var)\

Hier wird der Funktion CTN als erster Parameter der konstante Wert 1 übergeben.


Bedingungen

Bedingungen können mit IF-ELSE-ENDIF realisiert werden.

Syntax:

\If(<boolean value>)\

.............................................

\else\

.............................................

\endif\

Hinnweis: \else\ ist optional.


Funktionen

Mit den Funktionen können Berechnungen durchgeführt werden, und Ausgaben formatiert werden.

Jede Funktion benötigt gewisse Parameter. Bei manchen Funktionen gibt es optionale Parameter die nur bei Bedarf übergeben werden müssen.

Die Parameter können Reportvariablen, Konstanten und andere Funktionen sein.

Der Rückgabewert einer Funktion kann auf einfache Weise über \FUNCTION(a:feld, a:feld2)\ auf dem Report platziert werden.

Wenn die Funktionen keinen Rückgabewert liefert wird eine leerer String platziert.

Allgemeiner Syntax

FUNKTION(a:feldname, b:feldname)

FUNKTION('konstante', a:feldname)

FUNKTION(report_variable, 'konstante')

FUNKTION(FUNKTION2(a:feldname, b:feldname), FUNKTION(report_variable, 'konstante'))


Funktionen mit Rückgabewert

Funktionen mit einem Rückgabewert werden normalerweise benötigt um Daten formatiert auf dem Report zu platzieren.


FIMG

Importiert eine Grafikdatei und gibt sie im korrekten RTF Format zurück, damit Sie im Report platziert werden kann.

Syntax

FIMG(FileName)

Importiert die Grafikdatei FileName und gibt sie im korrekten RTF Format zurück.

Beispiel

\FIMG('.\custom\logo.bmp')\

Importiert die Grafikdatei .\custom\logo.bmp und platziert sie auf dem Report.

Hinnweis:

Diese Funktion ist bei Reports die mit dem ML2-Server-Module erzeugt werden nicht verfügbar.


FORMATF

Platziert eine Kommazahl formatiert auf dem Report.

Syntax

FORMATF(Wert, Format)

Formatiert den Wert in Wert nach den Vorgaben in Format und gibt das Ergebnis zurück.

Format funktionen

Bezeichner | Beschreibung
0 | Platzhalter für eine Ziffer. Enthält der zu formatierende Wert an der Position eine Ziffer, an der im Format-String '0' steht, wird diese in den Ausgabe-String kopiert. Andernfalls wird das Zeichen '0' an dieser Position im Ausgabe-String gespeichert.
# | Platzhalter für eine Ziffer. Enthält der zu formatierende Wert an der Position eine Ziffer, an der im Format-String '#' steht, wird diese in den Ausgabe-String kopiert. Andernfalls wird an dieser Position kein Zeichen im Ausgabe-String gespeichert.
. | Dezimaltrennzeichen. Das erste '.'-Zeichen im Format-String bestimmt die Position des Dezimaltrennzeichens im formatierten Wert. Alle weiteren dieser Zeichen werden ignoriert. Das tatsächlich im Ausgabe-String verwendete Zeichen wird mit der globalen Variable DecimalSeparator festgelegt. Die Variable erhält als Standardwert den entsprechenden Eintrag in der Registerkarte Zahlen im Modul Ländereinstellungen der Windows-Systemsteuerung.
, | Tausendertrennzeichen. Enthält der Format-String ein oder mehrere ','-Zeichen, werden in den Ausgabe-String links des Dezimaltrennzeichens nach jeder Gruppe von drei Ziffern Ausendertrennzeichen eingefügt. Die Position und Anzahl der Trennzeichen im Format-String wirkt sich nicht auf die Ausgabe aus. Sie geben nur an, dass Trennzeichen eingefügt werden sollen. Das tatsächlich im Ausgabe-String verwendete Zeichen wird mit der globalen Variable ThousandSeparator festgelegt. Die Variable erhält als Standardwert den entsprechenden Eintrag in der Registerkarte Zahlen des Moduls Ländereinstellungen der Windows-Systemsteuerung.
E+ | Wissenschaftliche Schreibweise. Sind die Zeichen 'E+', 'E-', 'e+' oder 'e-' im Format-String enthalten, wird die Zahl in der wissenschaftlichen Schreibweise formatiert. Bis zu vier '0'-Zeichen können direkt nach 'E+', 'E-', 'e+' oder 'e-' angegeben werden, um die minimale Anzahl der Stellen im Exponenten festzulegen. Bei den Formaten 'E+' und 'e+' wird für positive Exponenten ein Pluszeichen und für negative Exponenten ein Minuszeichen in den String eingefügt. Bei den Formaten 'E-' und 'e-' wird lediglich für negative Exponenten ein Vorzeichen ausgegeben.
'xx'/"xx" | In halbe oder ganze Anführungszeichen eingeschlossene Zeichen wirken sich nicht auf die Formatierung aus und werden wie eingegeben angezeigt.
; | Trennt Abschnitte für positive, negative und Nullwerte im Format-String.

Die Zeichen zwischen dem äussersten linken '0' vor dem Dezimaltrennzeichen und dem äussersten rechten '0' nach dem Dezimaltrennzeichen werden immer im Ausgabe-String angezeigt.

Die zu formatierende Zahl wird immer auf so viele Dezimalstellen gerundet, wie Ziffernplatzhalter ('0' oder '#') rechts des Dezimaltrennzeichens vorhanden sind. Enhält der Format-String kein Dezimaltrennzeichen, wird der Wert auf die nächste ganze Zahl gerundet.

Hat die zu formatierende Zahl mehr Vorkommastellen, als Ziffernplatzhalter links des '.' im Format-String vorhanden sind, werden die zusätzlichen Stellen vor dem ersten Platzhalter ausgegeben.

Damit für positive, negative und Nullwerte unterschiedliche Formate festgelegt werden können, kann der Format-String zwischen einem und drei durch Semikolons getrennte Abschnitte enthalten.

Ein Abschnitt: Der Format-String wird für alle Werte verwendet.

Zwei Abschnitte: Der erste Abschnitt wird für positive und Nullwerte, der zweite Abschnitt für negative Werte verwendet.

Drei Abschnitte: Der erste Abschnitt wird für positive, der zweite für negative, und der dritte Abschnitt für Nullwerte verwendet.

Wenn der Abschnitt für negative oder Nullwerte keine Angaben enthält, wird statt dessen der Abschnitt für positive Werte verwendet.

Ist der Abschnitt für positive Werte oder der gesamte Format-String leer, wird die Zahl im allgemeinen Gleitkommaformat mit 15 siginifikanten Stellen formatiert. Das allgemeine Gleitkommaformat wird auch verwendet, wenn mehr als 18 Vorkommastellen vorhanden sind und im Format-String nicht die wissenschaftliche Schreibweise angegeben wird.


STRREPLACE

Ersetzt alle Teilstrings in einem String durch einen anderen.

Syntax

STRREPLACE(Source, OldStr, NewStr)

Ersetzt alle Vorkommen von OldStr in Source durch NewStr und gibt das Ergebnis zurück.


RESTOREVAL

Stellt einen Wert der mit STOREVAL gespeichert wurde, wieder her.

Syntax

RESTOREVAL(Bezeichner [, Destination])

Wenn der Paramter Destination nicht angegeben wird, gibt die Funktion den gespeicherten Wert von Bezeichner zurück.

Wird der Parameter Destination angegeben, hat die Funktion keinen Rückgabewert sondern speichert den gespeicherten Wert von Bezeichner in Destination.


PRNEQINT

Hat die gleiche Funktionalität wie PRNEQ, arbeitet aber mit Zahlenvariablen und gibt bei Ungleichheit den Wert 0 zurück.


PRNNEQINT

Hat die gleiche Funktionalität wie PRNNEQ, arbeitet aber mit Zahlenvariablen und gibt bei Gleichheit den Wert 0 zurück.


PRNNEQ

Gibt nur einen Rückgabewert zurück wenn zwei Werte ungleich sind.

Syntax

PRNNEQ(Wert1, Wert2, Source)

Gibt als Rückgabewert Source zurück wenn Wert1 ungleich Wert2 ist.


PRNEQ

Gibt nur einen Rückgabewert zurück wenn zwei Werte übereinstimmen.

Syntax

PRNEQ(Wert1, Wert2, Source)

Gibt als Rückgabewert Source zurück wenn Wert1 gleich Wert2 ist.


DIV

Dividiert zwei Werte und gibt das Ergebnis zurück. Optional kann das Ergebnis in einer Variable gespeichert werden.

Syntax

DIV(Wert1, Wert2 [, Destination])

Dividiert Wert1 durch Wert2 und gibt das Ergebnis zurück. Wenn der optionale Parameter Destination angegeben wurde, wird das Ergebnis zusätzlich in Destination gespeichert.


MUL

Hat die gleiche Funktionalität wie DIV, mit dem Unterschied das mit MUL die Werte multipliziert werden.


FORMATDATE

Gibt ein Datum- oder Zeitwertwert formatiert zurück.

Syntax

FORMATDATE(Source [, Format])

Gibt den in Source übergebenen Datum- oder Zeitwert nach den Vorgaben in Format formatiert zurück.

Format funktionen

Bezeichner | Anzeige
d | Zeigt den Tag als Zahl ohne führende Null an (1-31).
dd | Zeigt den Tag als Zahl mit führender Null an (01-31).
ddd | Zeigt den Wochentag als Abkürzung (Son-Sam) an.
dddd | Zeigt den ausgeschriebenen Wochentag (Sonntag-Samastag) an.
e | Zeigt das Jahr des aktuellen Zeitalters als eine Zahl ohne führende Null an (nur bei japanischen, koreanischen und taiwanesischen Ländereinstellungen).
ee | Zeigt das Jahr des aktuellen Zeitalters als eine Zahl mit führender Null an (nur bei japanischen, koreanischen und taiwanesischen Ländereinstellungen).
g | Zeigt das aktuelle Zeitalter als Abkürzung an (nur bei japanischen und taiwanesischen Ländereinstellungen).
gg | Zeigt das ausgeschriebene Zeitalter an (nur bei japanischen und taiwanesischen Ländereinstellungen).
m | Zeigt den Monat als Zahl ohne führende Null an (1-12). Wenn der Bezeichner m unmittelbar hinter dem Bezeichner h oder hh steht, wird anstelle des Monats die Minute angezeigt.
mm | Zeigt den Monat als Zahl mit führender Null an (01-12). Wenn der Bezeichner mm unmittelbar hinter dem Bezeichner h oder hh steht, wird anstelle des Monats die Minute angezeigt.
mmm | Zeigt den Monatsnamen als Abkürzung (Jan-Dez) an.
mmmm | Zeigt den ausgeschriebenen Monatsnamen (Januar-Dezember) an.
yy | Zeigt das Jahr als zweistellige Zahl an (00-99).
yyyy | Zeigt das Jahr als vierstellige Zahl an (0000-9999).
h | Zeigt die Stunde ohne führende Null an (0-23).
hh | Zeigt die Stunde mit führender Null an (00-23).
n | Zeigt die Minute ohne führende Null an (0-59).
nn | Zeigt die Minute mit führender Null an (00-59).
s | Zeigt die Sekunde ohne führende Null an (0-59).
ss | Zeigt die Sekunde mit führender Null an (00-59).
z | Zeigt die Millisekunde ohne führende Null an (0-999).
zzz | Zeigt die Millisekunde mit führender Null an (000-999).
t | Zeigt die Uhrzeit wie in den Ländereinstellungen des Betriebssystemes definierte an.
tt | Zeigt die Uhrzeit wie in den Ländereinstellungen des Betriebssystemes definierte an.
am/pm | Verwendet die 12-Stunden-Zeitanzeige für den vorhergehenden Bezeichner h oder hh und zeigt alle Stunden vor Mittag mit dem String 'am' und alle Stunden nach Mittag mit dem String 'pm' an. Für den Bezeichner am/pm können Kleinbuchstaben, Großbuchstaben und jede Kombinnation davon angegeben werden.
a/p | Verwendet die 12-Stunden-Zeitanzeige für den vorhergehenden Bezeichner h oder hh und zeigt alle Stunden vor Mittag mit dem Zeichen 'a' und alle Stunden nach Mittag mit dem Zeichen 'p' an. Für den Bezeichner a/p können Kleinbuchstaben, Großbuchstaben und jede Kombinnation davon angegeben werden.
/ | Zeigt als Datumstrennzeichen das in den Ländereinstellungen des Betriebssystemes definierte Zeichen an.
: | Zeigt als Uhrzeittrennzeichen das in den Ländereinstellungen des Betriebssystemes definierte Zeichen an.
'xx'/"xx" | Zeichen, die in einfache oder doppelte Anführungszeichen eingeschlossen sind, werden ohne spezielle Formatierung übernommen.


PERCENT

Rechnet den prozentualen Anteil eines Wertes aus und gibt das Ergebnis zurück. Optional kann das Ergebnis in einer Variable gespeichert werden.

Syntax

PERCENT(Source, Percent [, Destination])

Rechnet den prozentualen Anteil Percent von Source aus und gibt das Ergebins zurück. Wenn der optionale Parameter Destination angegeben wurde, wird das Ergebnis zusätzlich in Destination gespeichert.

Beispiel

\PERCENT('1000', '10')\

Platziert den Wert 100 auf dem Report.


INC

Addiert zwei Werte und gibt das Ergebnis zurück. Optional kann das Ergebnis in einer Variable gespeichert werden.

Syntax

INC(Wert1, Wert2 [, Destination])

Addiert Wert1 zu Wert2 und gibt das Ergebnis zurück. Wenn der optionale Parameter Destination angegeben wurde, wird das Ergebnis zusätzlich in Destination gespeichert.


DEC

Hat die gleiche Funktionalität wie INC, mit dem Unterschied das mit DEC die Werte subtrahiert werden.


PRNNEG

Gibt nur einen Rückgabewert zurück wenn der Wert kleiner als 0 ist.

Syntax

PRNNEG(Source [, Format])

Gibt als Rückgabewert Source zurück wenn Source kleiner als 0 ist.

Wenn der optionale Parameter Format angegeben wurde, wird das Ergebnis nach den Vorgaben in Format formatiert.

siehe auch:

Format funktionen


PRNPOS

Hat die gleiche Funktionalität wie PRNNEG, mit dem Unterschied das mit PRNPOS nur ein Wert zurückgegeben wird wenn der Wert grösser als 0 ist.


FLNK

Gibt einen Wert als Hyperlink zurück.

Syntax

FLNK(Wert)

Gibt den in Wert angegebenen Hyperlink zurück.

Beispiel

\FLNK('http://www.delight.ch')\

Platziert den Link www.delight.ch auf dem Report.


EQ

Vergleicht zwei Werte und gibt Wahr oder Falsch zurück.

Syntax

EQ(Wert1, Wert2)

Beispiel

\if(EQ(a:feld1, '1'))\

Feld1 hat den Wert 1

\else\

Feld1 hat einen Wert ungleich 1

\endif\


NEQ

Hat die gleiche Funktionalität wie EQ, mit dem Unterschied das mit NEQ auf ungleicht (<>) abgefragt wird.


MONTH

Gibt den übergebenen Monat als String zurück.

Syntax

MONTH(AMonth [, Format])

Gibt den (als Nummer in AMonth übergeben) Monat als String mit dem in Format angegebenen String zurück.

Beispiel

\MONTH(3)\

Platziert den String März auf dem Report.


TRANSLATE

Gibt den Übersetzten Text des übergebenen Übersetzungsschlüssels zurück.

Syntax

TRANSLATE(AKey)

Beispiel

\TRANSLATE('IDS_Name')\

Platziert den String der unter IDS_Name in der Übersetzung angegeben wurde auf dem Report.


FRTF

Fügt RTF-Code direkt in die Ausgabedatei ein.

Syntax

FRTF(RTFCode)


Funktionen ohne Rückgabewert

Funktionen ohne Rückgabewert werden normalerweise in einem Scanelement verwendet.


SETV

Mit SETV kann einer Report Variable explizit ein Wert zugewiesen werden.

Syntax

SETV(VariableXY, '0')

Setzt die Report Variable VariableXY auf den Wert 0.


VAR

Mit VAR können Report Variablen explizit erstellt werden.

Syntax

VAR(Var1[, Var2, .., VarN])

Es können beliebig viele Variablen erzeugt werden, die einzelnen Variablen werden durch Kommas getrennt. Wenn die Variable schon existiert, hat die Funktion keinen Einfluss auf die Variable.


STOREVAL

Mit STOREVAL können Werte unter einem Bezeichner zwischengespeichert werden.

Syntax

STOREVAL(Bezeichner, Wert)

Speichert den in Wert übergebenen Wert unter dem Bezeichner Bezeichner. Der Wert kann später mit RESTOREVAL wieder hergestellt werden.


SETVAR

Mit SETVAR kann explizit eine Reportvariable erzeugt werden.

Syntax

SETVAR(a:feldname)

Erzeugt eine neue Reportvariable mit dem Namen feldname und weist ihr den aktuellen Wert von a:feldname zu.

Wenn bereits eine Variable mit dem selben Namen existiert, wird diese auf den neuen Wert gesetzt.


CTS

Die Funktion CTS inkrementiert eine Variable wenn ein String nicht leer ist. Ein String der nur aus Leerzeichen besteht wird als leer interpretiert.

Diese Funktion sollte nur in einem Scanelement verwendet werden.

Syntax

CTS(a:feld, report_variable [, NORESET])

Wenn der Wert in a:feld einen nicht leeren String enthält, wird die Variable report_variable inkrementiert.

Wird der optionale Parameter NORESET angegegeben, wird die Variable report_variable beim ersten Eintritt in den Scan nicht mit 0 initialisiert.

Beispiel

\scan(a)\

\a:number\ - \a:svalue\

\endscan, ctn(a:feldname, c_value)\

Anzahl nicht leerer Strings in Abfrage a: \c_value\

\scan(b)\

\b:number\ - \b:svalue\

\endscan, ctn(b:feldname, c_value, noreset)\

Anzahl nicht leerer Strings in Abfrage a und b: \c_value\


CTN

Hat die selbe Funktion wie CTS mit dem Unterschied, dass die Variable bei Werten ungleich 0 inkrementiert wird.

Diese Funktion sollte nur in einem Scanelement verwendet werden.


SUM

Die Funktion SUM summiert Werte und speichert das Ergebnis in eine Variable.

Diese Funktion sollte nur in einem Scanelement verwendet werden.

Syntax

SUM(a:amount, amount_sum [ , NORESET])

Der Wert in a:amount wird auf die Variable amount_sum summiert.

Wird der optionale Parameter NORESET angegegeben, wird die Variable amount_sum beim ersten Eintritt in den Scan nicht mit 0 initialisiert.


Beispiel 1

Sample1


Beispiel 2

Sample2


System Skripte

Mit sogenannten System-Skripten kann die Software um Verhalten und Funktionen erweitert werden.

Mit diesem Modul steht eine integrierte Entwicklungsumgebung zur Programmierung von System-Skripten zur Verfügung.


Konfiguration

Die Einstellungen werden in der Backstage-Ansicht unter Konfiguration => System Skripte aufgerufen.

Damit ein System-Skript ausgeführt wird, muss der Hacken in der Spalte Aktiv gesetzte sein. Über den Kontext wird bestimmt, wann das Skript ausgeführt wird.


System Skript installieren

 Top Letztes

System Skripte können wie fast jede Ressource über den MLXML-Import importiert werden.

siehe auch:

Business Integration MLXML-Datei importieren


Berichtsgeneratoren

Ein Berichtgenerator ist ein Modul für das Erstellen eines Berichtes.

Es sind Berichtgeneratoren für RTF-Berichte, XLS-Berichte und FastReport-Berichte verfügbar.


Änderungen des Basisreports

 Top

Betrachten wir die Situation, wenn Änderungen im Basisreport vorgenommen werden sollen. Öffnen Sie dazu den Basisreport (in unserem Beispiel - base.fr3) und ändern die benötigten Felder. Es soll z.B. die E-mail Adresse geändert werden:

Speichern Sie den Report. Wir öffnen jetzt den Nachfolgereport und vergewissern uns, dass die Änderung übernommen wurde:

Was wenn wir in den Basisreport Objekte hinzufügen müssen? Dies ist einfach, vergessen Sie jedoch nicht, dass im Basisreport und im Nachfolgereport keine zwei Objekte mit demselben Namen enthalten sein dürfen. Da wir uns im Basisreport befinden, wissen wir nicht wieviel Reporte von ihm ererbt sind und welche Objektnamen darin verwendet werden. Eine Regel demnach ist: fügen Sie ein Objekt in den Basisreport hinzu, so geben Sie den Namen folgenderweise an "Name_Report_Name_Objekt". Fügen Sie z.B. in den Basisreport das Objekt "Text" ein und geben die Namen "BaseMemo3" dafür ein.

Zum Entfernen oder Verschieben der Objekte gibt es keine Beschränkungen.


Erstellung des Reports

 Top

Erstellen wir einen einfachen Report, welcher sich auf einen Basisreport bezieht. Unser Report soll wie folgt aussehen:

Zuerst wird der Basisreport erstellt. Dieser soll im Reportkopf das Firmenlogo und die Unternehmensdaten enthalten. Nun erstellen wir den neuen Report und fügen dort die Objekte ein:

Speichern wir den Report unter den Namen "base.fr3". In welchem Ordner? Das hängt davon ab welche Einstellungen Sie vorgenommen haben. Standardmäßig wird die Schablone in dem Ordner gespeichert, der auch die ausführende Datei enthält. Den Ordner für das Speichern der Schablonen kann man in der Komponente TfrxDesigner eingeben, über die Eigenschaft TemplateDir.

Jetzt erstellen wir den Nachfolgereport. Dazu wählen Sie im Menü "Datei|Neu..." und gehen im sich öffnenden Fenster auf den Tab "Vorlagen". Wir suchen unsere Datei base.fr3 in der Liste, wählen diese aus und setzen ein Häkchen bei "Report erben":

screenshot - 18.05.2009 , 18_46_34

FastReport erstellt einen neuen Report der alle Elemente des Basisreports enthält. Diese sind mit einem Schloss markiert:

Was bedeutet dies? Diese Objekte können nicht entfernt oder verändert werden. Ebenfalls können sie auch nicht auf ein anderes Band verschoben werden. Alles andere kann bearbeitet werden (Text, Farbe, Maße). Beachten Sie jedoch, wenn man eine Änderung vornimmt (z.B. Schriftfarbe) bei einem Objekt mit einem Schloß, so wird die Änderung in diesem Report gespeichert. Weitere Änderungen im Basisreport werden nicht mehr für das Objekt übernommen! Wenn z.B. ein Objekt im Basisreport weiß ist und Sie ändern die Farbe im Nachfolgereport in rot, so wird bei einer Änderung der Farbe im Basisreport in grün, der Nachfolgereport trotzdem ein rotes Objekt enthalten. Hätten Sie die Farbe im Nachfolgereport nicht verändert, so wäre die Änderung im Basisreport übernommen worden. Dies gilt auch für Änderungen des Textes, der Maße und all der anderen Eigenschaften des Objektes.

Kehren wir nun wieder zu unserem Report zurück. Was wir noch machen müssen ist den Seitekopf hinzufügen und das Band mit den Daten:

Der Report ist nun fertig.


filtern

Eine Liste oder Tabelle filtern bedeutet, dass nur Daten, die einem bestimmten Kriterium entsprechen, angezeigt werden.

So kann z.B. die Adressliste nach dem Land "Switzerland" gefiltert werden, um alle Adressen aus der Schweiz zu erhalten.


Steuern der Vererbung

 Top

Vorhin haben wir die Erstellung des Nachfolgereports von Anfang an betrachtet. Was jedoch wenn wir schon einen Report haben und dieser sich auf den Basisreport beziehen soll? Dazu laden wir den Report der zum Nachfolgereport werden soll und gehen ins Menü "Report|Optionen...". Im Tab "Vererbung" befinden sich die Steuerungselemente der Vererbung:

screenshot - 18.05.2009 , 14_57_31

Wir müssen die Option "Von Basisreport erben" wählen und den Report aus der Liste aussuchen. So kann man auch den Weg zu den Reportvorlagen eingeben. Sie müssen jedoch vorsichtig sein, denn die Vorlagen, die einen anderen Weg verwendet haben, werden vielleicht nicht geladen. Nach dem Klick auf OK wird FastReport die beiden Reporte nun verbinden. Dabei kann folgende Warnmeldung auftauchen:

screenshot - 18.05.2009 , 18_49_27

Dies passiert, wenn in den Reporten Objekte mit gleichen Namen enthalten sind. Diese können entweder aus dem Nachfolgereport entfernt oder umbenannt werden.


Report mit Parameterabfragen

 Top

Report mit ParameterabfragenTop Previous Next

Betrachten wir die Erstellung eines Reports, bei welchem, vor dem start, eine Parameterabfrage im Dialogfenster erfolgt. Dazu machen Sie folgendes.

Erstellen Sie einen neuen Report. Gehen auf die Seite 2Saten" und fügen dort ein neues Objekt "Anfrage ADO". Rufen Sie dessen Editor auf und fügen folgenden Text der Anfrage hinzu:

select * from Customer where CustNo > :p1

Fügen sie in den Report eine neuen Dialoghinzu. Legen auf die Form die Komoponenten Label, Edit, Button:

Stellen Sie die Eigenschaften der Komponente wie folgt ein:

Label1:

Caption = 'Auswählen wenn CustNo größer als'

Edit1:

Text = '2000'

Button1:

Caption = 'OK'

ModalResult = mrOk

Button2:

Caption = 'Abbruch'

ModalResult = mrCancel

Öffnen Sie den Editor der Eigenschaft Params der Komponente Query und stellen den Parameter ein:

screenshot - 18.05.2009 , 18_40_27

Jetzt wechseln Sie auf die Seite mit der Reportseite und erstellen folgenden Report:

Beim Start des Reports erscheint auf den Bildschirm ein Dialog in den Sie einen Wert eintragen sollen. Nach dem Eintragen des benötigten Wertes klicken Sie auf OK. Der Report wird nun ausgeführt und zeigt die Kunden, deren Nummer größer als die eingegebene ist.