Custom Reporting
Sinn und Zweck
Diese Dokumentation dient als Handbuch für die Erstellung von Custom-Reports im NEXUS/HEIM. Sie dient als Schulungsgrundlage und unterstützt die Kunden der NEXUS Schweiz AG bei Ihrer Tätigkeit.
Die Handbücher der Firma NEXUS Schweiz AG werden laufend aktualisiert. Die aktuellsten Versionen befinden sich immer auf der Firmen Website www.nexus-schweiz.ch[ |http://www.domis.ch/]unter Service & Support, geschützter Login Bereich. Ein Kennwort für den geschützten Login Bereich kann via support@nexus-schweiz.ch angefordert werden.
Voraussetzungen
Der Benutzer findet sich im NEXUS/HEIM zurecht. Er/sie weiss, wie im NEXUS/HEIM zu navigieren ist und wie die Standardabläufe funktionieren.
Arten von Reports
Standard- Report
Dies ist ein Report, der mit dem System mitgeliefert und direkt aus dem Menu aufgerufen wird. Diese Variante erscheint, wenn ein Report aus dem Menu aufgerufen und kein Custom Report ausgewählt wird und der Report nicht mit dem Report Designer übersteuert ist.
Custom- Report
Dies sind vom Benutzer angepasste Varianten eines Reports. Sie müssen vom Benutzer aktiv gewählt werden. Pro Report sind unbeschränkt viele Varianten möglich. Sie können jederzeit vom Benutzer gelöscht werden. Über den Custom Report ist es auch möglich, einen Ad-hoc Report zu erstellen.
Standard- Custom- Report
Dies ist eine Spezialform des Custom Reports. Im Grunde ist es ein Custom Report, der jedoch mit dem System ausgeliefert wird und nicht gelöscht werden kann. Auch er muss vom Benutzer aktiv ausgewählt werden.
Custom Reports mit einem weissen Kreis und weissem Strich auf rotem Grund in der Spalte Typ sind Standard Custom Reports. Die anderen mit einer Person im Typ sind Custom Reports.
Einsatzgebiete
Custom Reports
Es können Varianten für einen speziellen Verwendungszweck (z.B. fürs Reporting aus Management - Monatsbericht) erstellt oder gezielte Kontrolllisten geschaffen werden. Ebenfalls sind Ad-hoc Reports möglich, dies sind Reports, die man so nur genau einmal braucht.
Standardreports und Standard Custom Reports
Können vom Benutzer nicht verändert werden.
Grenzen
Über die vom Benutzer beeinflussbaren Methoden sind Layout-Anpassungen möglich. Mit entsprechendem Aufwand könnte sogar noch ein Chart in den Report integriert werden. Ebenfalls kann ein Report so umgestaltet werden, dass er wie eine andere Liste ist. Es ist nicht möglich, Fehler in den Standardlisten über diese Mittel zu beheben. Dafür wird immer noch ein Patch benötigt. Ebenfalls ist ein Report grundsätzlich auf die Daten beschränkt, die dem Original zur Verfügung stehen, obwohl diese Daten um zusätzliche Informationen erweitert werden können, wenn ein Report Scripting zum Einsatz kommt.
Datenherkunft für die Reports
Ruft man einen Report auf, wird mit den Einschränkungen, die in der Auswahlmaske getroffen worden sind, auf dem Server eine Datenanfrage gestartet. Der Server ruft danach eine Prozedur auf, die die Daten von der Datenbank liest. Diese Daten werden dann über den Server (nicht direkt von der Datenbank) an den Report in einem so genannten Dataset gegeben. Der Report kommuniziert nie direkt mit der Datenbank.
Aufruf Custom Report
Custom Report
Ein Custom Report wird direkt via Auswertungen aufgerufen. Es kann bei einem bestehenden Report auch ein neuer Custom Report erstellt werden. Dieser ist hausspezifisch und wird unter einem neuen Namen unterhalb des bereits bestehenden Reports abgespeichert. Durch Anklicken des CustomReports-Button öffnet sich der Custom Report Designer.
Custom Report Designer
Die Arbeitsoberfläche dient der Gestaltung des Custom Reports. Damit können Schriften, Positionierung, Rahmen, Schattierungen, Reihenfolge der Felder etc. definiert werden.
Toolbar
Die Toolbars sind vergleichbar mit den bekannten Office-Produkten. Damit kann man die Felder individuell gestalten.
Toolbox
Reportelemente sind Controls, die beliebig auf dem Layout platziert werden können. Eines der wichtigsten Controls sind die Labels, da hier beliebiger Text, der angezeigt werden soll, eingegeben werden kann. Labels werden vor allem für Überschriften verwendet.
Beschreibung der einzelnen Tools
Pointer: Mit dem Pfeil können die Felder ausgewählt oder markiert werden | |
Label werden für Überschriften oder Feldbeschreibungen verwendet. Der Text kann jeweils manuell erfasst werden. | |
Textboxen zeigen Daten aus der Datenbank in diesem Report an. | |
Die Checkbox kann für richtig/falsch (true/false) Werte verwendet werden. | |
Mit Picture können Bilder dargestellt und gedruckt werden. Über die Eigenschaft Image kann ein Bild geladen werden. | |
Mit Shape können Schattierungen auf den Feldern erzeugt werden. | |
Mit Line können vertikale und horizontale Linie gezeichnet werden. | |
Eine RichTextBox ist ein Platzhalter für ein rtf-Dokument. Kann wie beim Picture dynamisch oder statisch angezeigt werden. | |
Subreports werden vom System aufbereitet. | |
Der Page Break erzwingt einen Seitenumbruch an der vorgesehenen Stelle. Normalerweise übernimmt diese Funktion aber der Report automatisch. Daher wenn möglich nicht verwenden. | |
Das Feld wird als Barcode angezeigt. |
Alignement
Grundsätzlich können Felder mittels Maus und/oder Tastatur verändert oder verschoben werden.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
- Selektierte Felder werden horizontal zentriert.
- Selektierte Felder werden vertikal zentriert.
- Selektierte Felder werden linksbündig zum Master ausgerichtet.
- Selektierte Felder werden unterhalb des Masters zentriert.
- Selektierte Felder werden rechtsbündig zum Master ausgerichtet.
- Selektierte Felder werden auf die Oberkant-Höhe des Masters ausgerichtet.
- Selektierte Felder werden zentriert auf die Höhe des Masters.
- Selektierte Felder werden auf die Unterkant-Höhe des Masters ausgerichtet.
- Selektierte Felder werden gleich breit wie der Master.
- Selektierte Felder werden in Höhe und Breite auf das Grid ausgerichtet.
- Selektierte Felder werden gleich hoch wie der Master.
- Selektierte Felder werden gleich hoch und gleich breit wie der Master.
- Der horizontale Abstand zwischen allen selektierten Felder wird gleichmässig ausgerichtet.
- Der horizontale Abstand zwischen allen selektierten Feldern wird vergrössert.
- Der horizontale Abstand zwischen allen selektierten Feldern wird verkleinert.
- Der horizontale Abstand zwischen allen selektierten Feldern wird eliminiert.
- Der vertikale Abstand zwischen allen selektierten Feldern wird gleichmässig ausgerichtet.
- Der vertikale Abstand zwischen allen selektierten Feldern wird vergrössert.
- Gesperrt
Eigenschaften
In den Eigenschaften, auch Properties genannt, werden die spezifischen Feldeigenschaften definiert. Diese umfassen Layout, Position, Daten sowie Summenfunktionen. Je nach Typ des Feldes sind unterschiedliche Eigenschaften verfügbar.
Darstellung/Appearance
Eigenschaft | Beschreibung |
Alignment | Definiert die horizontale Ausrichtung des Inhalts im entsprechenden Control: Left linksbündig |
BackColor | Hintergrundfarbe des Controls |
Font | Schriftdefinition – über den Auswahlbutton kann die Schrift gesetzt werden. |
ForeColor | Textfarbe (in der Regel schwarz), hängt aber von der Hintergrundfarbe ab. |
Style | Übernimmt die Angaben aus dem Bereich Font. Eine manuelle Eingabe im |
VerticalAlignment | Definiert die vertikale Ausrichtung des Inhalts im entsprechenden Control: |
Daten/Data
Eigenschaft | Beschreibung |
ClassName | wird momentan nicht unterstützt |
CountNullValues | Bestimmt, ob NULL-Werte (nicht definierter Wert) als 0 in die Berechnung einfliessen sollen oder nicht |
DataField | Das DataField bestimmt, aus welcher Spalte aus dem Dataset der Wert für dieses Control genommen wird. Bei Gruppierungen wird im GroupHeader über DataField angegeben, nach welcher Spalte gruppiert werden soll. |
HyperLink | Der HyperLink wird oftmals im Zusammenhang mit einem Bitmap (z.B. Logo des Treuhänders) verwendet. Mit diesem Logo gibt man dann den Hyperlink (die Internetadresse) mit, z.B. http://www.nexus-schweiz.ch Klickt man dann am Bildschirm auf dieses Logo (z.B. im pdf Dokument), so wird die Homepage geöffnet. |
Tag | Ein Tag ist eine Eigenschaft des Controls, die in der Regel dem User zur freien Verfügung steht. Im Normalfall steht da der Name des Controls. Bei pic_ und rtf_ Controls wird hier der Pfad und der Name der zu ladenden Datei mitgegeben. |
Text | Der Text ist eigentlich nur bei Labels relevant. Hier wird der Text eingegeben, der dann auf dem Control zur Anzeige kommt. In allen anderen Fällen wird der Text nicht gebraucht. |
Entwurf/Design
Eigenschaft | Beschreibung |
Name | Der Name des Controls ist immer vorgegeben, wenn das Control aus der Liste rechts ausgewählt wird. Wird ein Control neu erstellt aus der Toolbox kann der Name angepasst werden. Der gleiche Name darf in einer Section nur einmal vorkommen. |
Layout
Eigenschaft | Beschreibung |
Location | Die Location gibt die exakte Position des Controls in Form von einer X- und einer Y Koordinate an. Die Einheit ist in Inch. |
Size | Size definiert die Grösse des Controls in Inch und wird in zwei Werten angegeben: |
Sonstiges
Eigenschaft | Beschreibung |
Modifiers | wird momentan nicht verwendet |
Summary
Eigenschaft | Beschreibung |
DistinctField | Das DistinctField kann verwendet werden. um aus einer Menge an Datensätzen eine Zusammenfassung zu erzeugen. Sämtliche Datensätze mit dem gleichen Wert werden zu einem einzigen zusammengefasst. |
SummaryFunc | Sum berechnet das Total aller Werte in den definierten Totalisierungs-Ebenen (Gruppe, Seite, Report). Avg berechnet den Mittelwert aller Werte in den definierten TotalisierungsEbenen (Gruppe, Seite, Report). |
another field within the specified summary region (group, page or report). | |
SummaryGroup | Hier wird die Gruppe ausgewählt, für welche eine einfache Summierung erfolgen soll. |
SummaryRunning | None |
SummaryType | None |
Verhalten
Eigenschaft | Beschreibung |
CanGrow | Gibt an, ob sich die Grösse des Controls je nach Inhalt vergrössern kann oder nicht. |
CanShrink | Gibt an, ob sich die Grösse des Controls je nach Inhalt verkleinern kann oder nicht. |
MultiLine | Gibt an, ob das Control Werte auf mehrere Zeilen verteilen darf, wenn der Wert entsprechend mit Zeilenschaltungen versehen ist. |
Visible | Gibt an, ob der Control angezeigt wird oder nicht. |
WordWrap | Gibt an, ob ein Control, das MultiLine fähig ist, automatisch Wörter auf die nächste Zeile setzen soll oder nicht. |
Report Layout
Report Header
Dieser kann für ein Deckblatt genutzt werden und wird einmalig vor dem eigentlichen Report gedruckt.
Page Header
Dieser beinhaltet den Seitenkopf, welcher auf jeder Reportseite wiederholt wird. Im Beispiel: Felder wie Name, Vorname, Zimmer, Abteilung etc.
Group Header
Der listenspezifische Header kann verwendet werden, damit darauf gruppiert und zusammengezählt werden kann.
Detail
Diese Zeile wird benutzt um alle Werte auszugeben. Beachten Sie, dass die Höhe dieses Bereichs auf Zeilenhöhe verringert werden muss, da jede Detailzeile sonst zu viel Platz benötigt. In der Detailzeile müssen alle Spalten aufgeführt werden, welche Sie ausgeben möchten.
Group Footer
Hier werden alle Total Werte ausgegeben. Der Group Footer 1 gehört zum Group Header 1, Group Footer 2 zum Group Header 2 etc. Beachten Sie dies auch bei der Formatierung, da meist die zusammengehörigen Titel- und Totalzeilen die gleiche Schriftart, Grösse und Ausprägung haben sollten. In den Totalzeilen müssen alle Spalten, welche im Total ausgewertet werden, ebenfalls vorhanden sein.
Page Footer
Dieser Bereich wird analog dem Page Header auf jeder Seite wiederholt. Der Page Footer ist die sogenannte Fusszeile und wird unten auf das Blatt gedruckt. Normalerweise werden hier Angaben wie Druckdatum, Ausdruckzeit, Reportname etc. angedruckt. Vielfach wird dieser Bereich auch einfach leer gelassen. Denken Sie daran, dass bei Nichtbedarf die Höhe des Page Footers auf 0 gestellt werden sollte.
Report Footer
Dieser wird anschliessend an den Report gedruckt.
Hoch-/Querformat
Die Ausrichtung des Papiers (ob Hoch- oder Querformat) kann man im Designer über Datei - Report Properties - Printer Settings einstellen. Über diese Eigenschaften lässt sich u.a. auch der Seitenrand einstellen.
Custom Report speichern
Achten Sie bei der Namensgebung darauf, dass dieser aussagekräftig ist und der Custom Report rasch identifiziert werden kann. Denn der Benutzer sieht nur diese Bezeichnung und muss dann entscheiden, ob das seine gewünschte Variante ist. Bitte beachten Sie, dass die Standardwerte den neuen Report nur für den aktuellen Benutzer im aktuellen Mandant sichtbar machen. Wenn Sie den Report für anderen Benutzer verfügbar machen möchten, wählen Sie „Für alle Benutzer". Sie können weiter wählen, ob der Report nur für Sie oder für alle Benutzer in allen Mandanten erscheinen soll.
Report für alle sichtbar
Report für alle sichtbar, in allen Mandanten
Custom Report transferieren
Wurde ein Custom Report erstellt, kann er jederzeit in ein anderes System transferiert werden. Öffnen Sie den Custom Report und speichern Sie diesen über Datei - Speichern in Datei auf einen Memorystick oder auf ein Netzwerklaufwerk.
Rufen Sie am Zielsystem den Custom Report auf, gehen Sie zu Datei - Laden aus Datei und wählen Sie die vorher abgespeicherte Datei aus. Dieser muss dann nur noch gespeichert werden.
Templates
Gewisse Dinge, wie z.B. das Logo oder die Fusszeile, kommen nicht aus dem Report selbst, sondern aus einem Template, d.h. einer Vorlage. Dies damit alle Reports gleich aussehen, was Report Kopf- und Fusszeile betrifft. Es gibt sogar 2 solcher Templates: eines für A4 hoch und eines für A4 quer. Diese Templates können nicht geändert werden und kommen immer in den Report rein. Custom Reporting erlaubt nicht, dass diese unterdrückt werden. Welches der beiden zum Einsatz kommen muss, entscheidet das Programm selbständig. Es ist somit kein Problem, einen Report, der im Standard A4 hoch ist, im Custom Reporting auf A4 quer umzustellen
Filter
Über den Filter können die Daten, die für den Report gelesen werden, weiter eingeschränkt werden. Dabei kann auf jedes Feld eingeschränkt werden. Aber Achtung, diese Einschränkung ist dann fest im Custom Report hinterlegt und gilt immer, egal was der Benutzer in der Auswahlmaske wählt.
Um den Filter zu benutzen muss man einfach beim Datenbankfeld, welches man filtern möchte, den Von- und Bis-Wert eingeben. Sie können über alle Datenbankfelder filtern, die im Report sind. Sobald alle Werte eingetragen sind, kann man auf filtern klicken.
Ich empfehle den Filter sparsam zu gebrauchen, da sonst unerwünschte Resultate erscheinen können.
Sortierung
Über die Sortierung können die gelesenen Daten anders sortiert werden, d.h. die Reihenfolge, wie sie vom Report verarbeitet werden, ändert sich. Um dies zu tun, tragen Sie die Namen der Felder ein, nach denen sortiert werden sollen. Trennen sie die einzelnen Felder durch ein Komma. So wird zuerst nach dem ersten Feld sortiert und wenn mehrere Daten den gleichen Wert haben, dann wird nach dem zweiten sortiert usw. Wollen Sie absteigend sortieren, so schreiben sie DESC durch einen Leerschlag getrennt in dieses Feld. Sobald Sie die Sortierung geschrieben haben, müssen Sie filtern klicken, um die Sortierung zu starten.
Gruppen im Report bilden
Wenn Sie z.B. bei einer OP Liste die Debitoren und deren Rechnungen sehen wollen, dann wollen Sie sicher nicht für jede Rechnung immer wieder die Debitoren-Nummer und den Namen angedruckt haben, sondern diese Informationen nur dann sehen, wenn ein anderer Debitor kommt. Für solche Fälle gibt es Gruppen. Eine Gruppe fasst Daten zusammen, die in einem Feld gleich sind. Für solche Daten können dann Gruppenköpfe bzw. -füsse definiert werden. Wenn Sie eine Gruppe haben wollen, die sich über mehrere Felder erstreckt, dann müssen sie mehrere Gruppen machen, für jedes Feld eines und die Informationen erst in der letzten Gruppe andrucken.
Wenn Gruppen eingefügt werden, ist es wichtig, dass dann auch die Sortierung entsprechend gesetzt wird. Dies damit dann auch alle Daten, welche die gleichen Werte wie das Gruppenfeld haben, hintereinander vom Report abgearbeitet werden.
In unserem Beispiel bedeutet dies, dass alle Rechnungen vom gleichen Debitor hintereinander erscheinen. Es kann sonst passieren, dass ein Teil der Rechnungen angezeigt wird und weiter hinten im Report noch mehr Rechnungen des gleichen Debitors folgen. Im besten Fall ist dies nur ein Schönheitsfehler, es kann sich aber auch gravierend auswirken, nämlich dann, wenn Totale gebildet werden. Dann würden in unserem Beispiel zwei Totale für den gleichen Debitor gebildet, wenn nicht sortiert wird. Die Sortierung ist somit extrem wichtig, wenn mit Gruppen gearbeitet wird.
Totale
Für Gruppen können auch Totale gerechnet werden. Dies macht man, indem das gewünschte Feld auf den Report gezogen wird. In der Feldeigenschaft können unter Summary die Einstellungen vorgenommen werden.
Solche Totale werden berechnet, während sich der Report aufbaut, d.h. setzt man ein Total in einen Gruppenkopf, so wird diese Zahl immer dem ersten Datensatz der Gruppe entsprechen, aber nicht das Total sein. Faktisch kann dies nur im Gruppenfuss oder Reportfuss gemacht werden, da sonst die Zahlen nicht vollständig sind.
Felder formatieren, Output Format
Felder können formatiert werden, so dass z.B. Gleitkommazahlen mit immer der gleichen Anzahl Nachkommastellen oder Datumsfelder mit einem bestimmten Layout versehen werden. Für eine Zeichenkette gibt es keine solche Formatierung. Gleitkommazahlen und Ganzzahlen können über folgendes Muster formatiert werden: -#'##0.00.
Das Minuszeichen steht dabei als Platzhalter, dort wo bei negativen Zahlen ein Minus stehen soll. Das Rautezeichen (#) steht, falls die Zahl den Platz braucht. Die Null (0) steht dafür, dass hier immer eine Ziffer stehen muss. Das obige Beispiel formatiert also eine Zahl, welche einen Minuswert aufweist, die Tausendertrennzeichen und immer zwei Nachkommastellen anzeigt. Datumsfelder können mit einer Kombination aus Buchstaben formatiert werden. Die wichtigsten sind:
dd | steht für den Tag, bei Tagen 1 - 9 wird immer eine führende 0 vorangestellt. |
MM | der Monat wird als Zahl geschrieben, bei den Monaten 1 - 9 wird immer eine führende 0 vorangestellt. |
MMM | Der Monat wird in Kurzform ausgeschrieben. |
MMMM | Der Monat wird voll ausgeschrieben. |
yyyy | steht für das Jahr |
hh | steht für die Stunden, bei den Stunden 1 – 9 wird immer eine führende 0 vorangestellt. |
mm | steht für die Minuten, bei den Minuten 1 - 9 wird immer eine führende 0 vorangestellt |
ss | die Sekunden, bei den Sekunden 1 - 9 wird immer eine führende 0 vorangestellt. |
Calculated Fields
Dies sind Felder, die nicht 1:1 einem Datenfeld entsprechen, sondern einen Wert enthalten, der erst beim Reportdruck berechnet bzw. zusammengebaut wird. Es kann sich dabei um mathematische Berechnungen oder um Verkettungen von einzelnen Feldern handeln.
Es ist sogar möglich, Funktionen zu nutzen, die das Programm zur Verfügung stellt. Es wird hier nicht weiter auf diese Funktionen eingegangen. Die Calculated Fields haben den folgenden Aufbau: ein Gleichheitszeichen (=), gefolgt vom Ausdruck und einem Strichpunkt (. Soll mit Werten aus den Daten gerechnet werden, so kann einfach der Feldname hingeschrieben werden.
Hier ein paar Beispiele für mathematische Berechnungen:
= 2*3;
Dieses Beispiel führt die Berechnung 2 mal 3 aus. Dies ist noch witzlos, macht aber Sinn, wenn wir uns das nächste Beispiel anschauen:
= betrag * 90 / 100;
Dieses Beispiel zeigt 90% vom Betrag an, wobei der Betrag direkt aus den Daten kommt. Es können auch mehrere Felder miteinander verrechnet werden:
= betrag * MwSt. Ansatz / 100;
Dieses Beispiel berechnet die MwSt. auf den Betrag. Man beachte, dass sowohl der Betrag wie auch der MwSt. Satz aus den Daten kommen. Dies funktioniert, solange alle Felder, die an der Berechnung beteiligt sind, numerisch sind (Ganzzahl oder Gleitkommazahl).
Nebst der mathematischen Berechnung können auch Felder miteinander verknüpft werden. Dies funktioniert, wenn die Felder alphanumerisch sind.
=name + vorname;
In diesem Fall wird der Vorname direkt hinter den Namen geschrieben. Das ist unschön, da kein Leerzeichen diese beiden Werte trennt. Es kann dazu die konstante Zeichenkette verwendet werden, indem der konstante Wert zwischen doppelten Apostrophen (") eingeschlossen wird:
= name + " " + vorname
Dieses Beispiel schreibt den Vornamen mit einem Leerschlag getrennt direkt hinter den Nachnamen.
Mehrsprachigkeit
Jeder Custom Report kann /sollte übersetzt werden. Dies macht man im Custom Report Designer. Nach Öffnen des Custom Reports kann dann über den Menüpunkt Übersetzungen die Übersetzung für die gewünschte Sprache gemacht werden. Damit man die zu übersetzenden Bezeichnungen sieht, muss die Zielsprache (in die übersetzt werden soll) ausgewählt werden.
Skripting
Nebst den bisher erwähnten Methoden kann noch ein Skriptingcode eingesetzt werden, d.h. in einem Custom Report kann noch programmiert werden. Damit sind noch mehr Möglichkeiten offen. Allerdings erfordert dies, dass man programmieren kann und die Sprache C# beherrscht.