Base
 

Kapitel 6
Berichte

 

Copyright

Dieses Dokument unterliegt dem Copyright © 2015. Die Beitragenden sind unten aufgeführt. Sie dürfen dieses Dokument unter den Bedingungen der GNU General Public License (http://www.­gnu.org/licenses/gpl.html), Version 3 oder höher, oder der Creative Commons Attribution License (http://creativecommons.org/licenses/by/3.0/), Version 3.0 oder höher, verändern und/oder weitergeben.

Warennamen werden ohne Gewährleistung der freien Verwendbarkeit benutzt.

Fast alle Hardware- und Softwarebezeichnungen und weitere Stichworte und sonstige Angaben, die in diesem Buch verwendet werden, sind als eingetragene Marken geschützt.

Da es nicht möglich ist, in allen Fällen zeitnah zu ermitteln, ob ein Markenschutz besteht, wird das Symbol (R) in diesem Buch nicht verwendet.

Mitwirkende/Autoren

Robert Großkopf

Jost Lange

Jochen Schiffers

Michael Niedermair

 

 

Rückmeldung (Feedback)

Kommentare oder Vorschläge zu diesem Dokument können Sie in deutscher Sprache an die Adresse discuss@de.libreoffice.org senden.

Vorsicht

 

Alles, was an eine Mailingliste geschickt wird, inklusive der E-Mail-Adresse und anderer persönlicher Daten, die die E-Mail enthält, wird öffentlich archiviert und kann nicht gelöscht werden. Also, schreiben Sie mit Bedacht!

Datum der Veröffentlichung und Softwareversion

Veröffentlicht am 01.02.2023. Basierend auf der LibreOffice Version 7.5.

Inhalt

Kapitel 6 Berichte

Berichte mit dem Report-Designer

Die Benutzeroberfläche des Report-Designers

Gliederung eines Berichtes

Allgemeine Eigenschaften von Feldern

Besondere Eigenschaften des grafischen Kontrollfeldes

Diagramme im Bericht einbinden

Dateneigenschaften von Feldern

Funktionen im Report-Designer

Formeleingaben

Benutzerdefinierte Funktionen

Formeleingabe für ein Feld

Bedingte Anzeige

Bedingte Formatierung

Beispiele für Berichte mit dem Report-Designer

Rechnungserstellung

Ausdruck von Berichten zum aktuellen Datensatz des Formulars

Aufbau der Filtertabelle

Aufbau des Makros zum Start des gefilterten Berichtes

Wechselnde Einfärbung von Zeilen

Zweispaltige Berichte

Bugs und Workarounds beim Report-Designer

Der Inhalt eines Feldes aus einer Abfrage erscheint nicht

Ein Bericht lässt sich nicht ausführen

Datums- und Zeitwerte werden in Diagrammen nicht angezeigt

Gruppierungen mit wiederholendem Bereich zeigen nur den ersten Wert

Ein Neustart der Seitenzählung mit der Gruppe ist nicht möglich

Nachträgliche Bearbeitung des Berichtsdokuments

Andere Formen der Berichtserstellung

Das alte Berichtsmodul

Die BaseReportExtension

Weitere Berichtsmöglichkeiten

 

 

Berichte mit dem Report-Designer

Mit Hilfe von Berichten werden Daten so dargestellt, dass sie auch für Personen ohne Datenbankkenntnisse gut lesbar sind. Berichte können

Um einen Bericht zu erstellen, muss die Datenbankgrundlage des Berichtes gut vorbereitet sein. Ein Bericht kann nicht, wie ein Formular, Unterberichte und damit zusätzliche Datenquellen aufnehmen. Ein Bericht kann auch nicht, wie im Formular, über Listenfelder andere Daten darstellen als in der zugrundeliegenden Datenquelle vorhanden sind.

Am besten werden Berichte mit Abfragen vorbereitet. Dort sollten alle variablen Inhalte festgeschrieben werden. Es sollte aber, wenn in dem Bericht noch sortiert werden soll, auf jeden Fall eine Abfrage erstellt werden, die das Sortieren zulässt. Dies bedeutet, dass Abfragen im direkten SQL-Modus unter diesen Bedingungen vermieden werden müssen. Muss der Datenbestand über so eine Abfrage zur Verfügung gestellt werden, so lässt sich eine Sortierung erreichen, indem aus der Abfrage eine «Tabellenansicht» erstellt wird. Diese Ansicht ist in der grafischen Benutzeroberfläche von Base immer sortierbar und filterbar.

Vorsicht

 

Der Report-Designer ist beim Editieren eines Berichtes mit laufendem Abspeichern zu begleiten. Dazu zählt nicht nur das Abspeichern im Report-Designer selbst nach jedem wichtigen Arbeitsschritt, sondern auch das Abspeichern der gesamten Datenbank.

Je nach Version von LibreOffice kann es beim Editieren auch zu plötzlichen Abstürzen des Report-Designers kommen.

Die Funktionsweise fertiger Berichte ist davon nicht betroffen – auch wenn diese Berichte unter einer anderen Version erstellt wurden, wo eben z. B. das oben genannte Verhalten nicht auftaucht.

Hinweis

Der Report-Designer ist seit LO 4.1 bereits so in LO integriert, dass er nicht mehr sichtbar in den Erweiterungen («Extensions») erscheint. Es sollte auf jeden Fall vermieden werden, neben dem integrierten Report-Designer noch eine nicht zu der LO-Version passende Report-Designer-Erweiterung zu installieren. Bei der Nutzung von LO-Versionen, die von Ubuntu angeboten werden, ist darauf zu achten, dass der Report-Designer auch wirklich mit installiert wird.

Neben dem Report-Designer existiert auch in LibreOffice Base weiterhin ein Assistent zur Berichtserstellung mittels eines Serienbriefverfahrens. Dieser Assistent ist allerdings nicht zugänglich, sobald der Report-Designer installiert wurde.

Der Assistent ist weitgehend selbsterklärend. Er produziert schnell übersichtliche Berichte in vorgefertigten Designs. Seine Berichte sind rein tabellarisch angelegt.

Da mit dem Report-Designer Berichte weiter ausgestaltet werden können, behandelt dieses Kapitel nur diese Berichtsvariante. Auch der Report-Designer kann über einen Assistenten gestartet werden. Hier wird allerdings die Bearbeitung in der Entwurfsansicht erläutert.

Leider tauchen im Report-Designer immer wieder ärgerliche Bugs auf. Am besten dafür einfach den Bugtracker https://bugs.documentfoundation.org/buglist.cgi?quicksearch=ReportBuilder aufsuchen. Dort stehen teilweise auch Tipps zum Umgehen von Bugs. So wird z. B. Bei einer Gruppierung des Berichts der Inhalt des äußersten Gruppe laufend wiederholt (Bug 82097). Der Tipp dazu: Eine weitere Gruppierung als erste Gruppierung benennen und diese einfach leer lassen.

Die Benutzeroberfläche des Report-Designers

Über Berichte → Bericht in der Entwurfsansicht erstellen … wird der Report-Designer aufgerufen.

 

Der Report-Designer startet in einer dreiteiligen Ansicht. Links ist die vorläufige Einteilung des Berichts in Seitenkopf, Detail und Seitenfuß zu sehen, in der Mitte befinden sich die entsprechenden Bereiche, die Inhalte des Berichtes aufnehmen, und rechts werden die Eigenschaften des Berichtes angezeigt. Die oberen und unteren Seitenränder sind nicht sichtbar. Die Größe dieser Ränder kann über Format → Seite eingesehen und geändert werden.

Gleichzeitig wird bereits der Dialog Feld hinzufügen angezeigt. Dieser Dialog entspricht dem Dialog aus der Formularerstellung. Er erzeugt Felder mit der entsprechenden dazugehörigen Feldbezeichnung.

Ohne einen Inhalt aus der Datenbank lässt sich ein Bericht nicht sinnvoll nutzen. Deshalb wird zu Beginn direkt der Reiter Daten angezeigt. Hier kann der Inhalt des Berichtes eingestellt werden, im obigen Beispiel Art des Inhalts → Tabelle und Inhalt → Ansicht_Bericht_Mahnung. Solange SQL-Befehl analysieren → Ja eingestellt ist, kann der Bericht auch Sortierungen, Gruppierungen und Filterungen vornehmen. Da bereits als Grundlage eine Ansicht (View) gewählt wurde, kommt eine Filterung nicht zum Einsatz. Sie wurde bereits in der der Ansicht zugrundeliegenden Abfrage vorgenommen.

Hinweis

Als Art des Inhaltes kann eine Tabelle, eine Ansicht (View), eine Abfrage oder direkt SQL-Code angegeben werden. Am besten zu handhaben ist der Report-Designer, wenn er die Daten so weit wie möglich aufbereitet erhält. So können z.B. in Abfragen Berechnungen vorher durchgeführt werden und auch der Bereich der Daten, die im Bericht erscheinen sollen, begrenzt werden.

Vor allem bei früheren LO-Versionen kommt es manchmal zu Problemen, wenn Abfragen aus mehreren Tabellen später gruppiert werden sollen. Solche Probleme können vermieden werden, indem auf eine Ansicht zugegriffen wird. Eine Ansicht erscheint für Programmteile wie den Report-Designer wie eine Tabelle der Datenbank. Feldnamen sind dann unverrückbar vorgegeben. Der anschließende Zugriff mit Sortier- und Gruppierbefehlen ist fehlerfrei möglich.

Hinweis

Der Report-Designer kennt nicht alle Datentypen aller möglichen Datenbanken. Enthält ein Datentyp nur Text, so sollte er deshalb durch eine Abfrage in einen bekannten Textdatentyp umgewandelt werden. Dieses Problem hat vor allem Firebird mit dem Datentyp CLOB:

  1. 001 SELECT CAST( ( "CLOB-Feld" ) AS VARCHAR ( 8000 ) ) AS "Text_lang"  

  2. 002 FROM "Tabelle" 

Zwei Ausgabeformate für Berichte sind über Datei → Ausgabeformat wählbar: Textdokument, also ein Writer-Dokument oder Tabellendokument, also ein Calc-Dokument. Soll einfach nur eine tabellarische Übersicht ausgegeben werden, so ist das Calc-Dokument für die Berichtserstellung eindeutig vorzuziehen. Es ist wesentlich schneller erstellt und kann anschließend auch besser nachformatiert werden, da weniger Formatvorgaben berücksichtigt werden und Spalten einfach nach der erforderlichen Breite anschließend entsprechend gezogen werden können.

Standardmäßig sucht der Report-Designer als Datenquelle die erste Tabelle der Datenbank aus. So ist auf jeden Fall gewährleistet, dass zumindest ein Ausprobieren der Funktionen möglich ist. Erst nach Auswahl der Datenquelle kann der Bericht mit Feldern beschickt werden.

Schaltflächen inhaltliche Bearbeitung

Schaltflächen Elementausrichtung

 
 
 
 
 
 

Der Report-Designer stellt einige zusätzliche Schaltflächen zur Verfügung, so dass in der vorstehenden Tabelle noch einmal die Schaltflächen mit einer entsprechenden Beschriftung abgebildet sind. Die Schaltflächen zur Elementausrichtung werden in diesem Kapitel nicht weiter beschrieben. Sie sind hilfreich beim schnellen Anpassen von Feldern in einem Bereich des Report-Designers. Prinzipiell geht dies alles aber auch über die direkte Bearbeitung der Eigenschaften des jeweiligen Feldes. Zusätzlich gibt es noch die Symbolleiste «Zeichnungsobjekte». Diese Leiste wird standardmäßig nicht angezeigt. Die Zeichnungsobjekte sind auch über Einfügen → Form verfügbar.

Wie schon bei den Formularen ist es hilfreich, den entsprechenden Navigator über Ansicht → Berichtsnavigator oder die entsprechende Schaltfläche bei Problemen aufzurufen. So kann es zum Beispiel sein, dass durch einen unvorsichtigen Klick beim Start des Report-Designers die Eigenschaften zu den Daten des Berichts verzweifelt gesucht werden. Diese Daten können nur über den Bericht-Navigator erreicht werden:

 

Ein Klick mit der linken Maustaste auf Bericht und die Eigenschaften des Berichtes sind wieder erreichbar.

Der Navigator zeigt zu Beginn neben den sichtbaren Unterteilungen des Dokumentes (Seitenkopf, Gruppen, Detail und Seitenfuß) noch die möglichen Inhalte von Funktionen an. Gruppen ordnen z. B. alle anzumahnenden Medien einer Person zu, so dass nicht viele Einzelmahnungen erstellt werden müssen. Detailbereiche zeigen die zu den Gruppen passenden Datensätze an. Funktionen dienen z. B. zur Berechnung einer Summe einer Rechnung.

Um bei dem oben geöffneten Beispiel sinnvolle Ausgaben zu erhalten, muss der Inhalt der Ansicht gruppiert wiedergegeben werden. Ein Leser soll gebündelt die Anmahnungen für alle seine entliehenen und überzogenen Medien erhalten.

Über Ansicht → Sortierung und Gruppierung bzw. den entsprechenden Button startet die Gruppierungsfunktion. Hier können neben Gruppen, die angezeigt werden sollen, auch einfach Sortierungen eingestellt werden. Soll nur sortiert werden, so wird zwar eine Gruppierung ausgewählt, der Gruppenkopf und der Gruppenfuß aber auf auf «Nicht vorhanden» eingestellt.

Zuerst erfolgt die Sortierung nach dem obersten eingetragenen Feld. Gegebenenfalls müssen also die Einträge entsprechend verschoben werden, wenn die gewünschte Sortierung nicht eintritt.

 

Abbildung 1: Sortierung und Gruppierung

 

Hier wurde nach dem Feld "Leser_Name" gruppiert und sortiert. In die obere Tabelle können untereinander mehrere Felder eingetragen werden. Soll z. B. zusätzlich nach dem "Leih_Datum" gruppiert und sortiert werden, so ist dies als zweite Zeile anzuwählen.

Direkt unter der Tabelle erscheinen verschiedene Gruppenaktionen zur Auswahl: Eine Verschiebung der Gruppe nach oben, eine Verschiebung nach unten oder die komplette Löschung der Gruppe. Da für den geplanten Bericht nur eine Gruppierung notwendig ist, steht in Abbildung 1 nur mit dem Symbol ganz rechts die Gruppenaktion → Löschung zur Verfügung.

Die Eigenschaft → Sortierung ist selbsterklärend. Bei der Erstellung des Eintrags hat sich im Report-Designer auf der linken Seite sofort eine neue Einteilung gebildet. Neben der Feldbezeichnung "Leser_Name" steht dort noch «Kopf». Diese Einteilung nimmt also die Kopfzeile des Berichtes auf. In der Kopfzeile steht nachher z. B. der Name der Person, die eine Mahnung erhalten soll. Ein Gruppenfuß ist hingegen bisher nicht vorhanden. Er könnte z. B. den zu zahlenden Betrag oder den Ort und das aktuelle Datum sowie einen Bereich für die Unterschrift der anmahnenden Person enthalten.

Standardmäßig wird nach jedem Wert gruppiert. Ändert sich also "Leser_Name", so entsteht eine neue Gruppe. Alternativ kann hier nach dem Anfangsbuchstaben gruppiert werden. Das würde aber bei einem Mahnverfahren alle Leser-Nachnamen mit gleichem Anfangsbuchstaben zusammenfassen in einer Gruppe. 'Schmidt', 'Schulze' und 'Schulte' erhielten so eine gemeinschaftliche Mahnung. Eine wohl recht sinnlose Aktion an dieser Stelle für dieses Beispiel.

Nur wenn nach Anfangsbuchstaben gruppiert wird, kann noch zusätzlich eingegeben werden, nach wie vielen Werten die nächste Gruppe beginnen soll. Denkbar wäre hier z. B. eine Gruppierung für ein kleines Telefonbüchlein. Je nach Bekanntenkreis reicht da vielleicht eine Gruppierung nach jedem 2. Wert, also A und B in einer Gruppe, dann C und D usw.

Je nach Einstellung kann eine Gruppe entweder mit dem ersten Detail zusammen gehalten werden, oder, sofern möglich, als ganze Gruppe. Standardmäßig ist Zusammenhalten → Keines eingestellt. Für ein Mahnverfahren wird vermutlich sowieso die Gruppe so angeordnet, dass für jede Person, die eine Mahnung erhalten soll, eine Seite ausgedruckt wird. Daher ist stattdessen an anderer Stelle zu wählen, dass nach der Gruppe jeweils ein Seitenumbruch erfolgt, bevor der nächste Wert abzuarbeiten ist. Ein Zusammenhalten der ganzen Gruppe bewirkt gegebenenfalls, dass bei zu viel Inhalt auf der ersten Seite der gesamte Inhalt auf die Folgeseite rutscht!

 

Sind Gruppenkopf und gegebenenfalls Gruppenfuß ausgewählt, so erscheinen diese Elemente als Teile des Berichtnavigators unter dem entsprechenden Feldnamen "Leser_Name". Zusätzlich wird auch da wieder die Möglichkeit für Funktionen geboten, die sich nur auf diese Gruppe beschränken.

Das Hinzufügen der Felder läuft über Ansicht → Feld hinzufügen wie im Formular. Allerdings sind hier die Beschreibungen und die Inhaltsfelder nicht miteinander gruppiert. Beide können also unabhängig voneinander verschoben, in der Größe beeinflusst und auf unterschiedliche Einteilungsebenen gezogen werden. Auch das direkte Hinzufügen von Textfeldern (für den Inhalt aus der Datenbank) und Beschriftungsfeldern ist natürlich möglich.

Das obige Bild zeigt den Berichtsentwurf für die Mahnung an. Im Seitenkopf ist fest die Überschrift «Libre Office Bibliothek» als Beschriftungsfeld eingesetzt. Hier könnte auch ein Briefkopf mit Logo stehen, da auch die Einbindung von Grafiken möglich ist. Wenn die Ebene «Seitenkopf» heißt, so bedeutet das nicht, dass darüber kein Rand existiert. Dieser wurde in den Seiteneinstellungen bereits festgelegt und liegt oberhalb des Seitenkopfes.

«Leser_Name Kopf» ist die Gruppierung und Sortierung, nach der die Daten zusammengefasst werden sollen. In den Feldern, die später Daten aufnehmen, steht hellgrau die Bezeichnung der Datenfelder, die hier ausgelesen werden. So hat die dem Bericht zugrundeliegende Ansicht z. B. ein Feld mit der Bezeichnung Adresse, in dem die komplette Adresse mit Straße und Ort für die anzumahnende Person steht. Um dies in ein Feld zu setzen, sind Absatzumbrüchen in der Abfrage notwendig. Mittels CHAR(13)||CHAR(10) (Firebird: Statt CHAR() ASCII_CHAR() verwenden) wird in einer Abfrage ein Absatz erzeugt. Beispiel:

  1. 001 SELECT  

  2. 002 "Anrede"||CHAR(13)||CHAR(10)||"Vorname"||' '||"Nachname"||CHAR(13)||CHAR(10)||"Strasse"||' '||"Nr"||CHAR(13)||CHAR(10)||"Postleitzahl"||' '||"Ort" AS "Adresse"  

  3. 003 FROM "Leser" 

Bei dem Feld «=TODAY()» handelt es sich um eine eingebaute Funktion, die das aktuelle Datum an dieser Stelle einliest. Diese Funktion ist über Einfügen → Datum und Uhrzeit direkt zu erreichen.

In «Leser_Name Kopf» sind außer der Anrede und weiteren Informationen auch die Spaltenköpfe für die anschließende Tabellenansicht untergebracht. Sie sollen ja nur einmal auftauchen, auch wenn mehrere Medien aufgelistet werden.

In den Hintergrund dieser Spaltenköpfe wurde je ein graues Rechteck gelegt. Dieses Rechteck sorgt gleichzeitig für eine entsprechende Umrandung.

Der Detailbereich wird so oft wiederholt, wie unterschiedliche Datensätze mit den gleichen Daten existieren, die in "Leser_Name" stehen. Hier werden also alle Medien aufgelistet, die nicht rechtzeitig zurückgegeben wurden. Auch hier liegt im Hintergrund ein Rechteck, um die Inhalte zu umranden. Das Rechteck selbst hat die Füllfarbe «weiß».

Hinweis

Grundsätzlich gibt es in LO auch die Möglichkeit, horizontale und vertikale Linien hinzu zu fügen. Im Design-Modus werden diese auch angezeigt.

Diese Linien haben den Nachteil, dass sie nur als Haarlinien ausgelegt sind. Sie lassen sich besser nachbilden, indem Rechtecke benutzt werden. Der Hintergrund der Rechtecke wird auf die Farbe Schwarz eingestellt, die Größe wird z. B. mit einer Breite von 17 cm und einer Höhe von 0,03 cm festgelegt. Dann erscheint eine horizontale Linie mit einer Dicke von 0,03 cm mit einer Länge von 17 cm.

Leider hat auch diese Variante einen Nachteil: grafische Elemente lassen sich nicht richtig positionieren, wenn der Bereich über eine Seite hinweg geht.

 

Der «Leser_Name Fuß» schließt schließlich das Briefformat mit einer Grußformel und einem Unterschriftsbereich ab. Der Fuß ist so definiert, dass anschließend ein Seitenumbruch nach dem Bereich erfolgt: Seitenumbruch erzwingen → Nach Bereich. Außerdem ist er gegenüber den Standardeinstellungen verändert worden und so eingestellt, dass der Bereich auf jeden Fall zusammen gehalten werden soll. Schließlich würde es reichlich merkwürdig aussehen, wenn bei vielen Mahnungen allein z. B. das Unterschriftsfeld auf die nächste Seite verschoben, die Gebührensumme und der Gruß aber auf der Vorseite präsentiert würde.

Hinweis

Zusammenhalten bezieht sich hier immer auf den Seitenumbruch. Soll der Inhalt eines Datensatzes unabhängig vom Seitenumbruch zusammengehalten werden, so ist dies zur Zeit nur möglich, indem der Datensatz nicht als «Detail» eingelesen wird, sondern als Grundlage für eine Gruppierung genommen wird. Der Bereich «Detail» wird leider auch dann aufgetrennt, wenn Zusammenhalten → Ja ausgewählt wird.

 

Für die Aufsummierung der Gebühren wurde eine interne Funktion benutzt. Hierfür wurde zuerst ein Textfeld ohne Inhalt aufgezogen. Anschließend wurde in den Eigenschaften → Daten → Datenfeld-Typ → Funktion gewählt. Anschließend wurde Datenfeld → Gebuehr eingestellt. Unter Funktion stehen Summe, Minimum und Maximum zur Verfügung. Folgerichtig wurde hier die Summe ausgewählt. Schließlich ist im Geltungsbereich noch wählbar, ob die Funktion für eine bestimmt Gruppe oder für den ganzen Bericht gelten soll. Die Summe soll bezogen auf den Leser erstellt werden. Also kam hier nur die Gruppe: Leser_Name in Frage. Intern weist der Report-Designer dieser Funktion den Namen SummeGebuehrLeser_Name zu. Aus dem Namen ist ersichtlich, dass es sich um eine Summierung der «Gebuehr» handelt. Diese Summierung wird für jede Gruppe «Leser_Name» durchgeführt.

So könnte dann eine entsprechende Mahnung aussehen. Im Detailbereich sind hier 5 Medien angegeben, die der Leser entliehen hat. Im Gruppenfuß wird die Summe für die Anmahnung ausgegeben.

Hinweis

Berichte können auch für einzelne Datensätze über mehrere Seiten gehen. Die Bereichsgröße sagt nichts über die Seitengröße aus. Allerdings kann die Ausdehnung des Bereiches Detail über mehr als eine Seite dazu führen, dass die Umbrüche nicht einwandfrei sind. Hier ist der Report-Designer in der Abstandsberechnung noch fehlerhaft. Kommen Gruppierungsbereiche und grafische Elemente hinzu, so entstehen teilweise nicht mehr durchschaubare Bereichsgrößen.

Tipp

Soll sich ein Bereich über mehrere Seiten erstrecken, so muss der Beginn des Bereiches klar auf der ersten Seite definiert sein. Um vertikale Abstände zwischen Textfeldern des Berichtes zu konstruieren, setzt der Report-Designer Tabellenzeilen ein. Passt eine Tabellenzeile nicht mehr auf eine Seite, so wird sie komplett auf die nächste Seite verschoben – mit dem gesamten folgenden Inhalt. Hier hilft es, ein kleines leeres Beschriftungsfeld genau dort zu positionieren, wo der Beginn der neuen Seite sein soll. Der Report-Designer erstellt dort dann die erste Tabellenzeile der neuen Seite. So ist die Positionierung von Textfeldern und Beschriftungsfeldern auch bei größeren Bereichen möglich.

Gliederung eines Berichtes

Die Gliederung eines Berichtes erfolgt über die Zuweisung von Gruppierungen. Zu jeder Gruppierung können Gruppenköpfe und Gruppenfüße angezeigt werden, die dann das zusammenfassende Element der Gliederung aufnehmen. Die Sortierungsreihenfolge wird über Ansicht → Sortierung und Gruppierung eingestellt. Sie ist im Editor dadurch sichtbar, dass die führende Sortierung durch den zuerst angezeigten Gruppenkopf dargestellt wird. Ist allerdings Gruppenkopf → Nicht vorhanden eingestellt, so muss für die Übersicht zur Sortierung weiter der Sortierungsdialog aufgesucht werden.

Soll ein Bericht mit einer besonderen Startseite versehen werden, z.B. dem Briefkopf einer Firma, so ist dies über Bearbeiten → Berichtskopf/-fuß einfügen möglich. Es ist nicht möglich, den Seitenkopf für eine einmalige Anzeige zu nutzen, da die bedingte Anzeige des Seitenkopfes daran scheitert, dass für den Seitenkopf zur Zeit keine unterschiedlichen Bedingungen definierbar sind. Wird der Berichtskopf genutzt, so sollte der Seitenkopf grundsätzlich in den Eigenschaften auf Sichtbar → Nein eingestellt werden, da sonst der Berichtskopf beim Ausdruck nicht an erster Position steht.

Grundsätzlich sollte bei Seitenkopf und Seitenfuß klar sein, dass es sich hier um eine Kopf- bzw. Fußzeile handelt, die zusätzlich zu den Randeinstellungen von Format → Seite Platz beansprucht. Über Bearbeiten → Seitenkopf/-fuß löschen kann der anfänglich automatische eingefügte Seitenkopf bzw. -fuß entfernt werden.

Hinweis

Die Möglichkeit, über das Menü Bearbeiten einen Spaltenkopf/-fuß einzustellen, ist beständig inaktiv. Die Funktion, einen Bericht mit Spalten zu versehen, wurde anfangs für den Report-Designer geplant, dann aber leider nicht realisiert. Wie so etwas dennoch teilweise nachgebildet werden kann, steht im Kapitel Zweispaltige Berichte.

Allgemeine Eigenschaften von Feldern

Zur Darstellung von Daten gibt es lediglich drei unterschiedliche Felder. Neben dem Textfeld, das im Gegensatz zu seiner Namensgebung auch Zahlen und Formatierungen beherbergen kann, gibt es noch ein Feld, das Bilder aus der Datenbank aufnehmen kann. Das Diagrammfeld stellt eine Zusammenfassung von Daten dar.

 

Felder werden wie bei den Formularen mit Namen bezeichnet. Standardmäßig ist hier der Name gleich der Feldbezeichnung der zugrundeliegenden Datenquelle.

Ein Feld kann unsichtbar geschaltet werden. Bei Feldern macht dies vielleicht wenig Sinn, bei Gruppenkopf oder Gruppenfuß hingegen schon eher, da hier auch andere Funktionen der Gruppierung erfüllt sein sollen, der Gruppenkopf oder Gruppenfuß aber nicht unbedingt mit Inhalt versehen ist.

Automatisches Anwachsen ist in LO 6.4 neu hinzugekommen. Jetzt können Felder so definiert werden, dass sich die Höhe automatisch an den Inhalt anpasst, wenn mehr Inhalt vorhanden ist, als das vorgesehene Feld fassen kann. Allerdings ist diese Funktion nicht auf die einzelne Zelle sondern auf die gesamte Zeile bezogen. Bei Auswahl des Anwachsens für das erste Feld werden alle Felder in der Zeile automatisch auf den entsprechenden Inhalt angepasst.

In dem Report-Designer kann die Ansicht bestimmter Inhalte durch einen Ausdruck für bedingte Anzeige unterdrückt werden oder der Wert des Feldes als Grundlage für eine Formatierung von Schrift und Hintergrund genommen werden. Mehr zu diesen Ausdrücken unter Bedingte Anzeige.

Wenn Wiederholende Werte anzeigen deaktiviert wird, so wird die Anzeige ausgesetzt, wenn direkt davor das Feld mit einem gleichen Dateninhalt bestückt wurde. Dies funktioniert einwandfrei nur bei Datenfeldern, die einen Text beinhalten. Zahlenfelder oder Datumsfelder ignorieren die Deaktivierung, Beschriftungsfelder werden bei einer Deaktivierung komplett ausgeblendet, auch wenn sie nur einmal vorkommen.

Die Funktion Bei Gruppenwechsel anzeigen konnte im Bericht nicht nachvollzogen werden.

Ist der Hintergrund nicht als transparent definiert, so kann für das jeweilige Feld eine Hintergrundfarbe definiert werden.

Die weiteren Einträge beziehen sich auf den Inhalt innerhalb der gezogenen Felder. Dies sind im Einzelnen die Schriftart (mit Schriftfarbe, Schriftdicke etc., siehe Abbildung 2), die Ausrichtung des Schriftzugs in dem Feld und die Formatierung mit dem entsprechenden Dialog Zahlenformat (siehe Abbildung 3).

 

Abbildung 2: Schrift - Zeicheneinstellungen

 
 

Abbildung 3: Formatierung von Zellen

 

Ist eine Zelle mit dem Standardformat für Dezimalzahlen belegt, so werden 0-Werte nicht angezeigt. Hier muss der Format-Code → 0 gesetzt werden.

Tipp

Die Positionierung von Feldern im Report-Designer ist manchmal von (scheinbar) unerklärlichen Fehlermeldungen begleitet, weil ein Element das andere überschneiden würde. Ein Blick auf die eingegebenen Werte in der Maßeinheit Zentimeter widerspricht dem. Ein Blick auf einen ausgeführten Bericht, zum Bearbeiten geöffnet, zeigt allerdings, dass bei der erzeugten Tabellenstruktur etwas nicht stimmt. Teilweise werden zum Ausgleich Tabellenspalten mit 0,04 cm Breite eingesetzt und somit viel zu viele Spalten erzeugt.

Der Report-Designer arbeitet intern alle anderen Maßeinheiten in DTP-Punkte um. Ein solcher Punkt entspricht 1/72 Zoll. Dadurch lässt sich in einem Bericht nur genau positionieren, was sich in diese Punkte umrechnen lässt. Alles andere ergibt sich durch eine Rundung. Ein Bericht, testweise über Extras → Optionen → Spracheinstellung → Gebietsschema → Englisch (USA) mit der Maßeinheit Zoll in einer dem Punktschema entsprechenden Seitengröße erstellt, zeigt bei einer Einhaltung der Schritte von ¼ Zoll, dass daraus exakt positionierte Felder mit einer klaren Tabellenstruktur bei der Berichtsausführung werden.

Leider lässt sich beim Report-Designer bisher nicht, wie z. B. dem Writer, die Maßeinheit «Punkt» einstellen. Das würde sicher so einige Positionierungsprobleme lösen.

Besondere Eigenschaften des grafischen Kontrollfeldes

 

Das grafische Kontrollfeld kann sowohl Grafiken von außerhalb der Datenbank darstellen als auch Grafiken aus der Datenbank auslesen. Leider ist es zur Zeit nicht möglich, eine Grafik dauerhaft in Base zu speichern, um z. B. ein Brieflogo einzulesen. Hierzu muss zwingend die Grafik in dem gesuchten Pfad vorhanden sein, auch wenn die Auswahl anbietet, Bilder ohne Verknüpfung aufzunehmen und das erste Feld mit Als Verknüpfung vorbereiten auf eine entsprechende geplante Funktionalität schließen lässt.

Hinweis

Die Dateinamen dürfen keine Sonderzeichen wie [ ] { } \ < > % " und Leerzeichen enthalten. Ein Bericht mit diesen Bildern wird nicht erstellt.

Alternativ dazu kann natürlich eine Grafik innerhalb der Datenbank selbst gespeichert werden und so auch intern verfügbar bleiben. Sie muss dann aber über die dem Bericht zugrundeliegende Abfrage in einem der Felder zugänglich sein.

Um eine «externe Grafik» aufzunehmen, ist über Grafik → Button die Grafik zu laden. Um ein Datenbankfeld auszulesen, muss im Register Daten das Feld angegeben werden. Dieses Feld kann auch den Pfad zu einer externen Grafik beinhalten. Ist also in der Tabelle ein relativer Pfad zu einer Grafik angegeben, so wird diese Grafik entsprechend auch dargestellt.

Die Einstellung der vertikalen Ausrichtung scheint im Entwurf nichts zu bewirken. Wird allerdings der Bericht aufgerufen, so erscheint die Grafik entsprechend positioniert.

Beim Skalieren kann 'Nein', 'Seitenverhältnis beibehalten' und 'Autom. Größe' gewählt werden. Dies entspricht den Einstellungen im Formular:

Nach der Bearbeitung von Berichten mit Bildern fällt auf, dass die Datenbankdatei deutlich größer wird. Innerhalb der *.odb-Datei legt Base aus nicht nachvollziehbaren Gründen im Berichtsverzeichnis einen Ordner «ObjectReplacements» an. Dieser Ordner enthält dann eine Datei «report», die für eine entsprechende Vergrößerung der *.odb-Datei sorgt.

 

Wenn die Datenbankdatei in einem Packprogramm geöffnet wird, ist dieser Ordner mit Inhalt im Verzeichnis «reports» im Unterverzeichnis zu dem jeweiligen Bericht sichtbar. Dieses Verzeichnis kann über das Packprogramm gefahrlos gelöscht werden.

Hinweis

Wenn Berichte nicht wiederholt editiert werden, reicht ein einmaliges Löschen des Verzeichnisses «ObjectReplacements» aus. Der Umfang des Verzeichnisses kann sehr rasch anschwellen. Dies hängt von der Menge und Größe der Dateien ab. Allein eine 2,8 MB *.jpg-Datei vergrößerte so in einem Test eine *.odb-Datei um 11 MB!

Der Bug ist hier gemeldet: https://bugs.freedesktop.org/show_bug.cgi?id=80320

Diagramme im Bericht einbinden

Über das entsprechende Kontrollfeld oder Einfügen → Bericht-Steuerelemente → Diagramm lässt sich ein Diagramm dem Bericht hinzufügen. Ein Diagramm ist die einzige Möglichkeit, in einem Bericht Daten wiederzugeben, die nicht aus der Quelle stammen, die im Bericht als Datenquelle angegeben ist. Ein Diagramm ist insofern ein Unterbericht des Berichtes, kann aber auch als eigenständiger Berichtsteil gesehen werden.

Hinweis

Die Funktionsfähigkeit von Diagrammen ist in Berichten nicht beständig gewährleistet. Von LO 5.3 bis LO 7.3.2 funktionierte kein Diagramm im Report-Designer. Noch schlimmer: Alte Diagramme ließen sich nicht einmal entfernen, da die Auswahl der Diagramme dazu führte, dass LO direkt abstürzt.

Seit der Version LO 7.3.3 werden Diagramme wieder angezeigt. Auch die Absturzgefahr beim Bearbeiten von Diagrammen, die eventuell nicht korrekt funktionieren, ist behoben.

 

Das Diagramm wird mit der Maus aufgezogen. Bei den allgemeinen Eigenschaften zeigt sich neben bekannten Feldern die Möglichkeit, einen Diagrammtyp über den Button auszuwählen (siehe entsprechende Typen in Calc). Außerdem wird eine maximal für die Vorschau benutzte Anzahl an Datensätzen (Vorschau für Zeile(n)) eingestellt, die schon einmal eine Vorstellung davon geben kann, wie das Diagramm letztlich aussieht.

Diagramme können, ebenfalls wie in Calc, entsprechend formatiert werden (Doppelklick auf das Diagramm). Hierzu siehe die Beschreibungen im Handbuch Calc.

 

Das Diagramm wird im Reiter Daten mit den erforderlichen Datenfeldern verbunden. Hier, im Beispielbericht «Medien-Hitliste», soll das Diagramm die Häufigkeit deutlich machen, mit der bestimmte Medien entliehen wurden. Dazu wurde ein SQL-Befehl über den Abfrageeditor wie bei Listenfeldern erstellt und eingebunden. Die erste Spalte wird als die angesehen, mit der die Säulen beschriftet werden sollen, die zweite Spalte liefert dann die Anzahl der Entleihvorgänge, die sich in den Höhen der Säulen widerspiegelt.

In dem obigen Beispiel zeigt das Diagramm erst einmal nur sehr wenig an, da die Test-Entleihvorgänge sich zum Zeitpunkt der SQL-Eingabe in Grenzen hielten.