Schritt 11: Einen Bericht erstellen

Top  Previous  Next

Zur Ausgabe Ihrer Datensätze in aufbereiteter Form hält TurboDB Studio grundsätzlich zwei verschiedene Möglichkeiten bereit. Eine davon sind Berichte, die - ganz ähnlich wie Formulare - in einem graphischen Editor bearbeitet werden können. Sie können die verschiedensten Farben und Schriftarten enthalten. Auch Bilder sind für diese Berichte kein Problem. Die Alternative ist textorientiert und wird in den weiteren Schritten beschrieben.

Nebenbei sei bemerkt, dass die Ausgabe von Daten sich nicht auf das Drucken beschränkt, selbst wenn dies die Hauptanwendung darstellen mag. Demnach stehen weitere Alternativen zur Auswahl, wie zum Beispiel das Abspeichern eines Berichts als DOS-Text oder im HTML-Format.

Wir wollen nun einen Bericht für die Fahrzeuge entwerfen, genauer gesagt eine Liste des Fuhrparks. Selektieren Sie dazu den Ordner KFZ im Projektnavigator und drücken Sie die rechte Maustaste um das Kontextmenü aufzurufen. Klicken Sie hier auf den Menüpunkt Neu/Bericht.... Nachdem Sie im Dateiauswahl-Dialog die Datei für den neuen Bericht angelegt haben, startet der Bericht-Editor. Vom Prinzip her funktioniert er ganz ähnlich wie der Formulareditor. Seine Funktionalität weist jedoch einige Unterschiede auf, denn jetzt geht es ja in erster Linie darum, die Daten "zu Papier zu bringen".

Hinter dem Schlagwort Bericht verbergen sich viele Arten von Darstellungsformen - egal, ob es sich dabei um Etiketten, Briefumschläge, Serienbriefe oder Listen handelt. In unserem Beispiel entscheiden wir uns für eine tabellarische Liste, aber dazu später mehr.

Zunächst sollten werfen wir einen Blick auf das Hauptmenü, welches durch das Öffnen des Berichteditors um den Menüpunkt Bericht angereichert wurde.

Wählen Sie im Menü den Punkt Bericht/Seiten-Eigenschaften..., was einen neuen Dialog öffnet. Hier werden Angaben zu den Ausmaßen einer Seite gemacht, auf der die Daten untergebracht werden sollen. Da ja meistens auf Seiten genormter Größen gedruckt wird, sind die gebräuchlichsten in der Auswahlbox links erhältlich. Eine manuelle Eingabe sollte also lediglich bei exotischen Formaten notwendig sein. Wenn die Ausgabe auf einer um 90 Grad gedrehten Seite erfolgen soll, wählen Sie einfach die Option Querformat.

Nun fehlt nur noch das Festlegen der Seitenränder auf der dritten Seite. Bedenken Sie, dass alle Größenangaben in Millimeter gemacht werden müssen. Wenn Sie die Option An Druckbereich anpassen aktivieren, dann wird der Rand automatisch durch den Bereich, in dem Ihr Drucker drucken kann, festgelegt.

Mit dem Menüpunkt Bericht/Bericht-Eigenschaften... können Sie einen Filter, Selektion genannt,  für die zu druckenden Daten festlegen. Außerdem können Sie die Sortierung der Daten bestimmen.

Mit Bericht/Liste der Datenfelder anzeigen... können Sie schließlich noch das Datenfelder-Fenster einblenden, welches alle im Projekt enthaltenen Tabellen und ihre Felder enthält. Mit Hilfe dieses Fensters können Sie die Datenfelder auswählen, die im Bericht erscheinen sollen indem Sie die Felder einfach auf den Bericht ziehen.

 

Tut_11_FieldsList

Mit dem Datenfelder-Fenster können Sie die Daten Ihrer Tabellen mit "Ziehen und Ablegen" bequem in den Bericht einfügen

 

Doch zunächst sollten Sie Ihre Aufmerksamkeit auf die Palette am linken Rand des Berichteditors richten. Hier gibt es verschiedene Elemente, wovon aber momentan nur die ersten beiden interessant sind: Klicken Sie auf den Schalter Band einfügen und anschliessend auf den Bericht, um einen Bereich (auch Band genannt) einzufügen. Eine Auswahlliste mit verschiedenen Bereichen erscheint. Wählen Sie hier Hauptkopf aus und wiederholen Sie den Vorgang danach um noch einen einen Hauptdaten-Bereich einzufügen.

Um den Bericht mit Daten zu füllen, ziehen Sie nun die Felder Bezeichnung und Modelljahr aus dem Datenfelder-Fenster auf den Hauptdaten-Bereich. Die Felder sind automatisch mit den Datenfeldern verknüpft wenn Sie sie aus der Liste der Datenfelder auf den Bericht ziehen. Klicken Sie nun noch Feld einfügen in der Palette an, um ungebundene Felder für die Beschriftung auf dem Hauptkopf-Bereich zu platzieren. Ändern Sie den Inhalt des Feldes indem Sie die Eigenschaft Formel anwählen und dann den Schalter Tut_BrowseButton klicken. In dem erscheinenden Editor-Fenster können Sie den anzuzeigenden Text eingeben. In unserem Fall wären das Fahrzeugbezeichnung bzw. Baujahr.

 

Tut_11_ReportDesigner

Der Bericht-Editor ähnelt dem Formulareditor, enthält aber verschiedene Bereiche für einen Bericht

 

Im Unterschied zu Formularen kann ein Bericht verschiedenste Bereiche enthalten. Die Liste der verfügbaren Bereiche haben Sie ja schon gesehen. Die Funktion dieser verschiedenen Bereiche besteht in der Gliederung des Berichtes. Der Report Titel wird nur einmal ganz zu Beginn des Berichtes ausgedruckt und ist deshalb der geeignete Platz für Überschriften, den Namen des Autors, Ort, Datum usw. Dementsprechend wird die Report Zusammenfassung nur am Ende des Berichtes gedruckt und enthält meistens Zusammenfassungen, Summen usw. Der Hauptdaten-Bereich wird für jeden Datensatz ausgedruckt, deshalb enthält er die eigentlichen Datenfelder. Hauptkopf- und Hauptfuß-Bereich sind oben und unten auf jeder Seite zu finden. Es gibt noch jede Menge anderer Bereiche, die aber im Kapitel Bericht-Bereiche näher erläutert werden.

Jetzt könnten Sie z.B. noch ihre Schriftart ändern, indem Sie bei der Eigenschaft Schriftart eine neue Schriftart und Ihre Darstellung aus den entsprechenden , von Windows bekannten, Listen auswählen.

Natürlich können Sie jederzeit in noch weitere Felder aus der Elementpalette einfügen, beispielsweise ein zusätzliches Feld einbauen, das die Firma und das Druckdatum ausgibt. Schreiben Sie dazu in den Formeleditor den Ausdruck

["Autohaus Hopfinger, " + DateStr(Today)]

Da es sich hierbei um einen berechneten Ausdruck handelt, müssen zu Beginn und am Ende des Ausdrucks eckige Klammern angegeben werden. Statischen Text können Sie direkt (auch ohne Anführungszeichen) in die Felder schreiben.

 

Mit dem Berichteditor kann man auch Serienbriefe gestalten. Das Vorgehen ist dabei das selbe wie beim Erstellen dieses Beispielberichts. Der Unterschied liegt darin, dass bei einem Serienbrief pro Datensatz eine komplette Seite gedruckt werden muss. Zu diesem Zweck gibt es bei den Bericht-Bereichen eine Eigenschaft Seitenvorschub. Diese bewirkt, dass nach dem Drucken dieses Bereiches eine neue Seite begonnen wird. Für Serienbriefe ist es deshalb durchaus sinnvoll, auf die Bereichsvielfalt zu verzichten und alle Daten im Hauptbereich auszugeben.

Eine andere Besonderheit von Serienbriefen ist es, dass die Daten üblicherweise in ein Anschreiben in Form eines mehr oder weniger langen Textes eingebettet sind. Das bringt die Schwierigkeit mit sich, dass man nicht einfach ein Datenfeld für die Ausgabe der Inhalte der Datenbank benutzen kann, es sei denn man formatiert den Bericht entsprechend. Da dies aber nicht immer sinnvoll ist, gibt es auch noch die Möglichkeit, Daten eingebettet in einen Text auszugeben.

Zunächst brauchen wir einen neuen Bericht, dieses mal für die Tabelle Kunden. Mittlerweile wissen Sie ja schon wie das geht: Einfach den Ordner Kunden anklicken, mit der rechten Maustaste das Kontextmenü aufrufen und Neu/Bericht... wählen und im Dateiauswahl-Dialog den Dateinamen Serienbrief.ber eintippen.

Klicken Sie wieder auf Band hinzufügen um einen Hauptdaten-Bereich zu erzeugen. Klicken Sie im Datenfelder-Fenster die Tabelle Kunden an und ziehen Sie die Felder Name, Vorname, Straße, PLZ und Ort in den Bericht. Zusätzlich zu diesen Feldern brauchen wir noch zwei ungebundene Felder aus der Palette: Eines für die Anrede und eines für den Text des Anschreibens.

Klicken Sie das Feld für die Anrede an und rufen Sie mit dem Schalter Tut_BrowseButton der Formel-Eigenschaft den Formeleditor auf. Tragen Sie folgenden Ausdruck als Formel ein:

['Sehr geehrte' + CHOICE($Kunden.Geschlecht, 'r Herr ', ' Frau ') + $Kunden.Name + ',']

Wie bereits oben erwähnt, bedeuten die eckigen Klammern, dass es sich nicht um einen Text handelt, sondern um einen berechneten Ausdruck oder ein Datenfeld. CHOICE ist eine TurboPL-Funktion und bewirkt, dass abhängig vom Inhalt des Datenfeldes Geschlecht entweder der erste Text ausgegeben wird oder der zweite.

Ganz ähnlich sieht dann auch die Formel für das Anschreiben aus:

nach unseren Unterlagen haben Sie kürzlich einen [$Kunden.Fahrzeug.Bezeichnung] der Firma [$Kunden.Fahrzeug.Hersteller] bei uns erworben.

Leider wurde für dieses Fahrzeug ein sicherheitskritischer Produktionsfehler bekannt, der schnellstmöglich repariert werden muß.

Wenden Sie sich deshalb bitte umgehend an unsere Zentrale in Radstadt.

 

 

Mit freundlichen Grüßen

 

 

Alois Hopfinger

Wie Sie sehen, können Sie auch einfach den Text eintippen und, in eckigen Klammern eingefasst, die Datenfelder dazwischen einstreuen. Falls Ihnen die Feldbezeichnung Kunde.Fahrzeug.Bezeichnung seltsam vorkommt: Bei der Spalte Fahrzeug handelt es sich um ein Koppelfeld und Dank des ADL-Mechanismus' ist es möglich über diese sogenannte Koppelfeld-Notation auf alle Felder der verknüpften Tabelle zuzugreifen.

 

Während der Arbeit an dem Bericht, können Sie im Menü Zusätze jederzeit einen Probeausdruck auf dem Drucker oder in der Druckvorschau produzieren. Alternativ dazu können Sie das Druckvorschausymbol der Schalterleiste oder die Taste [F9] verwenden. So sehen Sie immer sofort, wie sich Änderungen auswirken und müssen nicht "auf Verdacht" arbeiten.

 

Tut_11_ReportPreview

Auch während der Arbeit an Ihrem Bericht können Sie jederzeit einen Blick auf das Resultat werfen.

 

Wenn der Bericht fertig gestellt ist, können Sie ihn auch aus dem Projektnavigator heraus ausdrucken. Dazu selektieren Sie ihn und wählen Ausführen aus dem Kontextmenü. Ein Doppelklick mit der linken Maustaste oder ein Klick auf den Schalter Ausführen startet ebenfalls den Ausdruck.

 

Wenn Sie unseren Serienbrief in der Druckvorschau betrachten, dann wird ihnen vielleicht auffallen, dass auch Kunden angeschrieben werden, die gar kein Auto gekauft haben. Auch die Tatsache, dass die Kunden unabhängig von der Automarke und des Modells angeschrieben werden, entspricht nicht ganz der Praxis.

Beide Probleme können Sie ganz einfach lösen, indem Sie im Menü Bericht/Bericht-Eigenschaften... wählen um den Bericht-Einstellungen Dialog  zu öffnen. Klicken Sie her die Zeile Markierung | Nur Markierte Datensätze an und Schließen Sie den Dialog mit Ok.

 

Tut_11_ReportSettings

Im Bericht-Eigenschaften Dialog können Sie die Daten für den Bericht filtern und sortieren

 

Wenn Sie nun den Bericht in der Vorschau oder mit Doppelklick auf das Symbol im Projektnavigator starten, so wird kein einziger Brief gedruckt. Das kommt daher, dass der Bericht jetzt nur noch markierte Datensätze druckt und weder bei der Vorschau noch bei einem Start aus dem Projektnavigator eine passende Datengrundlage vorhanden ist.

Öffnen Sie daher das Formular Kunden mit einem Doppelklick auf das Symbol im Projektnavigator und schalten Sie mit dem Befehl Ansicht/Formularansicht auf die Tabellenansicht um. Sie können natürlich auch einfach den Registerreiter "Tabelle" anklicken. Sortieren Sie die Tabelle nach Fahrzeugen indem Sie unter Ansicht/Sortierung... oder im Kombinationsfeld in der Schalterleiste den Eintrag Fahrzeug auswählen.

Nun können Sie mit [Strg]+Klick alle Kunden markieren, die beispielsweise einen VW Golf GL von 1989 gekauft haben. Wählen Sie danach im Menü den Befehl Ausführen/Serienbrief um den Bericht namens Serienbrief auszuführen. Wenn Sie Ihren Bericht nicht wie oben vorgeschlagen Serienbrief benannt haben, dann steht im Menü Ausführen statt Serienbrief der Name ihres Berichts.

Natürlich haben Sie noch weitere Möglichkeiten, die Suche komfortabler zu gestalten, beispielsweise mit dem Suchen mit Bedingung Dialog, den Sie ja schon aus Schritt 6: Suchen und markieren kennen. An dieser Stelle sei nur noch auf das Beispielprojekt KFZ verwiesen, auf dem dieses Tutorial basiert. Dort gibt es in der Tabellenansicht der Formulare KFZ und Kunden Schalter, die verschiedene Lösungen für das gezielte Suchen und markieren (mit anschließendem Drucken) von Datensätzen zeigen.