Reports verändern (Einführung in SchILD-NRW): Unterschied zwischen den Versionen

Aus Schulverwaltungssoftware
Zur Navigation springen Zur Suche springen
(→‎Die Programmierung: Tipp verbessert +Datenquelle['Feld'])
(-> "➜")
Zeile 131: Zeile 131:
===Erstellung des Reports===
===Erstellung des Reports===
[[Datei:SchILD_Report_Berichtsassistent_1.png|thumb|Erzeugen eines neuen Reports.]]
[[Datei:SchILD_Report_Berichtsassistent_1.png|thumb|Erzeugen eines neuen Reports.]]
Der Berichtsassistent wird mit einem Klick auf ''Datei'' -> ''Neu...' aufgerufen.
Der Berichtsassistent wird mit einem Klick auf ''Datei'' ''Neu...' aufgerufen.


Alternativ kann die Tastenkombination ''"Strg + N"'' verwendet werden.
Alternativ kann die Tastenkombination ''"Strg + N"'' verwendet werden.
Zeile 251: Zeile 251:
=====Gruppen für Seitenwechsel=====
=====Gruppen für Seitenwechsel=====
[[Datei:SchILD_Report_Anpassen_7.png|thumb|Aufrufen der Gruppeneinstellungen.]]
[[Datei:SchILD_Report_Anpassen_7.png|thumb|Aufrufen der Gruppeneinstellungen.]]
Der Report verwendet schon die Gruppe ''Klasse''. Um das Ende dieser Gruppe als Auslöser eines Seitenwechsels zu definieren, wird dies in ''Bericht'' -> ''Gruppen...'' vorgenommen.
Der Report verwendet schon die Gruppe ''Klasse''. Um das Ende dieser Gruppe als Auslöser eines Seitenwechsels zu definieren, wird dies in ''Bericht'' ''Gruppen...'' vorgenommen.
<br clear=all>
<br clear=all>



Version vom 26. Februar 2023, 14:28 Uhr

Wird ein existierender Report genutzt, können viele Details relativ einfach angepasst werden. Zum Beispiel lassen sich Schriftgrößen- und arten verändern, es lassen sich Layoutelemente verschieben oder neue feste Textfelder oder Datenbankfelder für weitere Informationen hinzufügen. Sollen Informationen nicht erscheinen, können Datenbankfelder gelöscht werden.

Struktur und wichtige Elemente eines Reports

Bearbeiten von Reports beziehungsweise erstellen neuer Reports mit der rechten Maustaste.

Um die grundsätzliche Struktur eines Reports und des Reporteditors anzuschauen, wird ein neuer, leerer Report erstellt. Hierzu wird die Reportverwaltung gestartet. Nachdem in den Ordner navigiert wurde, in dem der neue Report entstehen soll, öffnet ein Klick mit der rechten Maustaste ein Kontextmenü, über das Neuen Report erzeugen gewählt werden kann.

Tipp.png
Tipp

Wird auf einen existierenden Report geklickt, kann dieser mit Report bearbeiten im Editor geöffnet und bearbeitet werden.



Wichtige Elemente des Reporteditors.

Wesentliche Elemente des Editors sind die beiden Schaltflächen Entwurf und Vorschau. Diese Felder sind im Bild rot markiert. In der Entwurfsansicht können Felder, als feste Texte, Datenbankinhalte, Bilder, Linien und so weiter, bearbeitet und konfiguriert werden. In der Vorschau kann das ein Report einmal erzeugt werden, um die Ergebnisse der vorgenommenen Einstellungen zu sehen. In der Praxis wird man bei der Bearbeitung eines Reports zwischen dem Entwurf und der Vorschau hin- und herspringen.

Der Report selbst, hier grün markiert, besteht zuerst einmal aus einem Kopf. Dieser wird immer über einem Report generiert, z.B. der Schulkopf über einem Anschreiben oder die unveränderliche Kopfzeile über einer Liste.

Der Detailbereich enthält das Layout des eigentlichen Reports.

Im Fuß eines Reports finden sich abschließende Informationen, etwas das Datum der Reportgeneration oder Seitenzahlen für mehrseitige Reports.

Der hier lila markierte Berichtsbaum zeigt die Struktur eines Reports übersichtlich an und gerade bei komplexen Reports wird der Berichtsbaum hilfreich. Hier im Beispiel ist zu sehen, dass ein "Label", also ein festes Textfeld, und ein "DBText", also irgendein Inhalt aus der Datenbank, in den Detailbereich gelegt wurde. Kopf und Fuß sind leer, daher zeigt sich hier auch nichts im Berichtsbaum.

Tipp.png
Tipp

Der Berichtsbaum wird besonders relevant, wenn Reports eventuell mehrfach geschachtelte Unterberichte verwenden. Schauen Sie als Beispiel in einen Zeugnis-Report.



Beispiel zu unveränderlichen und Datenbank-Textfeldern

Die Werkzeugleiste.

Über die Werkzeugleiste werden Felder bereitgestellt, mit denen der Report zusammengestellt werden kann. Es gibt Tools um unveränderliche Texte, Datenbankinhalte aller Art, Bilder, Linien und Formen, fertige formatierte Textblöcke und so weiter zu setzen.

Im Beispiel hier wurde zum einen in Rot hervorgehoben, wie ein festes Textfeld gesetzt wird. Um ein Feld zu setzen, wird das Werkzeug angeklickt, dann wird im Report an die Stelle geklickt, an der das Feld erscheinen soll. Im Anschluss kann das Feld noch verschoben werden.

Info.png
Hinweis

Im Reporteditor heißt ein Textfeld "Label" und Textfelder werden nummeriert. Das erste verwendete Textfeld heißt also "Label1", das zweite "Label2" und so weiter. Dies gilt auch für andere im Report verwendete Feldarten, z.B. "line1", "line2" usw. für Linienobjekte.


Diese Labels können direkt bearbeitet und mit einem beliebigen Text gefüllt werden. Hier wurde "Name und Vorname" geschrieben.

Ein Label kann mit Text befüllt werden, indem es doppelt angeklickt wird oder indem es mit einem Klick aktiviert und dann über die Werkzeugleiste editiert wird.

Beispiel: Konfiguration von Feldern über die Werkzeugleiste

In Lila wurde ein Datenbankfeld, einen "DBText", angelegt. Hierzu wird in der Werkzeugleiste "DBText" ausgewählt und dann per Klick im Report abgelegt. Klickt man das Feld an wird es aktiv und nun kann oben, der zweite lila Pfeil, eine Datenquelle ausgewählt werden. Hier nutzen wir die Datenquelle Schueler, die alle möglichen Daten zu Lernenden enthält. Diese Daten lassen sich nun in einem Dropdown-Menü anwählen, hier wurde das Feld gewählt, das "NameVorname" enthält.

Der einfache Report in der Vorschau. Noch enthält unser Report einen Fehler.

Nach einem Klick auf Vorschau wird basierend auf den beiden verwendeten Feldern ein Report generiert. Für jede Person im Container links wird eine Zeile erzeugt, die aus dem festen Textfeld "Name und Vorname" besteht und zum anderen das Datenbankfeld "NameVorname" mit eben dem Namen und Vornamen der betreffenden Person ausfüllt.

Jedoch ist der Eintrag hier nur so breit, wie das DBText-Feld in unserem Report und so sind längere Namen abgeschnitten. Diesen Fehler gilt es nun zu korrigieren.

Beispiel: Konfiguration von Feldern über das Rechtsklick-Kontextmenü

Automatische Größenanpassung des DBText-Feldes.

Mit einem Klick auf Entwurf ist der Report wieder bearbeitbar. Hier ist nun mit der rechten Maustaste auf das DBTex-Feld zu klicken, dann wird Automatische Größenanpassung gewählt. Das DBText-Feld passt sich nun automatisch in der Breite an den jeweiligen Datenbank-Inhalt an.

Ein erneuter Klick auf Vorschau...

Automatische Größenanpassung des DBText-Feldes.

... erzeugt ein zufriedenstellendes Ergebnis, mit dem sich weiterarbeiten lässt.

In diesem Beispiel wurde gezeigt, wie sich unterschiedliche Felder in einen Report ziehen lassen. Diese Felder lassen sich mit einem Klick aktivieren, so dass sie über die Werkzeugleiste - hier wurden Datenquelle und Datenfeld gewählt - konfiguriert werden können. Je nach Feld stehen auch Kontextmenüs nach einem Rechtsklick zur Verfügung, in dem weitere Einstellungen vorgenommen werden können.

Speichern des Reports.

Der Report kann wie von normalen Textverarbeitungsprogrammen gewohnt über DateiSpeichern beziehungsweise ➜ Speichern unter... gespeichert werden.

Info.png
Hinweis

Es wird hierbei der Report, also der gerade erstellte "Bauplan" gespeichert, nicht das fertige Ergebnis eines konkret erzeugen Reports.


Achtung.png
Achtung!

Achten Sie darauf, dass Reports nur verwendet werden können, wenn sie im SchILD-Reportverzeichnis - oder Unterordnern darin - abgelegt werden.


Einfache Bearbeitung eines Reports

Reports müssen nicht immer komplett neu erstellt werden. Auf der Webseite Schulverwaltungssoftware des MSB finden Sie schon Reportsammlungen. Oft ist es sinnvoll, in diesen Sammlungen zu schauen, ob ein gesuchter Report nicht schon existiert. Wurde einer gefunden, kann dieser an die eigenen Bedürfnisse angepasst werden.

Eine gute Schulbescheinigung, dir wir verbessern möchten.

Hier im Beispiel soll nun eine in einer Reportsammlung enthaltene Schulbescheinigung an die eigenen wünsche angepasst werden. Wird der Ausgangsreport generiert, könnte er wie rechts dargestellt aussehen.

Jedoch sollen noch folgende Anpassungen durchgeführt werden:

  • Die Schriftart soll von Arial auf die modernere Schriftart Calibri geändert werden.
  • Die Datenbankfelder sollen nicht mehr kursiv gesetzt sein.
  • Das Postleitzahlenfeld ist etwas in die Straße gerückt, dieses soll etwas nach unten verschoben werden.
  • Die Konfession soll nicht auf der Schulbescheinigung auftauchen.
  • Dafür soll das Alter explizit ausgegeben werden.


Schriftgröße und Schriftart anpassen

Verändern der Eigenschaften von Text innerhalb von Textfeldern.

Im Modus Entwurf des Editors klicken wir ein Textfeld an. Nun erscheinen zwei Dropdownmenüs oben in Werkzeugbereich, in denen Schriftart und Schriftgröße angewählt werden können.

Ebenso lässt sich anwählen, ob der Inhalt des Textfeldes fett, kursiv oder unterstrichen gesetzt sein soll. Weiterhin lässt sich Ausrichtung innerhalb des Textfeldes anwählen.

Auch wenn eines der Datenbankfelder angewählt wird, erscheinen die gleichen Auswahlfelder, da es sich um Felder mit Schrift handelt.

Tipp.png
Tipp

Statt jedes Feld einzeln zu bearbeiten, können alle zusammen angewählt werden, indem ein "Lasso" um alle Felder gezogen wird. Klicken Sie hierzu mit der linken Maustaste, halten Sie diese gedrückt und ziehen Sie nun dieses Lasso um alle Felder, die ausgewählt werden sollen. Lassen Sie nun die linke Maustaste los.
Alle ausgewählten Textfelder sind nun mit kleinen grauen Kästchen in den Ecken markiert.


Auf gleiche Weise können alle Datenbankfelder auf der rechten Seite ausgewählt werden. Dann wird der Schalter "I" für "kursiv" abgewählt.

Daten hinzufügen und entfernen

Verschieben von Feldern: Beachten Sie die feine, blaue Hilfslinie.

Nun ist die Konfession zu entfernen. Hierzu kann ein Feld angewählt werden und mit einem Druck auf die "Entf"-Taste wird das Feld entfernt. Es wird sowohl das Label als auch das Datenbankfeld gelöscht.

Die sich ergebende Lücke im Report wird direkt genutzt, um das Datenbankfeld "PLZ_Ort" leicht nach unten zu verschieben.

Tipp.png
Tipp

Hierbei lässt sich ein nützliches Hilfsmittel des Editors beobachten: Wenn eine Kante, hier die Linke, eines Feldes mit den linken Kanten der darüberliegenden Felder übereinstimmt, erscheint eine feine, blaue Hilfslinie. Somit lassen sich Felder pixelgenau an anderen Feldern ausrichten.


Nun lässt sich der komplette darunterliegende Datenblock per Lasso auswählen und alle Felder werden zusammen soweit hochgeschoben, bis das Gesamtlayout zufriedenstellend ist.

Einfügen eines neuen DB-Felds ("Alter").

Das Alter soll nun hinter dem Geburtsdatum erscheinen. Hierzu wird ein DBText-Feld hinzugefügt, es sollte nicht direkt neben dem Geburtsdatum legen, damit sich die Felder bei langen Geburtsdaten nicht überlappen.

Das DBText-Feld wird wie gewünscht ausgerichtet, hier in Beispiel wird auch die Ausrichtung des Texts im Feld auf "Linksbündig" gestellt. Dann lässt sich über die Werkzeugleiste die Datenquelle "Schueler" einstellen. Im Datenfeld rechts daneben wird per Dropdown-Menü "Alter'"" ausgewählt.

Der nun überarbeitete Report in der Vorschau.

Die überarbeitete Schulbescheinigung erscheint nun in der Vorschau wie rechts dargestellt.

Nun ist zu entscheiden, ob ein ausreichender Grad an Zufriedenheit erreicht wurde oder ob weitere Zeit investiert werden soll, um den Report noch weiter anzupassen.

Hier zum Beispiel könnte man entscheiden, dass das Alter direkt neben dem Geburtsdatum nicht gut aussieht und noch ein Textfeld "Alter" hinzugefügt werden könnte oder dass auf einer Schulbescheinigung noch weitere Daten ausgegeben werden sollen.

Erstellung einer einfachen Liste mittels des Berichtsassistenten

In den bisherigen Beispielen wurden Reports und alle Elemente eines Reports von Hand erstellt.

Der Berichtsassistent erlaubt es, Datenfelder und auch Formatelemente durch einen automatischen Prozess zu erzeugen und eine Sortierung und Gruppierung der Felder zu wählen. Es kann also zeitsparend sein, einen Bericht erst mit dem Berichtsassistenten zu erzeugen und direkt zu verwenden oder gegebenenfalls nur noch etwas anzupassen.

Hier im Beispiel soll eine einfach Liste erstellt werden, die dann mit einigen Veränderungen noch verbessert wird. Dieses Aufwerten dient auch als kurzes Tutorial für die genutzten Werkzeuge. Die erstellte Liste wäre aber auch ohne dieses weiteren manuellen Eingriffe schon verwendbar.

Erstellung des Reports

Erzeugen eines neuen Reports.

Der Berichtsassistent wird mit einem Klick auf DateiNeu...' aufgerufen.

Alternativ kann die Tastenkombination "Strg + N" verwendet werden.

Aufruf des Berichtsassistenten.

Dann ist "Berichtsassistent" zu wählen und mit "Ok" zu bestätigen.

Aufruf des Berichtsassistenten.

In dieser Maske ist zuerst eine Datenquelle zu wählen. Da eine Liste voller Schülerdaten erzeugt werden soll, wird die Datenquelle "Schueler" gewählt.

Im Bereich darunter stehen nun alle Datenfelder zur Auswahl, die von dieser Datenquelle geliefert werden. Mit einem Wahl eines Feldes und einem Doppelklick beziehungsweise mit einem Klick auf das Symbol ">" wird das Feld in Ausgewählte Felder übernommen, die dann im Report erscheinen.

Ausgewählte Felder können über einen Doppelklick beziehungsweise mit dem Symbol "<" wieder abgewählt werden.

Die Pfeile rechts verändern die Reihenfolge der Datenfelder im Report, wobei die oben stehenden Datenfelder in der Zeile im Bericht zuerst stehen.

Tipp.png
Tipp

Sollen Datenfelder nicht im Report sichtbar sein, aber für eine Gruppierung - mehr dazu weiter unten - verwendet werden, sind diese hier auch schon anzuwählen

.

Der Bericht kann nun schon mit Fertigstellen erzeugt und dann verwendet oder weiter bearbeitet werden.

Hier im Beispiel sollen jedoch die weiteren Funktionen des Berichtsassistenten noch besprochen werden, daher wird stattdessen Weiter > gewählt.

Datenfelder werden genutzt, um Schüler zu gruppieren.

Mit einem Doppelklick wurde das Datenfeld "Klasse" nach unten in Gruppen verschoben. Dies bedeutet nun, dass alle Schüler, bei denen dieses Merkmal gleich ist, zu einer Gruppe zusammengefasst sind. Durch die Wahl des Feldes "Klasse" erzeugen wir nun eine nach Klassen sortierte Liste.

Beispiel.png
Beispiel

Schüler nach ihrer Klasse oder auch ihrem Alter zu gruppieren kann Sinn machen. Eine Gruppierung etwa nach gleichen Vornamen oder identischen Geburtsdatum ist technisch möglich, erscheint aber nicht sinnvoll.


Wäre "Klasse" nicht als Gruppe gesetzt, würde das Datenfeld ganz normal als Datenfeld in der erzeugen Zeile im Report auftauchen.

Auswahl eines Layouts und der Seitenausrichtung.

Im nächsten Fenster wird ein Layout gewählt, hier wäre einfach zu schauen, was für den gewünschten Report sinnvoll erscheint. Hier im Beispiel wurde einfach Links ausrichten angewählt.

Bei der Wahl der Seitenausrichtung sind bei Klassenlisten zwei Aspekte zu bedenken: Wurden viele Datenfelder gewählt oder Felder mit langen Einträgen gewählt, zum Beispiel Adressen, kann ein Querformat Sinn machen sein. Auf der anderen Seite jedoch passen typische Klassengrößen von 25 oder 28 im Querformat oft nicht mehr auf ein Blatt A4.

Wahl eines Stils.

Im nächsten Fenster ist ein Stil zu wählen. Hier wurde sachlich angewählt.

{Tipp|Wird ein Farbdrucker genutzt, kann es sinnvoll sein, alle oft gedruckten Reports, die nicht im bunt erscheinen müssen, von vornherein nur Schwarzweiß anzulegen, um massenhafte Farbdrucke zu vermeiden.}}

Wahl des Modus, in dem sich der Editor nach Abschluss des Assistenten befindet.

In diesem abschließenden Fenster wird gewählt, ob der Report im Editor oder in der Vorschau geöffnet wird. Ein Wechsel ist nach dem Abschluss des Assistenten möglich.

Das vorläufig fertige Ergebnis.

Im fertig generierten Report wurde viel Arbeit schon erledigt: die Felder sind vorhanden, es wird ordentlich nach der Klasse gruppiert und die Schüler sind sauber in einer Liste. Weiterhin finden sich im Fuß das Datum des Drucks und eine Seitenzahl.

Auf der anderen Seite passt das Layout noch nicht ganz und sollte nach angepasst werden.

Anpassen des Reports

Alle hier erklärten Veränderungen könnten als Beispiel für Möglichkeiten des Report-Editors und als Mini-Tutorials verstanden werden.

Einfache Anpassungen zu Layout, Linien und Schriften

Identifizierte Probleme.

Folgende Aspekte sollen verbessert werden:

  • Es fällt auf, dass im Report ein Titel vorhanden ist. Dieser Titel wird nur auf die erste Seite des Reports gedruckt, was Sinn machen kann, bei Klassenlisten aber nicht. Hier hätte etwa die Liste der 5a als erste Klasse einen Titel, alle anderen Klassen nicht.
  • Weiterhin soll in diesem Report verbessert werden, dass die Datenfelder nach links verschoben werden, so dass rechts Platz für eigene Eintragungen bleibt.
  • Schlussendlich sollen die Felder mit Farbdruck auf Schwarzweiß verändert werden, um Kosten durch unbeabsichtigte Farbdrucke zu vermeiden.


Deaktivieren des Titels.

Der Titel kann über Bericht deaktiviert werden. Ein Titel steht nur auf der ersten Seite, die Zusammenfassung findet sich auf der letzten, während Kopf und Fuß auf jeder Seite über und unter dem Detailbereich generiert werden. Hat man einen Report, in dem Kopf und Fuß nicht benötigt werden lassen sich diese hier deaktivieren.

Beispiel.png
Beispiel

Briefköpfe oder auch Subreports, die etwa Leistungsdaten in Zeugnisblöcken ausgeben, haben natürlich keine eigenen Köpfe und Füße.


In diesem Bericht wurde eine Gruppe definiert (die Klasse), daher werden noch Köpfe und Füße für diese Gruppe erzeugt. Diese funktionieren genauso wie Kopf und Fuß, nur dass sie nicht für jeden Detailbereich, sondern zu Beginn und Ende jeder Gruppe generiert werden.

Um alle gewünschten Felder nach links zu verschieben, kann dies einzeln für jedes Feld gemacht werden. Eleganter ist jedoch das Einfangen mit dem Lasso, was hier in diesem Fall aber nicht gut gehen würde, da das Lasso auch alle Linien mit einfangen würde.

Tipp.png
Tipp

Um mehrere Felder auszuwählen, klicken Sie das erste Feld an, dann halten Sie die Shift-Taste gedrückt. Alle nun angeklickten Felder werden zusätzlich ausgewählt.


Klicken man nun auf eines der ausgewählten Felder, lassen sich alle zusammen nach links verschieben. Hier werden nun die Labels im Kopf und die drei DBText-Felder im Detailbereich zusammen angewählt und nach links verschoben.

Umfärben der bunten Felder.

Wieder werden mit Shift + Klickklickklick alle gewünschten Felder angewählt, bei denen "blaue Farbe" identifiziert wurde. Dies betrifft die Kopfzeilentextfelder, Klasse und das Druckdatum im Gruppenfuß. Mit einem Klick auf das Schriftfarbenwerkzeug lassen sich die Schriften in Schwarz umfärben.

Tipp.png
Tipp

Die Umfärberei lässt sich vermeiden, wenn im Berichtsassistenten eines der Graufstufen-Layouts wählen.


Das letzte Detail, das angepasst wird, ist das Textfeld im Gruppenkopf für das Geschlecht. Da das Datenbankfeld "GeschlechtMW" heißt, wird auch genau diese Bezeichnung in der Kopfzeile übernommen. Diese Bezeichnung sieht nicht gut aus und wird in "Geschlecht" geändert - das Datenbankfeld darunter im Detailbereich heißt natürlich weiterhin "GeschlechtMW".

Einfügen von Linien.

Um Eintragungen von Hand in der Liste vorzunehmen, wären einige Trennlinien wünschenswert.

Tipp.png
Tipp

Horizontale Trennlinien sollten oben im Detailbereich platziert werden, so dass jeder neue Detailbereich die Trennung unter den vorherigen zieht. Dies erlaubt es, Detailbereiche mit einer dynamischen Höhe anzulegen - z.B. wenn pro Person unterschiedlich viele Zeilen an Telefonnummern gedruckt werden.


Ein Klick mit der rechten Maustaste öffnet ein Kontextmenü, hier wird Breite der Stammkomponente gewählt, die Linie wird somit automatisch auf die Breite des Detailbereichs gesetzt.

Tipp.png
Tipp

Nutzen Sie wenn möglich Werkzeuge, um Linien-Felder automatisch zu orientieren. Dennoch kann das genaue Platzieren von miteinander interagierenden Linien, Hintergrundeinfärbungen und so weiter mitunter schon viel Zeit und Konzentration erfordern. Achten Sie hier auf aufgewendete Arbeitszeit und den späteren Nutzen.
Der Berichtsbaum hilft, Linienfelder direkt auszuwählen.


Hier im Beispiel wurden noch zwei weitere Änderungen durchgeführt:

  • Beide Felder zum Alter wurden auf linksbündig im jeweiligen Feld gestellt.
  • Weil Times New Roman veraltet wirkt, wurden alle Schriften modernisiert.


Der Report im Editormodus.

Der Report sieht nun wie folgt im Editormodus aus...

Beispiel.png
Beispiel

Im Bild wurden auch weitere Layoutelemente markiert - von links nach rechts Bilder, Formen und Linien. Weiterhin können zum Beispiel auch Checkboxen gesetzt werden.



Der Report in der Vorschau.

... und hier als das vorläufig fertige Ergebnis:

Weitergehende Anpassungen - Seitenwechseln für jede Gruppe, Systemvariablen und ein Zähler

Um diesen Report abzuschließen, werden noch folgende Verbesserungen besprochen

  • Der automatische Seitenwechsel nach jeder Gruppe und ein Zurücksetzen der Seitenzahlen bei jedem Gruppenwechsel.
  • Die Verwendung von Systemvariablen, z.B. Druckdatum oder Aufdruck des Dateinamens der Dokuments.
  • Die Einrichtung einer Personenzählung
Gruppen für Seitenwechsel
Aufrufen der Gruppeneinstellungen.

Der Report verwendet schon die Gruppe Klasse. Um das Ende dieser Gruppe als Auslöser eines Seitenwechsels zu definieren, wird dies in BerichtGruppen... vorgenommen.

Definition, dass die Gruppe Schueler.Klasse zum Seitenwechseln genutzt werden soll.

Hier sind nun alle eingestellten Gruppen zu sehen, in diesem Fall ist dies nur die eine.

Unter Bei Gruppenwechsel lässt sich konfigurieren, welche Aktionen bei einem Gruppenwechsel durchzuführen sind. Über die Checkboxen Neue Seite beginnen und Seitennummerierung zurücksetzen lässt sich ebendieses Verhalten einschalten.

Tipp.png
Tipp

Falls Schülereinträge komplexer sind, lassen sich diese noch zusätzlich nach Schueler.ID gruppieren und mit der Checkbox Gruppe zusammenhalten würde dann ein "halber" Schülereintrag am Seitenende komplett auf die nächste Seite verschoben und nicht getrennt.



Systemvariablen

Verwendung von Systemvariablen.

Eine Systemvariable wurde schon vom Berichtsassistenten gesetzt: Das Druckdatum im Fuß des Reports.

Eine weitere nützliche Systemvariable Dokumenten-Name. Über diese wird der Dateiname des Reports ausgegeben und wenn man diesen Report als Druck vorliegen hat, aber nicht bekannt ist, mit welcher Datei er erzeugt wurde, ist der Dateiname eine nützliche Hilfe, die Reportdatei zu identifizieren.

Eine Systemvariable wird wie jedes andere Feld in der Werkzeugleiste ausgewählt, platziert und dann kann über das Dropdown-Menü eine der zur Verfügung gestellten Möglichkeiten ausgewählt werden.

Systemvariablen stellen zum Beispiel Druckdatum (mit oder ohne Zeit), Seitenzahlen oder den Dokumentennamen zur Verfügung.

Zeilennummerierung per Zähler

Einfügen des DBCalc-Feldes.

Um einen Zähler zu Beginn einer Zeile hinzuzufügen, muss der erste Eintrag etwas nach rechts verschoben werden. Hierzu werden NameVorname und das erste Datenbankfeld markiert und nach rechts geschoben.

Dann wird ein Feld DBCalc aus der Werkzeugleiste in dem freien Bereich platziert. DBCalc kann für datenbankbasierte Berechnungen genutzt werden.

Tipp.png
Tipp
Dieses Feld mit den anderen Feldern auf eine gleiche Höhe und mit dem passenden Abstand zu platzieren, kann mitunter zu konzentrierter, frustrierender Kleinstarbeit ausarten. Hier kann auch mit den Ausrichtungen in den beteiligten Feldern gearbeitet werden.

Im Bild machen die roten Pfeile daher auf nützliche Hilfen aufmerksam. Der Zoom unten rechts kann sich für diese Arbeit auf einen hohen Wert stellen lassen. Außerdem kann es helfen, den Detailbereich für die Dauer dieser Justierungen größer zu ziehen und nach Beendigung der Layoutarbeit wieder zusammen zu schieben.



Wahl von Laufender Zähler nach einem Rechtsklick.

Mit einem Rechtsklick öffnet sich das Kontextmenü von DBCalc. Es gibt die Möglichkeit, über Felder eine Summe, das Maximum, das Minimum, den Mittelwert oder die jeweils laufende Position von 'Laufender Zähler auszugeben. Diese Wahlmöglichkeit wird für den Zähler hier eingestellt.

Nutzen der Gruppe, den Zähler bei einem Gruppenwechsel zurückzusetzen.

Da bei der hier erstellten Klassenliste nicht die komplette Schülermenge laufend durchgezählt werden soll, wird die Gruppe Klasse genutzt, den Zähler - wie bei den Seitenzahlen auch schon - bei einem Gruppenwechsel zurückzusetzen.

Der Zähler funktioniert technisch...
Info.png
Hinweis

Zuerst einmal wird festgestellt, dass die Zeilen zu hoch sind. Dies liegt daran, dass nach der Justierung des Zählerfeldes vergessen wurde, den für die Arbeit vergrößerten Detailbereich wieder klein zu schieben. Dies wird nun nachgeholt.


Soweit funktioniert der Zähler, jedoch soll ja nicht "1", "2", "3" usw. gezählt werden, es soll "Erstens", "Zweitens", "Drittens", erzeugt werden.

Veränderung des Anzeigeformats.

Hierzu wird wieder mit einem Rechtsklick das Kontextmenü aufgerufen, dann wird 'Anzeigeformat ausgewählt.

Eingabe des gewünschten Formats.

Das Anzeigeformat lässt sich frei wählen, der Zähler hier soll z.B. "5." ausgeben. Daher wird die Zeilenfolge #'.' eingetippt. "#" steht hier für die aktuelle Zahl des Zählers, und '.' bedeutet, dass dahinter der Punkt gesetzt wird.

Info.png
Hinweis

Das Hochkomma "'" findet sich bei einer PC-Tastatur auf der gleichen Taste wie die Raute "#".



Das Ergebnis.

Das Ergebnis der Arbeit sieht nun sehr brauchbar aus. Aus der Spalte auf der linken Seite geht hervor, dass jede Klasse nun auf einer eigenen Seite dargestellt wird.

Info.png
Hinweis

Achten Sie hier darauf, dass eine Vorauswahl, welche Klassen bzw. Jahrgänge bzw. Gruppen im Report verarbeitet werden, schon in ScHILD vorgenommen wird, indem die Schülermenge über den Container ausgewählt wird.


Je nach Bedarf können weitere Anpassungen vorgenommen werden, zum Beispiel könnten hier die jeweiligen Zeilen noch vergrößert werden.

Einbinden eines Schulkopfes (Dynamisch ladender Subreport)

Exemplarisch wird nun noch ein Schulkopf eingebunden werden. Hierzu verwenden wir einen Subreport, der sich im Ordner Header_Footer befindet, da es sich um einen Kopf handelt.

"Dynamische Subreports" (links) und "statische Subreports" (rechts).

Es gibt zwei Arten von Subreports

  • Ein normaler Subreport: Ein solcher Subreport wird einmal bei der Erstellung des Hauptreports entweder von Hand angelegt oder aus einem existierenden Report geladen. Dann ist dieser mit im Hauptreport gespeichert und muss auch in diesem verändert werden. Im Screenshot ist dies das linke markierte Werkzeug.
  • Dynamisch ladbarer Subreport: Hier wird eine andere Reportdatei in diesem Hauptreport verknüpft und jedes mal, wenn der Hauptreport erzeugt wird, lädt er den verbundenen anderen Subreport "dynamisch" dazu, d.h. dieser wird ebenfalls generiert. Der Vorteil hier ist, dass Änderungen in der verknüpften Datei sich auch in jedem neuen Report wiederfinden, die den Subreport aufrufen. Sinnvoll ist das z.B. für Schulköpfe - wird er als dynamischer Subreport von anderen Reports geladen, sind alle Schulköpfe immer auf dem aktuellen Stand und gleich. Im Screenshot ist dies das rechte markierte Werkzeug.
Achtung.png
Achtung!

Wird ein dynamischer Subreport in seiner Höhe verändert, kann es in anderen Reports, die diesen laden, durchaus zu unbeabsichtigten Verschiebungen im Layout kommen. Ein als dynamischer Subreport vorgesehener Report sollte nach der erstmaligen Erstellung also nur mit Vorsicht in seinen Abmessungen verändert werden.



Nutzen eines dynamischen Subreports.

Zuerst wird ein Feld für einen dynamisch ladbaren Subreport über die Werkzeugleiste im Kopf des aktuellen Reports abgelegt.

Dann öffnet ein Rechtsklick das Kontextmenü, in dem nun Subreport-Datei wählen...' ein Auswahlfenster öffnet, in dem der zu verwendende Report gewählt wird.

Info.png
Hinweis

Achten Sie im Kontextmenü auch darauf, dass Dehnen aktiviert ist. Dieser Schalter bedeutet, dass sich die Felder - hier das Feld des dynamischen Subreports an die Größe des Inhalts anpassen.


Wahl des zu verwendenden Subreports als Kopf.

Dann wird eine passender Kopf gewählt, der sich im Ordner Header_Footer befindet.

Der Kopf erscheint über der Klassenliste.

Nun erscheint dieser Kopf über dem hier erstellten Report. Da es sich bei dem Kopf um einen dynamischen Subreport handelt, werden auch alle in Zukunft erzeugten Listen eventuelle Veränderungen an diesem aktuell noch sehr rudimentären Kopf enthalten.

Reports programmieren

Achtung.png
Achtung!

Der folgende Abschnitt ist für Personen mit Informatik- und Programmier-Hintergrund relevant.
Da sich der folgende Abschnitt an ein Fachpublikum richtet, fällt er mitunter weniger detailliert aus, als der Rest des Wikis.


Der Reporteditor von SchILD ein Object Pascal. Somit lassen sich Reports sehr weitgehend programmieren.

Info.png
Hinweis

Bitte achten Sie darauf, ob etwas tatsächlich programmiert werden muss oder ob nicht Datenbankfunktionen die gleiche Funktionalität schon mit Bordmitteln bereitstellen. Es empfiehlt sich bei aller technischen Begeisterung die Reports einfach zu halten.


Identifikation der relevanten Felder im Editor.

Für dieses Beispiel soll die Klassenliste noch ein neues Feature enthalten: Wenn die Datenweitergabe für einen Schüler gesperrt ist, im SchILD wird dies in den Individualdaten I als "Keine Auskunft an Dritte markiert, wird das Geburtsdatum in der Liste unterdrückt. Denkbar wäre es, auch in Telefon- und Adressenlisten eben Telefonnummern und die Anschrift nicht auszugeben.

Zuerst werden die für uns relevanten Felder identifiziert. Über den Berichtsbaum kann man sich schnell durch die vorhandenen Elemente klicken und sieht unten links im Fenster Eigenschaften für X alle Attribute des Feldes. Hier finden wir, dass DBText2 das Geburtsdatum ist.

Tipp.png
Tipp

Diese Attribute lassen sich hier auch ändern. Somit ist es z.B. sehr leicht möglich, eine Grafik mit gewünschten Abmessungen einfach einzustellen.



Das Hauptfenster für die Berechnungen

Die Elemente der Programmierumgebung.

Der Modus Berechnungen wird über die Moduszeile aktiviert, in der sich auch Vorschau und Entwurf findet.

In Blau: Sofern hier nicht schon die Anzeige für Ereignisse aktiviert ist, lässt sich dies mit einem Rechtsklick tun. Sinnvoll ist bei komplexeren Programmierungen auch die Ansicht der Variablen, da so schnell gesehen werden kann, in welchem Feld Variablen und Konstanten definiert wurden.

In Türkis: Klicken wir nun im Berichtsbaum auf ein Feld, sehen wir, welche Events dieses Feld fängt und wo dann Programmcode ausgeführt werden kann. Im Feld DBText2 wären die Events OnGetText oder OnPrint interessant.

In Lila: Weiterhin kann in der Fußleiste durch eventuell vorhandene Subreports geschaltet werden, um auch dort Code auszuführen.

In Orange: Hier kann zwischen Daten, Elemente und Sprache umgeschaltet werden.

  • Daten enthält die Variablendefinitionen der Felder mit Name, Typ und bei Strings die Größe in Zeichen.
  • Elemente enthält alle Variablen, die für dieses Feld gesetzt werden können. Zum Beispiel die Größen, Font, Farbe - oder hier für uns relevant, ob das Objekt sichtbar ist der boolean Schalter "visible".
  • Sprache enthält die Sprachdefinition mit den bereitgestellten Funktionen. In der Toolbox lässt sich zwischen Kategorien umschalten und neben allgemeinem Sprachumfang wie Funktionen zur Typumwandlung finden sich auch für die Funktion von NRW-Schild definierte Funktionen.


Die Programmierung

Bei "Keine Auskunft" unterdrücke "DBText2".

Um DBText2 auf visible oder nicht-visible zu stellen, wird eine Bedingung benötigt. Es ist die Vermutung berechtigt, dass sich "Keine Auskunft an Dritte" irgendwo in der Datenquelle "Schueler" befinden dürfte. Im Modus Entwurf werden einfach auf Verdacht die Felder Gesperrt und Keine Auskunft mit in der Schülerzeile ausgegeben - und damit findet sich ganz unkompliziert, dass das gesuchte Merkmal im Feld KeineAuskunft enthalten ist. Weiterhin findet sich, dass die Kodierung über "+" (Haken gesetzt) und "-" (Haken nicht gesetzt) geschieht. Die DBFelder können im Entwurf wieder entfernt werden.

Damit können wir nun programmieren: Das Feld soll beim Druck unterdrückt werden. Daher arbeiten wir nun im Event OnPrint.

Tipp.png
Tipp

Unten rechts kann bei Aktivierung von Daten und der Wahl der Datenquelle Schueler kann das Feld KeineAuskunft per Drag & Drop in das Code-Feld gezogen werden.
Dies erzeugt automatisch einen Eintrag mit dem Format "Datenquelle['Feld']".


Die Programmierung ist dann Pascal-Standard. Um nun deutlich zu machen, ob das Feld in SchILD nicht gesetzt ist oder ob die Ausgabe unterdrückt wird, arbeiten wir noch mit einem weiteren Text, "Label1", das den Eintrag "---" enthält und abhängig von KeineAuskunft im Wechsel mit DBText2 sichtbar und unsichtbar geschaltet wird.

Unterhalb des Programmierfeldes findet sich eine Zeile, die über Syntaxfehler berichtet.

Enthält ein Event Code, wird dies mit einem grünen oder roten Symbol deutlich gemacht. Grüne Symbole bedeuten, dass kein Syntaxfehler gefunden wurde, ein rotes Symbol weist noch auf solche hin.

Über diese Symbole lässt sich beim Durchklicken der Felder schnell sehen, in welchem Event Code auf einen Trigger wartet.

Das (soweit) fertige Ergebnis.
Info.png
Hinweis

In der Programmierung kann auch mit allerhand Variablen gearbeitet werden und der Editor stellt Funktionen bereit, über die beim Start eines Reports Checkboxen, Anklicklisten, Dropdown-Menüs, freie Zeichenketten oder Daten abgefragt werden können.

Eine für SchILD sehr typische Verwendung von Programmierung ist das Ersetzen von Platzhalter-Strings, z.B. "$JAHRGANG$" zur Laufzeit in vorformatierten RichText-Feldern.


Tipp.png
Tipp

Schauen Sie zur Orientierung in der Programmierung in eines der Zeugnisformulare.