JasperReports. Fachhochschule Nordwestschweiz FHA University of Applied Sciences Aargau. Seminarbericht.

Größe: px
Ab Seite anzeigen:

Download "JasperReports. Fachhochschule Nordwestschweiz FHA University of Applied Sciences Aargau. Seminarbericht. a.missio@stud.fh-aargau."

Transkript

1 Seminarbericht JasperReports Fachhochschule Nordwestschweiz FHA University of Applied Sciences Aargau Autor: Missio Adelchi Studiengang Vertiefung Dozent Informatik Enterprise Computing Prof. Dr. Dominik Gruntz Windisch, 18. Juli 2004

2 Abstract JasperReports ist ein in Java geschriebenes open-source Reporting Tool. Es ist in der Lage dynamisch generierte grafische Erzeugnisse auf Monitor, Drucker oder in Dateiformate wie PDF, HTML, XML, XLS, CSV auszugeben. Es eignet sich für den Einsatz in Desktop Java Applikationen, Servlet- oder EJB-Container. JasperReports benutzt für das Layout eine eigene XML-Beschreibungssyntax. Daten bezieht es aus verschiedenste Datenquellen wie Relationale Datenbanken oder Arrays und Collections mit beliebigen Java Objekten. A.Missio, FH-Aargau 2/51

3 Inhaltsverzeichnis 1 Einführung Was ist ein Reporting Tool Struktur eines Reports Zusammenfügen von Report und Daten Export des Reports JasperReports Funktionsweise von JasperReports Kompilationsprozess Füllprozess Exportprozess Anzeige auf Monitor Druck Export in das PDF-Format Export in das XLS-Format Export in das HMTL-Format Struktur des Reports Elemente des Reports Text Elemente statische Textfelder dynamische Textfelder Grafische Elemente Linien Rechtecke Bilder Hyperlinks Element Gruppen Subreports Daten und Datenübergabe Parameter Datenquelle Felder Ausdrücke oder Expressions Variablen Requirements Beispiele ireport Quellen Anhang Rechnungs-XML-Datei...40 A.Missio, FH-Aargau 3/51

4 Einführung 1 Einführung Welche/r Programmierer/in ist nicht schon an das Problem gestossen, Daten etwas ansprechend ausdrucken oder darstellen zu müssen. Die meisten Programmiersprachen bieten von Hause aus dafür nur wenig Unterstützung. In dieser Lücke fügen sich Reporting Tools wie JasperReports. Historisch betrachtet waren die ersten Werkzeuge dieser Art hauptsächlich kommerziell oder zumindest Bestandteil kommerzieller Datenbank Management Systemen. Eines der bekanntesten Reporting Tools ist wohl Crystal Reports, das insbesondere im Visual Basic Umfeld grosser Beliebtheit geniesst und die Entwicklung weiterer Reporting Tools stark beeinflusst hat. Diverse opensource Projekte haben mittlerweile ebenfalls ein hohes Niveau erreicht. Darunter zählen unter anderem JasperReports, JFreeReport und DataVision. 2 Was ist ein Reporting Tool Ein Reporting Tool zu definieren ist kein einfaches Unterfangen. Vielleicht ist folgende Aussage die zutreffendste: Ein Reporting Tool ermöglicht es das Layout eines Druckerzeugniss zu definieren, es mit Daten zu versehen und es in möglichst viele Dateiformate oder Darstellungsmedien exportieren bzw. anzuzeigen zu können. Aus der Definition lässt sich ableiten, dass ein Reporting Tool aus drei Grundkomponenten besteht. Die erste definiert das Layout. Eine weitere ergänzt es mit Daten aus verschiedensten Quellen und die letzte Komponente exportiert es in das gewünschte Dateiformat, stellt es auf den Bildschirm dar oder sendet es dem Drucker. 2.1 Struktur eines Reports Ein Report wird von den meisten Reporting Tools grob in 5 Sektionen unterteilt. Sie lauten meist Page Header, Report Header, Detail, Report Footer und Page Footer. Jede Sektion definiert ein Teil des Dokument. Während der Kombination von Layout und Daten werden die benötigten Sektionen einfach wiederholt. Zu diesen 5 Grundsektionen kommen je nach Reporting Tool noch weitere hinzu, wie in Abbildung 1 beispielsweise der Group Header, welcher mit einem entsprechender Group Footer ergänzt werden kann. Diese Abbildung stellt eine hypothetische Rechnung dar. Es ist ersichtlich wie das Reporting Tool Daten, hier Artikel mit Bezeichnung und Preis, mit entsprechenden detail-sektionen darstellt. Sollte die Datenmengen den Inhalt einer Seite sprengen, wird automatisch eine Neue generiert. Jede Seite eines Reports beginnt im allgemeinen immer mit dem Page Header und wird mit einem Page Footer abgeschlossen, die genutzt werden um Kopf- und Fusszeile zu setzten. Die in Abbildung 1 dem Page Header folgende Sektion ist der Report Header, welcher nur ein A.Missio, FH-Aargau 4/51

5 Struktur eines Reports Mal am Anfang des Reports gesetzt wird. Wir werden später sehen, wie diese Bereiche in JasperReports etwas anders bezeichnet werden. Es besteht in JasperReports beispielsweise die Möglichkeit auf der ersten Seite eines Dokument keinen Page Header und Page Footer auszugeben, um eine Titelseite zu generieren. Abbildung 1: Struktur des Layout Es können jeder Sektion grafische Elemente platziert werden, wobei wenige primitive Objekte wie Linien, Polygone und Textfelder in der Regel ausreichen, um selbst komplex gestaltete Dokumente zu generieren. Die meisten Reporting Tools erlauben zudem das Importieren und Platzieren von Bilder, was gestalterische Möglichkeiten erheblich erweitert. Ein etwas spezielles Element ist das Subreport, welches ermöglicht Reports ineinander zu verschachteln. Zu diesem Punkt spielt sich eine Eigenschaft hervor, die JasperReports zu dem Besten zurzeit erhältlichen open-source Reporting Tool erhebt. Es unterstützt das rekursive Einsetzen von Subreports. A.Missio, FH-Aargau 5/51

6 Zusammenfügen von Report und Daten 2.2 Zusammenfügen von Report und Daten In den Reporting Tools erster Generation musste Daten mittels SQL-Abfragen in das Report eingefügt werden. Aktuellere Werkzeuge stellen dem Entwickler mehr Möglichkeiten zur Verfügung, indem sie diverse Treiber bereit stellen, mit welche verschiedenste Datenquellen angesprochen werden können. In der Regel werden Daten aus Datenquellen stammen, die eine gewisse Ähnlichkeit mit dem Java-Objekt java.sql.resultset haben. Jede Zeile in dieser tabellarischen Darstellungsart wird das Reporting Tool sequentiell bearbeiten und eine entsprechende detail-sektion generieren. Hier lässt sich eine Schwäche dieses Konzepts erahnen. Daten, die in Baumähnlichen Strukturen abgelegt sind, lassen sich schlecht tabellarisch abbilden. Ein Beispiel dafür sind in erster Linie XML-Dokumente. JasperReports kann das Problem mit Subreports lösen. 2.3 Export des Reports In der Regel wird das Report vor und nach dem Ergänzen mit externen Daten in ein Reporting Tool-spezifisches Format abgelegt. Dieses wird in einem separaten Schritt in ein gängiges Dateiformat exportiert, oder direkt auf Drucker oder Monitor gesendet. In diesem Punkt erweist sich JasperReports als sehr flexibel. 3 JasperReports JasperReports ist ein mächtiges Werkzeug. Es wird seit September 2001 vom Rumänen Teodor Danciu entwickelt. JasperReports ist in der Lage aus den gängigsten Datenquellen auf Basis von Formatvorlagen druckfertigen Inhalt auf Drucker, Bildschirm oder in Dateien des Formats PDF, HTML, XLS, CSV oder XML zu exportieren. Weitere Formate sind in Bearbeitung und kommen dem Projekt laufend hinzu. JasperReports ist in Java geschrieben. Es kann in standalone Java-Applikationen, in Servlets sowie in EJB-Container verwendet werden. Eine der Stärken von JasperReports ist die rekursive Unterstützung von Subreports. Diese ermöglichen für jeden Datensatz eine quasi unbeschränkte Anzahl Seiten in verschiedensten Ausprägungen zu generieren. Die Definition des Layouts erfolgt in ein JasperReports-eigenes XML Format. Das Editieren solcher XML-Dateien lässt sich wie wir sehen werden dank den Einsatz grafischer Editoren wie ireport, sehr komfortabel erledigen. ireport ist wie JasperReports ein open-source Projekt. Dem wird in diesem Bericht noch ein Kapitel gewidmet. Die folgende Illustration zeigt ein minimales, mit ireports generiertes Report mit der entsprechenden XML-Datei HelloWorld.xml. A.Missio, FH-Aargau 6/51

7 JasperReports Abbildung 2: Minimales "Hello World" Report HelloWorld.xml <?xml version="1.0" encoding="utf-8"?> <!-- Created with ireport - A designer for JasperReports --> <!DOCTYPE jasperreport PUBLIC "//JasperReports//DTD Report Design//EN" " <jasperreport name="test" columncount="1" printorder="vertical" orientation="portrait" pagewidth="595" pageheight="842" columnwidth="535" columnspacing="0" leftmargin="30" rightmargin="30" topmargin="20" bottommargin="20" whennodatatype="nopages" istitlenewpage="false" issummarynewpage="false"> <background> <band height="0" issplitallowed="true" > </band> </background> <title> <band height="50" issplitallowed="true" > </band> A.Missio, FH-Aargau 7/51

8 JasperReports </title> <pageheader> <band height="50" issplitallowed="true" > </band> </pageheader> <columnheader> <band height="30" issplitallowed="true" > </band> </columnheader> <detail> <band height="100" issplitallowed="true" > <statictext> <reportelement mode="opaque" x="162" y="26" width="144" height="32" forecolor="#000000" backcolor="#ffffff" positiontype="fixrelativetotop" isprintrepeatedvalues="true" isremovelinewhenblank="false" isprintinfirstwholeband="false" isprintwhendetailoverflows="false"/> <textelement textalignment="center" verticalalignment="top" linespacing="single"> <font fontname="sansserif" pdffontname="helvetica" size="18" isbold="false" isitalic="false" isunderline="false" ispdfembedded ="false" pdfencoding ="CP1252" isstrikethrough="false" /> </textelement> <text><![cdata[hello World!!!]]></text> </statictext> </band> </detail> <columnfooter> <band height="30" issplitallowed="true" > </band> </columnfooter> <pagefooter> <band height="50" issplitallowed="true" > </band> </pagefooter> <summary> <band height="50" issplitallowed="true" > </band> </summary> </jasperreport> A.Missio, FH-Aargau 8/51

9 JasperReports Die Abbildung 3 zeigt ein etwas komplexeres Beispiel. Es wurde ebenfalls mit JasperReports generiert, aber zudem in HTML exportiert. Es stellt eine fiktive Rechnung dar. Das HTML-Format erlaubt es, durch Verändern des border-attributs des table- Elements den Tabellenrand hervorzuheben. Sämtliche Elemente werden in einer Zelle dieser Tabelle platziert. Der Aufbau des Layouts in einer solchen Tabelle ermöglicht das pixelgenaue Platzieren sämtlicher Elemente des Reports. Eine der Schwächen von JasperReports erweist sich im RTF-Format-Export. Dieses Format kennt keine Gitterstrukturen und ermöglicht so keine pixelgenaue Platzierung von Elemente. Die Abbildung zeigt grob die Bereiche, in die das Reports eingeteilt ist. Es sind die Sektionen title, pageheader detail und summary sichtbar. Auf die Struktur der Reports wird im Kapitel 3.2 tiefer eingegangen. Abbildung 3 HTML Export mit hervorgehobenen Tabellenrand 3.1 Funktionsweise von JasperReports Wie die meisten Reporting Tools besteht JasperReports aus drei Grundkomponenten. A.Missio, FH-Aargau 9/51

10 Funktionsweise von JasperReports Die erste kompiliert eine XML-Datei, in welcher das Layout definiert ist. In der XML- Datei sind die Dimensionen der einzelnen Sektionen, der Seite und der Elemente definiert. Die Syntax ist intuitiv, da Tags wie rectangle oder textarea benutzt werden. Der Einarbeitungsaufwand liegt etwa wie komplexem HTML. Als Grösseneinheit wird die Einheit Pixel verwendet, Anhand der Konstante 72dpi lassen sich die Dimensionen in Inch bzw. metrische Einheiten umrechnen. Eine A4 Seite im Hochformat hat beispielsweise eine Höhe von 842 und eine Breite von 595 Pixel. In den Dokument können, je nach dem was für Datenquellen angegeben werden, auch SQL-Abfragen stehen. Abbildung 4: Klassenübersicht Das XML-Dokument wird vom JasperCompileManager (siehe Abbildung 1 4) anhand einer DTD validiert, in Java Quellcode überführt und kompiliert. Das resultierende Objekt nennt sich JasperReports. Es repräsentiert das Layout ohne dynamische Daten. In der Regel wird es zur Wiederverwendung serialisiert und in einer Datei mit der Endung jasper auf das Dateisystem geschrieben. Diese Datei stellt die Grundlage des Reports dar. Dieser Kompilationsprozess soll idealerweise im Vorfeld und nicht zur Laufzeit erfolgen, da es prozessor- und speicherintensiv ist. Da nicht auf jedes System ein JDK installiert sein muss, erlaubt es JasperReports auf einen alternativen Compiler zurückzugreifen, wie der im Paket BeanShell 2. JasperReports stellt zudem das Interface JRCompiler zur Verfügung, um weitere Compiler einzubinden. Die generierte Jasper-Datei wird mittels JasperFillManager mit Daten ergänzt, wie es in Abbildung 4 und 5 schematisch dargestellt ist. Dies geschieht auf 2 verschiedene Weisen. Die einfachste besteht darin, im Report selbst SQL-Abfragen zu definieren und das Lesen der Daten an JasperReports zu delegieren. Das einzige Objekt, das dabei 1 Aus The JasperReports Ultimate Guide - siehe Quellen 2 siehe Requirements A.Missio, FH-Aargau 10/51

11 Funktionsweise von JasperReports dem JasperFillManager übergeben werden muss, ist eine java.sql.connection, die mit der Datenbank verbunden sein muss. Alternativ dazu kann eine Implementation des Interfaces JRDataSource übergeben werden. Es gibt im JasperReports Paket diverse solche Implementationen, auf die wir nicht näher eingehen. Nebst einer DataSource lassen sich auch verschiedene, in einer java.util.map verpackte, Parameter übergeben. Abbildung 5: Schematische Funktionsweise Das Resultat des Füllprozess ist ein JasperPrint-Objekt, das sich analog zum JasperReports-Objekt serialisieren und auf das Dateisystem schreiben lässt. Oft wird es aber im Speicher belassen und direkt mit dem JasperPrintManager auf das gewünschte Ausgabemedium oder über den JasperExportManager in ein Dateiformat überführt. Dieses JasperPrint-Objekt ist das fertige Druckerzeugnis im JasperReports eigenen Format, genau so wie es beispielsweise Word Dateien für das MS Word Programm sind. Diese drei Prozesse lassen sich programmatisch mit einer erschreckender Einfachheit ausführen. Im Extremfall lässt sich ein Report auf einer Zeile kompilieren, füllen und in PDF-Format als byte-array zurückgeben. Der Verfasser dieses Berichts schätzt den Gestaltungs- und XML-Vorbereitungsaufwand subjektiv um den Faktor 10 höher ein als die programmatische Implementierung des Füll und Exportprozess Kompilationsprozess Das Report wird mit dem JasperCompileManager kompiliert. Diverse statische compilereporttofile-, compilereporttostream- und compilereport-methoden bieten die verschiedensten Möglichkeiten, um aus der XML-Datei ein JasperReports Objekt zu A.Missio, FH-Aargau 11/51

12 Kompilationsprozess generieren. Mit compilereporttofile wird eine dem XML-Report gleichnamigen Datei mit der Endung.jasper erzeugt. JasperCompileManager.compileReportToFile("/path-to/report.xml"); Von der statischen Methode compilereport wird ein JasperReports-Objekt zurückgeben. JasperReports jr = JasperCompileManager.compileReport("/pathto/report.xml"); Füllprozess Das Report lässt sich ebenfalls mit einem Methodenaufruf mit Daten füllen. Dabei werden Parameter und Datenbankverbindung bzw. Datenquelle übergeben. // Parameter vorbereiten Map parameters = new HashMap(); parameters.put("reporttitel", "Dies ist mein Report"); parameters.put("rechnung", beliebigesrechnungsobjekt); // Report mit Daten aus einer JDBC Connection füllen... JasperFillManager.fillReportToFile("/path-to/report.jasper", parameters, datenbankconnection); //... oder mit Daten aus einer JRDataSource JasperFillManager.fillReportToFile("/path-to/report.jasper", parameters, jrresultsetdatasource); Exportprozess Das Report kann in diverse Dateiformate exportiert werden oder direkt auf Drucker oder Monitor gedruckt bzw. angezeigt werden. A.Missio, FH-Aargau 12/51

13 Exportprozess Anzeige auf Monitor Das Paket JasperReports hat ein eingebautes Anzeigeprogramm dori.jasper.view.jasperviewer. Es kann über die Kommandozeile aufgerufen werden. >java -classpath.;lib/jasperreports.jar dori.jasper.view.jasperviewer -FmeineJasperPrintDatei.jrprint Druck JasperPrint Objekte sendet der JasperPrintManager an den Drucker. Mit der statischen Methode printreport kann im ersten Fall ohne und im zweiten Fall mit dem Standard- Druck-Dialog gedruckt werden. Im ersten Fall wird ein JasperPrint Objekt übergeben, im zweiten der Pfad zu einem serialisierten Objekt. JasperPrintManager.printReport(meinJasperPrintObjekt, false); JasperPrintManager.printReport("/path-to/report.jrprint", true); Export in das PDF-Format Das JasperPrint Objekt lässt sich mit der statischen Methode exportreporttopdffile in die Datei report.pdf exportieren. JasperExportManager.exportReportToPdfFile("/path-to/report.jrprint"); Soll die PDF-Datei im Speicher anstatt auf das Dateisystem belassen werden kann die statische Methode exportreporttopdf verwendet werden. pdfbytearray = JasperExportManager.exportReportToPdf( "/path-to/report.jrprint"); A.Missio, FH-Aargau 13/51

14 Exportprozess Export in das XLS-Format Das Export in das XLS Format weicht etwas vom PDF-Export ab. JRXlsExporter exporter = new JRXlsExporter(); exporter.setparameter(jrexporterparameter.jasper_print, jasperprint); exporter.setparameter(jrexporterparameter.output_file_name, "/path-to/report.xls"); exporter.setparameter(jrxlsexporterparameter.is_one_page_per_sheet, Boolean.FALSE); exporter.exportreport(); Export in das HMTL-Format Export in HTML findet auf eine analoge Weise statt wie das Export in das PDF-Format. JasperExportManager.exportReportToHtmlFile("/path-to/report.jrprint"); 3.2 Struktur des Reports Das Report ist den Grundsektionen background, title, pageheader, columnheader, detail, columnfooter, pagefooter, summary gegliedert. Diese Sektionen enthalten ihrerseits alle eine Sektion band. Die weiter unten aufgeführte DTD, mit welcher die Syntax validiert wird, zeigt wie in jeder dieser Sektionen nur ein solches Element erlaubt ist. Diese band Elemente sind fakultativ. Man könnte demnach lauter leere Sektionen definieren, was höchstwahrscheinlich ein recht uninteressantes Dokument produzieren wird. jasperreport.dtd <!ELEMENT groupheader (band?)> <!ELEMENT groupfooter (band?)> <!ELEMENT background (band?)> <!ELEMENT title (band?)> <!ELEMENT pageheader (band?)> <!ELEMENT columnheader (band?)> A.Missio, FH-Aargau 14/51

15 Struktur des Reports <!ELEMENT detail (band?)> <!ELEMENT columnfooter (band?)> <!ELEMENT pagefooter (band?)> <!ELEMENT summary (band?)> <!ELEMENT band (printwhenexpression?, (line rectangle ellipse image statictext textfield subreport elementgroup)*)> <!ATTLIST band height NMTOKEN "0" issplitallowed (true false) "true"> Hier ein kurzer Auszug aus einem Report. Es steht für eine leere, also nicht genutzte background-sektion. Das Attribut issplitallowed ermöglicht es einer band sich über mehrere Seiten zu erstrecken, was bei der detail-sektion mit vielen Datensätzen oft zutreffen kann. Die Sektion detail ist in beliebig vielen Kolonnen unterteilbar. empty_report.xml <background> <band height="0" issplitallowed="true" > </band> </background> In der Abbildung 6 sind die Elemente in der leeren Dokumentstruktur eines ireport- Dokuments sichtbar. Auf das Tool ireport wird später noch weiter eingegangen. A.Missio, FH-Aargau 15/51

16 Struktur des Reports Abbildung 6: Struktur eines leeren JasperReports Dokument Abbildung 7: Struktur eines JasperReports Dokuments mit band-elemente A.Missio, FH-Aargau 16/51

17 Struktur des Reports Background Die Sektion background ermöglicht es dem Entwickler allen Seiten einen Hintergrund zu verpassen. Oft wird sie benutzt um einen Rahmen, um die ganze Seite zu ziehen. Die Höhe dieser Sektion kann die Höhe einer Seite nicht überschreiten. Title Die Sektion title kann mehr als bloss für einen Titel genutzt werden. In der fiktiven Rechnung in Abbildung 9 und 10 wird die Sektion title unter anderem für Briefkopf, Rechnungstitel und Empfängeradresse genutzt. Es besteht die Möglichkeit, die Darstellung dieser Sektion auf einer einzelnen Seite zu erzwingen. Mit dem geschickten Einsatz von Subreports kann damit an jeder Stelle des Reports eine fiktive Titelseite generiert werden, um sie beispielsweise als Trennseite zu nutzen. Page header Der pageheader leitet jede Seite ein. In der Regel bleiben die Dimensionen dieser Sektion konstant. Dieses Element dient als Kopfzeile. In Abbildung 8 und 9 erkennt man wie der page header auf jeder Seite wiederholt wird. Column header Die detail-sektionen werden in Kolonnen organisiert, die von einem columnheader eingeleitet werden. Erfolgt ein Seitensprung wegen einer hohen Anzahl detail- Sektionen, kann ein Wiedereinfügen des columnheader auf der neuen Seite erzwungen werden. Diese Sektion verändert zur Laufzeit seine Dimensionen nie. Group header Der groupheader hat es nicht bis in die Abbildung 6 geschafft. Ein Report kann von keiner bis unendlich viele groupheader beinhalten. Das sind Sektionen, die das Gruppieren von Datensätze, die mit detail-sektionen dargestellt werden, ermöglichen. Die Gruppen werden mit groupheader eingeleitet und mit groupfooter abgeschlossen. Es folgt ein Auszug aus einem XML-Report und die dazu gehörende Ausgabe in Abbildung 3 8. Die Platzierung des group header auf einer neuen Seite oder einer neuen Kolonne kann erzwungen werden. Die groupexpression steuert des Verhalten der Gruppierung. Als groupexpression kann ein beliebiger Java Ausdruck stehen. Das $F{...} ist eine JasperReports-spezifische Syntax, auf die wir noch eingehen werden. Eine Gruppierung der Datensätze mach meist nur dann Sinn, wenn die Datensätze in der richtigen Reihenfolge vorliegen. JasperReports sortiert diese nicht. 3 Aus den Beispielen des JasperReports-Projekts A.Missio, FH-Aargau 17/51

18 Struktur des Reports customer.xml <group name="citygroup" minheighttostartnewpage="60"> <groupexpression> $F{City} </groupexpression> <groupheader> <band height="20"> : : Abbildung 8: Nach Städte gruppierte Datensätze Detail Das wohl wichtigste Element ist wohl die detail-sektion. Jedem Eintrag der Datenquelle entspricht ein detail-feld. Die meisten Elemente des Reports landen hier. Group footer Dem group header entsprechend kommt pro Gruppe ein groupfooter als Abschluss hinzu. Die Abbildung 7 zeigt ein solches. Column footer Der columnfooter schliesst jede Kolonne ab. Auch hier lassen sich Dimensionen nicht zur Laufzeit ändern. Page footer Der pagefooter repräsentiert die Fusszeile jeder Seite. Die Dimensionen lassen sich ebenfalls nicht zur Laufzeit ändern. Summary Diese Sektion wird in anderen Reporting Tools auch Report Footer genannt. Sie wird A.Missio, FH-Aargau 18/51

19 Struktur des Reports nur ein mal am Ende des Dokuments eingefügt. Sie erlaubt Summen, Durchschnitte, Schlussfolgerungen und sonstiges zu platzieren. In Abbildung 9 wird im summary die Summe aller verrechneten Posten angefügt. Abbildung 9: fiktive Rechnung, 1. Seite Enthält die übergebene Datenquelle keine Datensätze, so kann das Verhalten von JasperReports drei verschiedene Ausprägungen annehmen. Es kann eine leere Seite, gar keine Seite oder ein vollständiges Dokument ohne detail-sektionen generiert werden. A.Missio, FH-Aargau 19/51

20 Struktur des Reports Abbildung 10: fiktive Rechnung 2. Seite 3.3 Elemente des Reports JasperReports kennt zwei Element-Kategorien, Textelemente und grafische Elemente. Die Textelemente sind statictext und textfield, die grafischen Elemente line, rectangle, ellipse und image. Der textfield ist dem statictext ähnlich, nur wird der Inhalt des textfield zur Laufzeit generiert. Es lassen sich in einem textfield beliebige Java Code- Passagen platzieren. Jedes Element muss in einem band-element platziert werden. A.Missio, FH-Aargau 20/51

21 Elemente des Reports Die Attribute, welche diese Elemente im Gemeinsamen haben sind ihrerseits im Element reportelement zusammengefasst. Dieses muss, wie im wie im folgenden jasperreport.dtd Auszug sichtbar, zwingend vorhanden sein. jasperreport.dtd <!ELEMENT line (reportelement, graphicelement?)> Das Element reportelement in jasperreport.dtd: jasperreport.dtd <!ELEMENT reportelement (printwhenexpression?)> <!ATTLIST reportelement key NMTOKEN #IMPLIED positiontype (Float FixRelativeToTop FixRelativeToBottom) "FixRelativeToTop" stretchtype (NoStretch RelativeToTallestObject RelativeToBandHeight) "NoStretch" isprintrepeatedvalues (true false) "true" mode (Opaque Transparent) #IMPLIED x NMTOKEN #REQUIRED y NMTOKEN #REQUIRED width NMTOKEN #REQUIRED height NMTOKEN #REQUIRED isremovelinewhenblank (true false) "false" isprintinfirstwholeband (true false) "false" isprintwhendetailoverflows (true false) "false" printwhengroupchanges CDATA #IMPLIED forecolor CDATA #IMPLIED backcolor CDATA #IMPLIED > A.Missio, FH-Aargau 21/51

22 Elemente des Reports Die Position dieser Elemente wird in Pixelkoordinaten gemessen, Diese sind in den Attributen x und y festgelegt und beziehen sich auf das entsprechende Band-Element. Die Position kann drei verschiedene Eigenschaften annehmen. Standardmässig ist FixRelativeToTop gesetzt. Das Element wird dabei mit den gesetzten Koordinaten vom band-ursprung oben Links platziert. FixRelativeToBottom verhält sich wie FixRelativeToTop, nur dass die Koordinaten von unten Links anstatt oben Links gemessen werden. Ist das positiontype-attribut auf Float gesetzt, wird das Element von Elementen, dessen Grösse sich dynamisch ändern kann, um eine Überlappung zu vermeiden, verschoben. Abbildung 11 zeigt ein Snapshot aus einer ireport-session mit 3 Elemente. Es sind die pagetype-attribute und ihre Bedeutung dargestellt. Der Float- Pfeil soll schematisch darstellen, wie das erste Element den zweiten hinunter schiebt. Abbildung 11: positiontype-attribut in reportelement Text Elemente Die Text Elemente gibt es in 2 Ausprägungen, statische und dynamische, statictext und textfield genannt. Beide Elemente haben gemeinsame Attribute, welche im Element textelement gruppiert sind. A.Missio, FH-Aargau 22/51

23 Text Elemente jasperreport.dtd <!ELEMENT statictext (reportelement, textelement?, text?)> <!ELEMENT textelement (font?)> <!ATTLIST textelement textalignment (Left Center Right Justified) "Left" verticalalignment (Top Middle Bottom) "Top" rotation (None Left Right) "None" linespacing (Single 1_1_2 Double) "Single" isstyledtext (true false) "false" > Diese Attribute des textelement-element sind den meisten Fachmänner/-frauen aus Textverarbeitungsprogramme bekannt. Auf die Schriften möchte ich nur kurz eingehen. JasperReports kennt logische (Serif, Sans-Serif, etc.) Schriften, wie sie in der Java Plattform definiert sind, und physische Schriften (Arial, Time, Helvetica, etc.). Diese können das Format TrueType oder PostScript Type 1 haben. Möchte der/ die EntwicklerIn eigene Schriften verwenden, können die Schriftendateien JasperReports mitgegeben werden. Das PDF-Format erlaubt das Einbetten von Schriften im Dokument. Dies kann mit dem Attribut ispdfembedded= true im Element font erreicht werden. Das ermöglicht eine originalgetreue Darstellung des Dokuments auf der Client-Seite statische Textfelder Statische Textfelder haben einen Inhalt, der sich während des Füllprozess des Reports nicht ändert. Sie bieten nur wenig Optionen und sind unkompliziert in der Verwendung. jasperreport.dtd <!ELEMENT statictext (reportelement, textelement?, text?)> <!ELEMENT text (#PCDATA)> dynamische Textfelder Dynamischen Textfelder ist ein Ausdruck assoziiert, welches zur Laufzeit mit jeder Iteration interpretiert wird. Dieser Ausdruck heisst textfieldexpression. Die Höhe eines solchen Felds lässt sich im Vorfeld schlecht voraussagen. Demnach besteht mit dem A.Missio, FH-Aargau 23/51

24 Text Elemente Attribut isstretchwithoverflow= true die Möglichkeit JasperReports diesen Wert zur Laufzeit erhöhen zu lassen. Dieses Verhalten wird meist in der Detail-Sektion angewendet. In Abbildung 8 und 9 ist dieses Mechanismus sichtbar. Die letzten 5 Sektionen sind dem Overflow des ersten Feldes wegen in der Höhe angepasst. Der Inhalt eines TextField-Element wird mit dem Element textfieldexpression festgelegt. In dieser, wie in jeder anderen Expression auch, kann beliebiger Java Code stehen. Einzig der Rückgabewert muss ein Java Objekt sein, dessen Typ mit einem aus der folgenden Liste übereinstimmen muss: java.lang.boolean java.lang.byte java.util.date java.sql.timestamp java.lang.double java.lang.float java.lang.integer java.lang.long java.lang.short java.math.bigdecimal java.lang.string Ist nichts angegeben, wird implizit java.lang.string als Typ angenommen. jasperreport.dtd <!ELEMENT textfield (reportelement, textelement?, textfieldexpression?, anchornameexpression?, hyperlinkreferenceexpression?, hyperlinkanchorexpression?, hyperlinkpageexpression?)> <!ATTLIST textfield isstretchwithoverflow (true false) "false" evaluationtime (Now Report Page Column Group) "Now" evaluationgroup CDATA #IMPLIED pattern CDATA #IMPLIED isblankwhennull (true false) "false" A.Missio, FH-Aargau 24/51

25 Text Elemente hyperlinktype (None Reference LocalAnchor LocalPage RemoteAnchor RemotePage) "None" > <!ELEMENT textfieldexpression (#PCDATA)> <!ATTLIST textfieldexpression class (java.lang.boolean java.lang.byte java.util.date java.sql.timestamp java.sql.time java.lang.double java.lang.float java.lang.integer java.lang.long java.lang.short java.math.bigdecimal java.lang.number java.lang.string) "java.lang.string" > Im folgenden Beispiel wird an das Rechnung-Objekt, welches als Parameter übergeben wird, die Methode gettitel ausgeführt. Diese hat einen Rückgabewert des Typs java.lang.string. Was Parameter sind, wie sie übergeben werden und mit welcher Syntax der Zugriff erfolgt folgt im Kapitel 4.4. textfield_example.xml <textfieldexpression class="java.lang.string"> <![CDATA[($P{rechnung}).getTitel()]]> </textfieldexpression> Grafische Elemente Die Kategorie grafische Elemente beinhaltet Linien, Kreise, Rechtecke und Bilder. Diese Elemente haben ebenfalls Gemeinsamkeiten, die im Element graphicelement zusammengefasst sind. Das Attribut pen steuert den Stil und die Dicke der Umrandung. Mit stretchtype lässt sich das Verhalten steuern, sollten sich in der gleichen Sektion textfield Elemente befinden, dessen Höhe zur Laufzeit dem Inhalt angepasst werden müsste. jasperreport.dtd <!ELEMENT graphicelement EMPTY> <!ATTLIST graphicelement stretchtype (NoStretch RelativeToTallestObject RelativeToBandHeight) #IMPLIED A.Missio, FH-Aargau 25/51

26 Grafische Elemente pen (None Thin 1Point 2Point 4Point Dotted) #IMPLIED fill (Solid) "Solid"> Linien Die Linie ist ein primitives Objekt. Sie ist durch das Rechteck definiert, welches sie umgibt. Das Attribut direction steuert, ob sie von oben Links nach unten Rechts oder von unten Rechts nach oben Links verlauft. Eine horizontale Linie hat ein Rechteck der Höhe 0, eine vertikale Linie analog dazu eine Breite von 0. Abbildung 11 zeigt zwei Linien, einmal mit dem direction-attribut auf TopDown und einmal auf BottomUp gesetzt. Abbildung 12: Linien Rechtecke Rechtecke erlauben keine dem Element graphicelement ergänzende Einstellungen Bilder Bilder werden mit dem Element image definiert. Ähnlich zu den dynamischen Textelemente wird der Inhalt zur Laufzeit evaluiert. Dafür ist das Element imageexpression zuständig. jasperreport.dtd <!ELEMENT image (reportelement, graphicelement?, imageexpression?, anchornameexpression?, hyperlinkreferenceexpression?, A.Missio, FH-Aargau 26/51

27 Grafische Elemente hyperlinkanchorexpression?, hyperlinkpageexpression?)> <!ATTLIST image scaleimage (Clip FillFrame RetainShape) "RetainShape" halign (Left Center Right) "Left" valign (Top Middle Bottom) "Top" isusingcache (true false) "true" evaluationtime (Now Report Page Column Group) "Now" evaluationgroup CDATA #IMPLIED hyperlinktype (None Reference LocalAnchor LocalPage RemoteAnchor RemotePage) "None" > <!ELEMENT imageexpression (#PCDATA)> <!ATTLIST imageexpression class (java.lang.string java.io.file java.net.url java.io.inputstream java.awt.image) "java.lang.string" > Die Abbildung 4 13 verdeutlicht die Anzeige des Bildes mit den verschiedenen Möglichkeiten, die das Attribut scaleimage bietet. Ist es auf RetainShape gesetzt, so wird das Bild skaliert und passend eingefügt, ohne die Proportionen zu verändern. Mit Clip werden die Proportionen ebenfalls belassen, nur auf die Skalierung wird verzichtet. Das Bild wird bei Bedarf abgeschnitten. FillFrame veranlasst eine Anpassung des Bildes an die Dimensionen des image-elements. Abbildung 13: Verschiedene Skalierverhalten Was nicht missachtet werden sollte, ist die Tatsache, dass die Auflösung von Bilder beim Skalieren intern nicht umgerechnet wird. Es empfiehlt sich das Bild in der richtigen Auflösung vorzubereiten. Wer mit HTML Erfahrung gesammelt hat weiss, dass Bilder am besten in ihrer nativen Auflösung zu verwenden sind, und möglichst nicht im HTML-Code skaliert werden sollten. Dieses Paradigma lässt sich hier übertragen. Zu hohe Auflösungen verschlechtern die Performance, indem sie die 4 Aus The JasperReports Ultimate Guide - siehe Quellen A.Missio, FH-Aargau 27/51

28 Grafische Elemente Grösse des exportierten Dokuments unnötig aufblähen. Zu niedrige Auflösungen wirken sich in Form einer verminderten Anzeigequalität des fertigen Produkt aus. Bilder, die im selben Dokument öfters verwendet werden, lassen sich mit dem Attribut isusingcache während des Füllprozess zwischenspeichern, was die Performance steigert. Die Quelle des Bildes wird in Form eines dieser Objekte angegeben: java.lang.string java.io.file java.net.url java.io.inputstream java.awt.image Das Objekt java.lang.string wird als URL interpretiert. Schlägt dies fehl so wird versucht es als Dateisystempfad zu deuten. Als dritte Möglichkeit wird noch nach einer Ressource im Klassenpfad gesucht. Dies erhöht die Flexibilität des Elements imageexpression Hyperlinks In JasperReports lassen sich Textfelder und Bilder mit Hyperlink- und mit Anker- Eigenschaften ausstatten. Hyperlinks können auf ein Anker im selben Dokument oder auf externe Dokumente verweisen. Damit lassen sich Navigationen, Querverweise etc. erstellen Element Gruppen Elemente lassen sich gruppieren, indem man sie innerhalb eines elementgroup Elements platziert. Solche Gruppen lassen sich auch verschachteln. Der einzige Vorteil, den man erlangen kann, ist das Steuern des Skalierverhalten von grafischen Elementen Subreports Eine der Stärken von JasperReports wird in die Unterstützung von Subreports gesehen. Subreports sind normale Reports, die als Subreports verwendet werden. Ein Report kann sogar auf sich selbst als Subreport verweisen. Die Verschachtelungstiefe ist nicht limitiert. Das Element subreport kann laut DTD in einem Element des Typs band A.Missio, FH-Aargau 28/51

29 Subreports vorkommen. Dies bedeutet, dass es quasi überall im Report angewendet werden kann, da jede Sektion ein Element des Typs band beinhaltet. jasperreport.dtd <!ELEMENT band (printwhenexpression?, (line rectangle ellipse image statictext textfield subreport elementgroup)*)> Dem Element subreport können die Datenquellen, die ursprünglich dem Report selbst übergeben wurden, weitergeleitet werden. Wir werden auf die Daten- und Parameterübergabe noch weiter eingehen. Subreports erlauben es sehr komplexe Dokumente herzustellen. jasperreport.dtd <!ELEMENT subreport (reportelement, parametersmapexpression?, subreportparameter*, (connectionexpression datasourceexpression)?, subreportexpression?)> <!ATTLIST subreport isusingcache (true false) "true" > 3.4 Daten und Datenübergabe Jedes Reporting Tool definiert ein Mechanismus, um auf Daten aus einem Dataset oder einer ähnlichen Struktur über die Bezeichnung der Felder zugreifen zu können. JasperReports verlangt, dass sämtliche Parameter und Felder namentlich deklarieren werden. Die Daten finden, wie im Kapitel 3.1 kurz angeschnitten, über zwei Wege in das Report: über Parameter oder über eine Datenquelle. Die Abbildung 5 ist diesbezüglich etwas ungenau, da die Parameter nicht dargestellt sind Parameter Parameter sind Objektreferenzen, die während des Füllprozess dem JasperFillManager übergeben werden. Sie sind insofern nützlich, wenn JasperReports Daten nicht aus der eigentlichen Datenquelle schöpfen kann. Diese Parameter werden mit A.Missio, FH-Aargau 29/51

30 Parameter Parameternamen als Schlüssel in einer java.util.map übergeben. Die Parameter müssen wie folgt im Report deklariert werden. rechnung.xml <parameter name="rechnungstitel" class="java.lang.string"> <defaultvalueexpression> <![CDATA[Rechnungstitel fehlt...]]> </defaultvalueexpression> </parameter> <parameter name="rechnung" class="ch.techguys.tobjects.rechnungto"/> <parameter name="referenztext" class="java.lang.string"/> Die Klasse gilt es anzugeben. Eine defaultvalueexpression wird ausgegeben, falls der Parameter in der Map fehlt, was durchaus möglich ist. Auf die Parameter kann von jeder Expression aus mit der Syntax $P{parametername} zugegriffen werden. Analogien mit gewissen Template-Frameworks fallen dem einen oder anderen LeserIn sicher auf. Der JRCompiler ersetzt beim kompilieren der XML Datei den Parameter mit seinem Java-Pendant. Dies ermöglicht zum Beispiel Konstrukte wie: new Integer(($P{rechnung}).getRechnungsnummer()) JasperReports kennt einige vordefinierte Parameter, die sich als nützlich erweisen können: REPORT_PARAMETERS_MAP Zeigt auf die übergebene java.util.map. Kommen Subreports zum Einsatz können Parameter übergeben werden. REPORT_CONNECTION Zeigt auf das java.sql.connection-objekt, falls JasperReports ein solches Objekt übergeben wurde. REPORT_DATASOURCE Wird eine JRDataSource als Datenquelle übergeben, so ist sie über diesen Parameter ansprechbar. REPORT_SCRIPLET A.Missio, FH-Aargau 30/51

31 Parameter Wird ein Scriptlet benutzt, so wird dieser Parameter drauf zeigen Datenquelle Während des Füllprozess iteriert JasperReports über die Datensätze der übergebenen Datenquelle und produziert für jeden Record eine detail-sektion. In der Regel erwartet JasperReports ein JRDataSource Objekt als Datenquelle, wobei alternativ dazu auch eine JDBC Connection übergeben werden kann. Das Objekt JRDataSource wird in den meisten Fällen ein Wrapper-Objekt um ein java.sql.resultset-objekt sein, das JRResultSetDataSource, da sehr oft die Daten aus einer Relationaler Datenbank stammen werden. Es gibt noch weitere Implementierungen dieses Interfaces. Eine weitere ist die JRTableModelDataSource, welche ein javax.swing.table.tablemodel umgibt. Entwickler im EJB-Umfeld werden die JRBeanArrayDataSource und die JRBeanCollectionDataSource zu schätzen wissen. Aus einem als Artikelnummer deklariertes Feld wird JasperReports ein Aufruf der Methode getartikelnummer ausführen Felder Die Report Felder sind die einzige Möglichkeit Daten aus der Datenquelle in Expressions zu verwenden. Für jede verwendete Kolonne muss ein field mit name und Datentyp deklariert werden. Felder können nur folgende Datentypen annehmen: java.lang.object java.lang.boolean java.lang.byte java.util.date java.sql.timestamp java.lang.double java.lang.float java.lang.integer java.io.inputstream java.lang.long java.lang.short A.Missio, FH-Aargau 31/51

32 Felder java.math.bigdecimal Andere Typen müssen als java.lang.objekt übergeben und in der Expression zurückgecastet werden Ausdrücke oder Expressions Die Bezeichnung Expression oder auch Ausdruck haben wir schon oft angetroffen. Es bestehen im Report Design mehrere Elemente die Expressions erwarten. Eine Expression ist nichts weiteres als Java Code. Demnach kann überall wo eine Expression stehen muss einfach Java Code geschrieben werden, welches das erwartete Rückgabewert liefert. Die Elemente, die nach einer Expression verlangen sind folgende: variableexpression initialvalueexpression groupexpression printwhenexpression imageexpression textfieldexpression Expressions erlauben den Zugriff auf Parameter, Felder und Variablen mit der folgender einfachen Syntax: $P{ParameterName} $F{FeldName} $V{VariablenName} Ein Ausdruck kann auch etwas komplexer geraten. Hier zwei Beispiele 5 : <textfieldexpression> 5 Aus The JasperReports Ultimate Guide A.Missio, FH-Aargau 32/51

33 Ausdrücke oder Expressions $F{FirstName} + " " + $F{LastName} + " was hired on " + (new SimpleDateFormat("MM/dd/yyyy")).format($F{HireDate}) + "." </textfieldexpression> <textfieldexpression> $F{FirstName}.substring(0, 1) </textfieldexpression> Variablen Variablen sind, wie der Name vermuten lässt, Java Variablen, die als Expression einmal deklariert und öfters verwendet werden können. Sie können während des Füllprozess für verschiedene Berechnungen verwendet, initialisiert und zu vordefinierten Zeitpunkte wieder zurückgesetzt werden. jasperreport.dtd <!ELEMENT variable (variableexpression?, initialvalueexpression?)> <!ATTLIST variable name NMTOKEN #REQUIRED class NMTOKEN "java.lang.string" resettype (None Report Page Column Group) "Report" resetgroup CDATA #IMPLIED calculation (Nothing Count Sum Average Lowest Highest StandardDeviation Variance System) "Nothing" incrementerfactoryclass NMTOKEN #IMPLIED > <!ELEMENT variableexpression (#PCDATA)> <!ELEMENT initialvalueexpression (#PCDATA)> Hier ein Beispiel 6 in welches für das Feld Quantity für jede Seite einzeln die Summe berechnet wird. Diese Variable wird nach jeder Seite auf das Initialwert zurückgesetzt. <variable name="quantitysum" class="java.lang.double" resettype="page" calculation="sum"> <variableexpression>$f{quantity}</variableexpression> 6 Aus The JasperReports Ultimate Guide A.Missio, FH-Aargau 33/51

34 Variablen <initialvalueexpression>new Double(0)</initialValueExpression> </variable> JasperReports hat einige eingebauten Variablen: PAGE_NUMBER Enthält die Aktuelle Seitenzahl. COLUMN_NUMBER Ein Report mit 3 Kolonnen wird auf der zweiten Seite die Kolonnen Nummer 5, 6 und 7 haben. REPORT_COUNT Die Anzahl verarbeitete Datasource-Einträge PAGE_COUNT Die Anzahl Seiten. COLUMN_COUNT Die Anzahl Kolonnen. GroupName_COUNT Für jede deklarierte Gruppe wird automatisch eine Variable angelegt, welche die Anzahl Gruppen mit zählt. 3.5 Requirements Die Installation vom JasperReports Paket setzt weitere Pakete voraus, die ebenfalls als open-source der Allgemeinheit zur Verfügung stehen. JasperReports generiert beispielsweise PDF Dokumente mit Hilfe der itext Library, Excel Sheets mittels POI- Library. Dem Programmierer wird dank einer effektiven Kapselung dieser Interna von den verwendeten Bibliotheken verschont. JasperReports versteckt sie hinter ausgiebigen Façade-Klassen. Ist das JasperReports-Paket von dem Server heruntergeladen, sind bis auf das Java SDK sämtliche benötigten Komponenten enthalten. Es kann gleich losgelegt werden. Die Versionen dieser Komponenten sind nicht die aktuellsten. Aus diesem Grund hier alle nochmals aufgeführt. A.Missio, FH-Aargau 34/51

35 Requirements Java SDK JDK oder höher. XML JAXP 1.1 XML Parser Jakarta Commons Digester Component Jakarta Commons Digester Component (version 1.1 or later) Jakarta Commons Collections Component Jakarta Commons Collections Component (version 1.0 or later) Jakarta Commons BeanUtils Component Jakarta Commons BeanUtils Component (version 1.1 or later) Jakarta Commons Logging Component Jakarta Commons Logging Component (version 1.0 or later) JDBC JDBC 2.0 Driver PDF itext XLS Free Java-PDF library by Bruno Lowagie and Paulo Soares (version 0.96 or later) Jakarta POI Jakarta POI (version 2.0 or later) A.Missio, FH-Aargau 35/51

36 Beispiele 4 Beispiele JasperReports bringt Beispiele mit, die in Anschaulichkeit kaum zu übertreffen sind. Einzig ein Beispiel in einem EJB-Container fehlt. Anhand einer Applikation, die sich um Zeiterfassung und Rechnungsstellung kümmert, werden die Teile des Codes vorgestellt, welche die Rechnungen als PDF und XLS ausliefern. In dem zustandslosen Sessionbean MainSession geben 2 Methoden getrechnungpdf und getrechnungxls jeweils ein byte Array mit dem entsprechenden Dokument zurück. MainSession.java byte[] getrechnungpdf(integer id) throws RemoteException, EJBException; byte[] getrechnungxls(integer id) throws RemoteException, EJBException; Die Rechnung wird aus Arbeits- und Materialposten, eine Rechnung und einen Kunden zusammengestellt. Diese Objekte sind Transport-Objekte oder auch Value-Objects, wie sie in EJB Applikationen oft verwendet werden. Methoden wie getverrechnetematerialposten geben eine java.util.collection mit MaterialPostenTO Objekte zurück. MainSessionBean.java public byte[] getrechnungpdf(integer id) { byte[] pdffile = null; Collection posten = this.getalleposten(id); Map parameters = this.getparameterforrechnung(id); try { pdffile = JasperRunManager.runReportToPdf( Config.Jasper.JASPER_FILE_LOCATION, parameters, new JRBeanCollectionDataSource(posten)); if (Config.DEBUG) System.err.println("-getRechnungPdf- pdf: " + pdffile); } catch (JRException e) { e.printstacktrace(); } return pdffile; } public byte[] getrechnungxls(integer id) { byte[] xlsfile = null; JasperPrint jrprint = null; Collection posten = this.getalleposten(id); Map parameters = this.getparameterforrechnung(id); A.Missio, FH-Aargau 36/51

37 Beispiele ByteArrayOutputStream out = new ByteArrayOutputStream(); try { jrprint = JasperFillManager.fillReport( Config.Jasper.JASPER_FILE_LOCATION, parameters, new JRBeanCollectionDataSource(posten)); JRXlsExporter exporter = new JRXlsExporter(); exporter.setparameter(jrexporterparameter.jasper_print, jrprint); exporter.setparameter(jrexporterparameter.output_stream, out); exporter.setparameter (JRXlsExporterParameter.IS_ONE_PAGE_PER_SHEET, Boolean.FALSE); exporter.exportreport(); xlsfile = out.tobytearray(); if (Config.DEBUG) System.err.println("-getRechnungXls- xls: " + xlsfile); } catch (JRException e) { e.printstacktrace(); } return xlsfile; } private Map getparameterforrechnung(integer id) { Map parameter = new HashMap(); parameter.put("rechnung", this.getrechnung(id)); parameter.put("kunde", this.getkundevonrechnung(id)); return parameter; } private Collection getalleposten(integer id) { Collection posten = this.getverrechnetearbeitsposten(id); posten.addall(this.getverrechnetematerialposten(id)); return posten; } Diese beiden Methoden werden vom Servlet MainServlet aufgerufen. Es gibt die Dokumente, nachdem es im Header den entsprechenden Typ application/pdf oder application/msexcel gesetzt hat, dem Browser weiter. MainServlet.java if (cmd.equals("pdf")) { byte[] pdffile = null; pdffile = mainsession.getrechnungpdf(id); if (pdffile!= null && pdffile.length > 0) { response.setcontenttype("application/pdf"); A.Missio, FH-Aargau 37/51

38 Beispiele response.setcontentlength(pdffile.length); ServletOutputStream ouputstream = response.getoutputstream(); ouputstream.write(pdffile, 0, pdffile.length); ouputstream.flush(); ouputstream.close(); } } else if (cmd.equals("xls")) { byte[] xlsfile = null; xlsfile = mainsession.getrechnungxls(id); if (xlsfile!= null && xlsfile.length > 0) { response.setcontenttype("application/msexcel"); response.setcontentlength(xlsfile.length); ServletOutputStream ouputstream = response.getoutputstream(); ouputstream.write(xlsfile, 0, xlsfile.length); ouputstream.flush(); ouputstream.close(); } } A.Missio, FH-Aargau 38/51

39 ireport 5 ireport Der proportional grösste Aufwand liegt in der Gestaltung des Xml-Reports. Die programmatische Implementierung von Füll- und Exportprozess beschränkt sich im Extremfall auf eine Java-Codezeile. Um den gestalterischen Aufwand in Designprozess zu minimieren, eignet sich das Werkzeug ireport hervorragend. Es erhöht die Produktivität im Gestaltungs- und Entwicklungsprozess des Reports unheimlich. Der Entwickler muss sich, zumindest nicht am Anfang schon, mit der Syntax von JasperReports auseinandersetzen. ireport wird als open-source Projekt auf SourceForge gehostet. Es ist wie JasperReports in Java geschrieben, und es beschränkt sich nicht nur auf die Gestaltung. Der Kompilations- und Exportprozess kann ebenfalls aus diesem Programm heraus gestartet werden. Abbildung 14: ireport Bis auf das Element elementgroup lassen sich sämtliche JasperReports-Tags damit editieren. Das grafische Interface ist intuitiv. Es erleichtert den Einstieg in die Welt von A.Missio, FH-Aargau 39/51

40 ireport JasperReports. Abbildung 15: ireport 6 Quellen The JasperReports Ultimate Guide Version Teodor Danciu Reporting Tool in ambiente Open Source 2003 Giulio Toffoli JasperReports Homepage ireport Homepage A.Missio, FH-Aargau 40/51

41 Anhang 7 Anhang 7.1 Rechnungs-XML-Datei <?xml version="1.0" encoding="utf-8"?> <!-- Created with ireport - A designer for JasperReports --> <!DOCTYPE jasperreport PUBLIC "//JasperReports//DTD Report Design//EN" " <jasperreport name="rechnung001" columncount="1" printorder="vertical" orientation="portrait" pagewidth="595" pageheight="842" columnwidth="451" columnspacing="0" leftmargin="72" rightmargin="72" topmargin="28" bottommargin="42" whennodatatype="nopages" istitlenewpage="false" issummarynewpage="false"> <parameter name="rechnungstitel" isforprompting="true" class="java.lang.string"/> <parameter name="rechnung" isforprompting="false" class="ch.techguys.tobjects.rechnungto"/> <parameter name="kunde" isforprompting="false" class="ch.techguys.tobjects.kundeto"/> <parameter name="referenztext" isforprompting="false" class="java.lang.string"/> <field name="postenbeschreibung" class="java.lang.string"> <fielddescription> <![CDATA[Ausführliche Zusammengesetzte Beschreibung des Posten]]> </fielddescription> </field> <field name="id" class="java.lang.integer"> <fielddescription><![cdata[nummer des Posten]]></fieldDescription> </field> <field name="anzahl" class="java.lang.double"> <fielddescription><![cdata[anzahl Stunden oder Artikel]]> </fielddescription> </field> <field name="betrag" class="java.lang.double"> <fielddescription><![cdata[berechneter Betrag des Posten]]> </fielddescription> </field> <field name="preis" class="java.lang.double"> <fielddescription><![cdata[preis des Artikels bzw Stundenansatz]]> </fielddescription> </field> <variable name="betrag_sum" class="java.lang.double" resettype="report" calculation="sum"> <variableexpression><![cdata[$f{betrag}]]></variableexpression> <initialvalueexpression><![cdata[new Double(0)]]> </initialvalueexpression> </variable> A.Missio, FH-Aargau 41/51

Die Textvorlagen in Microsoft WORD und LibreOffice Writer

Die Textvorlagen in Microsoft WORD und LibreOffice Writer Die Textvorlagen in Microsoft WORD und LibreOffice Writer Liebe Teilnehmer(-innen) am Landeswettbewerb Deutsche Sprache und Literatur Baden- Württemberg, Diese Anleitung soll Ihnen helfen Ihren Wettbewerbsbeitrag

Mehr

L10N-Manager 3. Netzwerktreffen der Hochschulübersetzer/i nnen Mannheim 10. Mai 2016

L10N-Manager 3. Netzwerktreffen der Hochschulübersetzer/i nnen Mannheim 10. Mai 2016 L10N-Manager 3. Netzwerktreffen der Hochschulübersetzer/i nnen Mannheim 10. Mai 2016 Referentin: Dr. Kelly Neudorfer Universität Hohenheim Was wir jetzt besprechen werden ist eine Frage, mit denen viele

Mehr

Dokumentation von Ük Modul 302

Dokumentation von Ük Modul 302 Dokumentation von Ük Modul 302 Von Nicolas Kull Seite 1/ Inhaltsverzeichnis Dokumentation von Ük Modul 302... 1 Inhaltsverzeichnis... 2 Abbildungsverzeichnis... 3 Typographie (Layout)... 4 Schrift... 4

Mehr

Hilfe Bearbeitung von Rahmenleistungsverzeichnissen

Hilfe Bearbeitung von Rahmenleistungsverzeichnissen Hilfe Bearbeitung von Rahmenleistungsverzeichnissen Allgemeine Hinweise Inhaltsverzeichnis 1 Allgemeine Hinweise... 3 1.1 Grundlagen...3 1.2 Erstellen und Bearbeiten eines Rahmen-Leistungsverzeichnisses...

Mehr

Access [basics] Rechnen in Berichten. Beispieldatenbank. Datensatzweise berechnen. Berechnung im Textfeld. Reporting in Berichten Rechnen in Berichten

Access [basics] Rechnen in Berichten. Beispieldatenbank. Datensatzweise berechnen. Berechnung im Textfeld. Reporting in Berichten Rechnen in Berichten Berichte bieten die gleichen Möglichkeit zur Berechnung von Werten wie Formulare und noch einige mehr. Im Gegensatz zu Formularen bieten Berichte die Möglichkeit, eine laufende Summe zu bilden oder Berechnungen

Mehr

Was ist PDF? Portable Document Format, von Adobe Systems entwickelt Multiplattformfähigkeit,

Was ist PDF? Portable Document Format, von Adobe Systems entwickelt Multiplattformfähigkeit, Was ist PDF? Portable Document Format, von Adobe Systems entwickelt Multiplattformfähigkeit, Wie kann ein PDF File angezeigt werden? kann mit Acrobat-Viewern angezeigt werden auf jeder Plattform!! (Unix,

Mehr

32.4 Anpassen von Menüs und Symbolleisten 795i

32.4 Anpassen von Menüs und Symbolleisten 795i 32.4 Anpassen von Menüs und Symbolleisten 795i Fortsetzung der Seiten in der 8. Auflage 32.4 Anpassen von Menüs und Symbolleisten 32.4.1 Anpassen von Menüs Die Menüs können um folgende Typen von Optionen

Mehr

Berechnungen in Access Teil I

Berechnungen in Access Teil I in Access Teil I Viele Daten müssen in eine Datenbank nicht eingetragen werden, weil sie sich aus anderen Daten berechnen lassen. Zum Beispiel lässt sich die Mehrwertsteuer oder der Bruttopreis in einer

Mehr

teischl.com Software Design & Services e.u. office@teischl.com www.teischl.com/booknkeep www.facebook.com/booknkeep

teischl.com Software Design & Services e.u. office@teischl.com www.teischl.com/booknkeep www.facebook.com/booknkeep teischl.com Software Design & Services e.u. office@teischl.com www.teischl.com/booknkeep www.facebook.com/booknkeep 1. Erstellen Sie ein neues Rechnungsformular Mit book n keep können Sie nun Ihre eigenen

Mehr

Objektorientierte Programmierung für Anfänger am Beispiel PHP

Objektorientierte Programmierung für Anfänger am Beispiel PHP Objektorientierte Programmierung für Anfänger am Beispiel PHP Johannes Mittendorfer http://jmittendorfer.hostingsociety.com 19. August 2012 Abstract Dieses Dokument soll die Vorteile der objektorientierten

Mehr

Artikel Schnittstelle über CSV

Artikel Schnittstelle über CSV Artikel Schnittstelle über CSV Sie können Artikeldaten aus Ihrem EDV System in das NCFOX importieren, dies geschieht durch eine CSV Schnittstelle. Dies hat mehrere Vorteile: Zeitersparnis, die Karteikarte

Mehr

Die Beschreibung bezieht sich auf die Version Dreamweaver 4.0. In der Version MX ist die Sitedefinition leicht geändert worden.

Die Beschreibung bezieht sich auf die Version Dreamweaver 4.0. In der Version MX ist die Sitedefinition leicht geändert worden. In einer Website haben Seiten oft das gleiche Layout. Speziell beim Einsatz von Tabellen, in denen die Navigation auf der linken oder rechten Seite, oben oder unten eingesetzt wird. Diese Anteile der Website

Mehr

Satzhilfen Publisher Seite Einrichten

Satzhilfen Publisher Seite Einrichten Satzhilfen Publisher Seite Einrichten Es gibt verschiedene Möglichkeiten die Seite einzurichten, wir fangen mit der normalen Version an, Seite einrichten auf Format A5 Wählen Sie zunächst Datei Seite einrichten,

Mehr

4 Aufzählungen und Listen erstellen

4 Aufzählungen und Listen erstellen 4 4 Aufzählungen und Listen erstellen Beim Strukturieren von Dokumenten und Inhalten stellen Listen und Aufzählungen wichtige Werkzeuge dar. Mit ihnen lässt sich so ziemlich alles sortieren, was auf einer

Mehr

Erzherzog Johann Jahr 2009

Erzherzog Johann Jahr 2009 Erzherzog Johann Jahr 2009 Der Erzherzog Johann Tag an der FH JOANNEUM in Kapfenberg Was wird zur Erstellung einer Webseite benötigt? Um eine Webseite zu erstellen, sind die folgenden Dinge nötig: 1. Ein

Mehr

3. GLIEDERUNG. Aufgabe:

3. GLIEDERUNG. Aufgabe: 3. GLIEDERUNG Aufgabe: In der Praxis ist es für einen Ausdruck, der nicht alle Detaildaten enthält, häufig notwendig, Zeilen oder Spalten einer Tabelle auszublenden. Auch eine übersichtlichere Darstellung

Mehr

Herstellen von Symbolen mit Corel Draw ab Version 9

Herstellen von Symbolen mit Corel Draw ab Version 9 Herstellen von Symbolen mit Corel Draw ab Version 9 Einleitung : Icon Design-Überblick: 1) Gestalten in Corel Draw 10.0 3) Vorlage für Photopaint für Import von Corel 4) Einfügen in die PSD-Datei und Bearbeiten

Mehr

Stellen Sie bitte den Cursor in die Spalte B2 und rufen die Funktion Sverweis auf. Es öffnet sich folgendes Dialogfenster

Stellen Sie bitte den Cursor in die Spalte B2 und rufen die Funktion Sverweis auf. Es öffnet sich folgendes Dialogfenster Es gibt in Excel unter anderem die so genannten Suchfunktionen / Matrixfunktionen Damit können Sie Werte innerhalb eines bestimmten Bereichs suchen. Als Beispiel möchte ich die Funktion Sverweis zeigen.

Mehr

Handbuch Fischertechnik-Einzelteiltabelle V3.7.3

Handbuch Fischertechnik-Einzelteiltabelle V3.7.3 Handbuch Fischertechnik-Einzelteiltabelle V3.7.3 von Markus Mack Stand: Samstag, 17. April 2004 Inhaltsverzeichnis 1. Systemvorraussetzungen...3 2. Installation und Start...3 3. Anpassen der Tabelle...3

Mehr

Informationen zu den regionalen Startseiten

Informationen zu den regionalen Startseiten Informationen zu den regionalen Startseiten Inhaltsverzeichnis Informationen zu den regionalen Startseiten 1 1. Grundlegende Regeln 2 1.1. Was wird angezeigt? 2 1.2. Generelle Anzeigeregeln 2 2. Anpassbare

Mehr

Text Formatierung in Excel

Text Formatierung in Excel Text Formatierung in Excel Das Aussehen des Textes einer oder mehrerer Zellen kann in Excel über verschiedene Knöpfe beeinflusst werden. Dazu zuerst die betroffenen Zelle(n) anwählen und danach den entsprechenden

Mehr

Datenbanken Kapitel 2

Datenbanken Kapitel 2 Datenbanken Kapitel 2 1 Eine existierende Datenbank öffnen Eine Datenbank, die mit Microsoft Access erschaffen wurde, kann mit dem gleichen Programm auch wieder geladen werden: Die einfachste Methode ist,

Mehr

Ein PDF erstellen. aus Adobe InDesign CC. Langner Marketing Unternehmensplanung Metzgerstraße 59 72764 Reutlingen

Ein PDF erstellen. aus Adobe InDesign CC. Langner Marketing Unternehmensplanung Metzgerstraße 59 72764 Reutlingen aus Adobe InDesign CC Langner Marketing Unternehmensplanung Metzgerstraße 59 72764 Reutlingen T 0 71 21 / 2 03 89-0 F 0 71 21 / 2 03 89-20 www.langner-beratung.de info@langner-beratung.de Über Datei >

Mehr

Proseminar: Website-Managment-System. NetObjects Fusion. von Christoph Feller

Proseminar: Website-Managment-System. NetObjects Fusion. von Christoph Feller Proseminar: Website-Managment-System NetObjects Fusion von Christoph Feller Netobjects Fusion - Übersicht Übersicht Einleitung Die Komponenten Übersicht über die Komponenten Beschreibung der einzelnen

Mehr

Upgrade auf die Standalone Editionen von Acronis Backup & Recovery 10. Technische Informationen (White Paper)

Upgrade auf die Standalone Editionen von Acronis Backup & Recovery 10. Technische Informationen (White Paper) Upgrade auf die Standalone Editionen von Acronis Backup & Recovery 10 Technische Informationen (White Paper) Inhaltsverzeichnis 1. Über dieses Dokument... 3 2. Überblick... 3 3. Upgrade Verfahren... 4

Mehr

5.2 Neue Projekte erstellen

5.2 Neue Projekte erstellen 5.2 Neue Projekte erstellen Das Bearbeiten von bestehenden Projekten und Objekten ist ja nicht schlecht wie aber können Sie neue Objekte hinzufügen oder gar völlig neue Projekte erstellen? Die Antwort

Mehr

Arbeiten mit UMLed und Delphi

Arbeiten mit UMLed und Delphi Arbeiten mit UMLed und Delphi Diese Anleitung soll zeigen, wie man Klassen mit dem UML ( Unified Modeling Language ) Editor UMLed erstellt, in Delphi exportiert und dort so einbindet, dass diese (bis auf

Mehr

.htaccess HOWTO. zum Schutz von Dateien und Verzeichnissen mittels Passwortabfrage

.htaccess HOWTO. zum Schutz von Dateien und Verzeichnissen mittels Passwortabfrage .htaccess HOWTO zum Schutz von Dateien und Verzeichnissen mittels Passwortabfrage Stand: 21.06.2015 Inhaltsverzeichnis 1. Vorwort...3 2. Verwendung...4 2.1 Allgemeines...4 2.1 Das Aussehen der.htaccess

Mehr

MdtTax Programm. Programm Dokumentation. Datenbank Schnittstelle. Das Hauptmenü. Die Bedienung des Programms geht über das Hauptmenü.

MdtTax Programm. Programm Dokumentation. Datenbank Schnittstelle. Das Hauptmenü. Die Bedienung des Programms geht über das Hauptmenü. Programm Die Bedienung des Programms geht über das Hauptmenü. Datenbank Schnittstelle Die Datenbank wir über die Datenbank- Schnittstelle von Office angesprochen. Von Office 2000-2003 gab es die Datenbank

Mehr

1 Einleitung. Lernziele. das Drucklayout einer Tabelle mit der Seitenansicht kontrollieren

1 Einleitung. Lernziele. das Drucklayout einer Tabelle mit der Seitenansicht kontrollieren 1 Einleitung Lernziele das Drucklayout einer Tabelle mit der Seitenansicht kontrollieren mit dem Register Seitenlayout das Drucklayout einer Tabelle ändern Kopf- und Fußzeilen schnell einfügen Lerndauer

Mehr

Binäre Bäume. 1. Allgemeines. 2. Funktionsweise. 2.1 Eintragen

Binäre Bäume. 1. Allgemeines. 2. Funktionsweise. 2.1 Eintragen Binäre Bäume 1. Allgemeines Binäre Bäume werden grundsätzlich verwendet, um Zahlen der Größe nach, oder Wörter dem Alphabet nach zu sortieren. Dem einfacheren Verständnis zu Liebe werde ich mich hier besonders

Mehr

Anzeige von eingescannten Rechnungen

Anzeige von eingescannten Rechnungen Anzeige von eingescannten Rechnungen Wenn Sie sich zu einer Eingangsrechnung die eingescannte Originalrechnung ansehen möchten, wählen Sie als ersten Schritt aus Ihrem Benutzermenü unter dem Kapitel Eingangsrechnung

Mehr

Mit der Maus im Menü links auf den Menüpunkt 'Seiten' gehen und auf 'Erstellen klicken.

Mit der Maus im Menü links auf den Menüpunkt 'Seiten' gehen und auf 'Erstellen klicken. Seite erstellen Mit der Maus im Menü links auf den Menüpunkt 'Seiten' gehen und auf 'Erstellen klicken. Es öffnet sich die Eingabe Seite um eine neue Seite zu erstellen. Seiten Titel festlegen Den neuen

Mehr

Diese Ansicht erhalten Sie nach der erfolgreichen Anmeldung bei Wordpress.

Diese Ansicht erhalten Sie nach der erfolgreichen Anmeldung bei Wordpress. Anmeldung http://www.ihredomain.de/wp-admin Dashboard Diese Ansicht erhalten Sie nach der erfolgreichen Anmeldung bei Wordpress. Das Dashboard gibt Ihnen eine kurze Übersicht, z.b. Anzahl der Beiträge,

Mehr

JSP JSTL. JEE Vorlesung Teil 6. Ralf Gitzel ralf_gitzel@hotmail.de

JSP JSTL. JEE Vorlesung Teil 6. Ralf Gitzel ralf_gitzel@hotmail.de JSP JSTL JEE Vorlesung Teil 6 Ralf Gitzel ralf_gitzel@hotmail.de 1 Übersicht Ralf Gitzel ralf_gitzel@hotmail.de 2 Übersicht Wiederholung / Vertiefung JSTL Grundlagen JSTL Basisbefehle Templates über JSTL

Mehr

Flyer, Sharepics usw. mit LibreOffice oder OpenOffice erstellen

Flyer, Sharepics usw. mit LibreOffice oder OpenOffice erstellen Flyer, Sharepics usw. mit LibreOffice oder OpenOffice erstellen Wir wollen, dass ihr einfach für eure Ideen und Vorschläge werben könnt. Egal ob in ausgedruckten Flyern, oder in sozialen Netzwerken und

Mehr

NEUES BEI BUSINESSLINE WINDOWS

NEUES BEI BUSINESSLINE WINDOWS Fon: 0761-400 26 26 Schwarzwaldstr. 132 Fax: 0761-400 26 27 rueckertsoftware@arcor.de 79102 Freiburg www.rueckert-software.de Beratung Software Schulung Hardware Support Schwarzwaldstrasse 132 79102 Freiburg

Mehr

Textgestaltung mit dem Editor TinyMCE Schritt für Schritt

Textgestaltung mit dem Editor TinyMCE Schritt für Schritt Textgestaltung mit dem Editor TinyMCE Schritt für Schritt Folgender Artikel soll veröffentlicht und mit dem Editor TinyMCE gestaltet werden: Eine große Überschrift Ein Foto Hier kommt viel Text. Hier kommt

Mehr

Viele Bilder auf der FA-Homepage

Viele Bilder auf der FA-Homepage Viele Bilder auf der FA-Homepage Standardmäßig lassen sich auf einer FA-Homepage nur 2 Bilder mit zugehörigem Text unterbringen. Sollen es mehr Bilder sein, muss man diese als von einer im Internet

Mehr

Einführung in die Java- Programmierung

Einführung in die Java- Programmierung Einführung in die Java- Programmierung Dr. Volker Riediger Tassilo Horn riediger horn@uni-koblenz.de WiSe 2012/13 1 Wichtig... Mittags keine Pommes... Praktikum A 230 C 207 (Madeleine + Esma) F 112 F 113

Mehr

Professionelle Seminare im Bereich MS-Office

Professionelle Seminare im Bereich MS-Office Der Name BEREICH.VERSCHIEBEN() ist etwas unglücklich gewählt. Man kann mit der Funktion Bereiche zwar verschieben, man kann Bereiche aber auch verkleinern oder vergrößern. Besser wäre es, die Funktion

Mehr

Java Kurs für Anfänger Einheit 4 Klassen und Objekte

Java Kurs für Anfänger Einheit 4 Klassen und Objekte Java Kurs für Anfänger Einheit 4 Klassen und Ludwig-Maximilians-Universität München (Institut für Informatik: Programmierung und Softwaretechnik von Prof.Wirsing) 13. Juni 2009 Inhaltsverzeichnis klasse

Mehr

In diesem Thema lernen wir die Grundlagen der Datenbanken kennen und werden diese lernen einzusetzen. Access. Die Grundlagen der Datenbanken.

In diesem Thema lernen wir die Grundlagen der Datenbanken kennen und werden diese lernen einzusetzen. Access. Die Grundlagen der Datenbanken. In diesem Thema lernen wir die Grundlagen der Datenbanken kennen und werden diese lernen einzusetzen. Access Die Grundlagen der Datenbanken kurspc15 Inhaltsverzeichnis Access... Fehler! Textmarke nicht

Mehr

12. Dokumente Speichern und Drucken

12. Dokumente Speichern und Drucken 12. Dokumente Speichern und Drucken 12.1 Überblick Wie oft sollte man sein Dokument speichern? Nachdem Sie ein Word Dokument erstellt oder bearbeitet haben, sollten Sie es immer speichern. Sie sollten

Mehr

Klausurteilnehmer. Wichtige Hinweise. Note: Klausur Informatik Programmierung, 17.09.2012 Seite 1 von 8 HS OWL, FB 7, Malte Wattenberg.

Klausurteilnehmer. Wichtige Hinweise. Note: Klausur Informatik Programmierung, 17.09.2012 Seite 1 von 8 HS OWL, FB 7, Malte Wattenberg. Klausur Informatik Programmierung, 17.09.2012 Seite 1 von 8 Klausurteilnehmer Name: Matrikelnummer: Wichtige Hinweise Es sind keinerlei Hilfsmittel zugelassen auch keine Taschenrechner! Die Klausur dauert

Mehr

Inhalt. 1 Einleitung AUTOMATISCHE DATENSICHERUNG AUF EINEN CLOUDSPEICHER

Inhalt. 1 Einleitung AUTOMATISCHE DATENSICHERUNG AUF EINEN CLOUDSPEICHER AUTOMATISCHE DATENSICHERUNG AUF EINEN CLOUDSPEICHER Inhalt 1 Einleitung... 1 2 Einrichtung der Aufgabe für die automatische Sicherung... 2 2.1 Die Aufgabenplanung... 2 2.2 Der erste Testlauf... 9 3 Problembehebung...

Mehr

UpToNet Workflow Workflow-Designer und WebClient Anwendung

UpToNet Workflow Workflow-Designer und WebClient Anwendung UpToNet Workflow Workflow-Designer und WebClient Anwendung Grafische Erstellung im Workflow-Designer 1 Grafische Erstellung im Workflow-Designer Bilden Sie Ihre Arbeitsvorgänge im Workflow-Designer von

Mehr

Erstellung von Reports mit Anwender-Dokumentation und System-Dokumentation in der ArtemiS SUITE (ab Version 5.0)

Erstellung von Reports mit Anwender-Dokumentation und System-Dokumentation in der ArtemiS SUITE (ab Version 5.0) Erstellung von und System-Dokumentation in der ArtemiS SUITE (ab Version 5.0) In der ArtemiS SUITE steht eine neue, sehr flexible Reporting-Funktion zur Verfügung, die mit der Version 5.0 noch einmal verbessert

Mehr

Anleitung zum GEPA EXCEL Import Tool

Anleitung zum GEPA EXCEL Import Tool Anleitung zum GEPA EXCEL Import Tool Mit diesem Tool können Sie Ihren GEPA Warenkorb (Weltläden und Gruppen) mit Hilfe von Excel-Listen, die Sie aus Ihrer Warenwirtschaft generieren oder händisch erstellen,

Mehr

Kommunikations-Management

Kommunikations-Management Tutorial: Wie kann ich E-Mails schreiben? Im vorliegenden Tutorial lernen Sie, wie Sie in myfactory E-Mails schreiben können. In myfactory können Sie jederzeit schnell und einfach E-Mails verfassen egal

Mehr

Java Kurs für Anfänger Einheit 5 Methoden

Java Kurs für Anfänger Einheit 5 Methoden Java Kurs für Anfänger Einheit 5 Methoden Ludwig-Maximilians-Universität München (Institut für Informatik: Programmierung und Softwaretechnik von Prof.Wirsing) 22. Juni 2009 Inhaltsverzeichnis Methoden

Mehr

Objektorientierte Programmierung

Objektorientierte Programmierung Objektorientierte Programmierung 1 Geschichte Dahl, Nygaard: Simula 67 (Algol 60 + Objektorientierung) Kay et al.: Smalltalk (erste rein-objektorientierte Sprache) Object Pascal, Objective C, C++ (wiederum

Mehr

Dokumentation IBIS Monitor

Dokumentation IBIS Monitor Dokumentation IBIS Monitor Seite 1 von 16 11.01.06 Inhaltsverzeichnis 1. Allgemein 2. Installation und Programm starten 3. Programmkonfiguration 4. Aufzeichnung 4.1 Aufzeichnung mitschneiden 4.1.1 Inhalt

Mehr

Nach der Anmeldung im Backend Bereich landen Sie im Kontrollzentrum, welches so aussieht:

Nach der Anmeldung im Backend Bereich landen Sie im Kontrollzentrum, welches so aussieht: Beiträge erstellen in Joomla Nach der Anmeldung im Backend Bereich landen Sie im Kontrollzentrum, welches so aussieht: Abbildung 1 - Kontrollzentrum Von hier aus kann man zu verschiedene Einstellungen

Mehr

Version 1.0 Merkblätter

Version 1.0 Merkblätter Version 1.0 Merkblätter Die wichtigsten CMS Prozesse zusammengefasst. Das Content Management System für Ihren Erfolg. Tabellen im Contrexx CMS einfügen Merkblatt I Tabellen dienen dazu, Texte oder Bilder

Mehr

Hilfedatei der Oden$-Börse Stand Juni 2014

Hilfedatei der Oden$-Börse Stand Juni 2014 Hilfedatei der Oden$-Börse Stand Juni 2014 Inhalt 1. Einleitung... 2 2. Die Anmeldung... 2 2.1 Die Erstregistrierung... 3 2.2 Die Mitgliedsnummer anfordern... 4 3. Die Funktionen für Nutzer... 5 3.1 Arbeiten

Mehr

Wie kann ich in der Backstage-Ansicht eigene Dokumentationen einbinden?

Wie kann ich in der Backstage-Ansicht eigene Dokumentationen einbinden? Wie kann ich in der Backstage-Ansicht eigene Dokumentationen einbinden? Anforderung Durch die Bearbeitung einer XML-Datei können Sie Ihre eigenen Dokumentationen (z.b. PDF-Dateien, Microsoft Word Dokumente

Mehr

Es sollte die MS-DOS Eingabeaufforderung starten. Geben Sie nun den Befehl javac ein.

Es sollte die MS-DOS Eingabeaufforderung starten. Geben Sie nun den Befehl javac ein. Schritt 1: Installation des Javacompilers JDK. Der erste Start mit Eclipse Bevor Sie den Java-Compiler installieren sollten Sie sich vergewissern, ob er eventuell schon installiert ist. Gehen sie wie folgt

Mehr

Task: Nmap Skripte ausführen

Task: Nmap Skripte ausführen Task: Nmap Skripte ausführen Inhalt Einfache Netzwerkscans mit NSE Ausführen des Scans Anpassung der Parameter Einleitung Copyright 2009-2015 Greenbone Networks GmbH Herkunft und aktuellste Version dieses

Mehr

Werbemittelverwaltung

Werbemittelverwaltung Werbemittelverwaltung 1 Inhaltsverzeichnis Werbemittelverwaltung...1 Ihr Nutzen...3 Notwendige Stammdateneinstellungen...4 Das Anlegen einer Gruppe:... 4 Das Anlegen der Gruppeneinträge (Auswahl):... 4

Mehr

PHP - Projekt Personalverwaltung. Erstellt von James Schüpbach

PHP - Projekt Personalverwaltung. Erstellt von James Schüpbach - Projekt Personalverwaltung Erstellt von Inhaltsverzeichnis 1Planung...3 1.1Datenbankstruktur...3 1.2Klassenkonzept...4 2Realisierung...5 2.1Verwendete Techniken...5 2.2Vorgehensweise...5 2.3Probleme...6

Mehr

News & RSS. Einleitung: Nachrichten er-(veröffentlichen) und bereitstellen Nachrichten erstellen und bereitstellen

News & RSS. Einleitung: Nachrichten er-(veröffentlichen) und bereitstellen Nachrichten erstellen und bereitstellen News & RSS Nachrichten er-(veröffentlichen) und bereitstellen Nachrichten erstellen und bereitstellen Einleitung: Sie wollen Ihre Nutzer immer mit den neuesten Informationen versorgen bzw. auf dem laufendem

Mehr

Suche schlecht beschriftete Bilder mit Eigenen Abfragen

Suche schlecht beschriftete Bilder mit Eigenen Abfragen Suche schlecht beschriftete Bilder mit Eigenen Abfragen Ist die Bilderdatenbank über einen längeren Zeitraum in Benutzung, so steigt die Wahrscheinlichkeit für schlecht beschriftete Bilder 1. Insbesondere

Mehr

Der Kalender im ipad

Der Kalender im ipad Der Kalender im ipad Wir haben im ipad, dem ipod Touch und dem iphone, sowie auf dem PC in der Cloud einen Kalender. Die App ist voreingestellt, man braucht sie nicht laden. So macht es das ipad leicht,

Mehr

Web-Kürzel. Krishna Tateneni Yves Arrouye Deutsche Übersetzung: Stefan Winter

Web-Kürzel. Krishna Tateneni Yves Arrouye Deutsche Übersetzung: Stefan Winter Krishna Tateneni Yves Arrouye Deutsche Übersetzung: Stefan Winter 2 Inhaltsverzeichnis 1 Web-Kürzel 4 1.1 Einführung.......................................... 4 1.2 Web-Kürzel.........................................

Mehr

Erstellen von x-y-diagrammen in OpenOffice.calc

Erstellen von x-y-diagrammen in OpenOffice.calc Erstellen von x-y-diagrammen in OpenOffice.calc In dieser kleinen Anleitung geht es nur darum, aus einer bestehenden Tabelle ein x-y-diagramm zu erzeugen. D.h. es müssen in der Tabelle mindestens zwei

Mehr

Lineargleichungssysteme: Additions-/ Subtraktionsverfahren

Lineargleichungssysteme: Additions-/ Subtraktionsverfahren Lineargleichungssysteme: Additions-/ Subtraktionsverfahren W. Kippels 22. Februar 2014 Inhaltsverzeichnis 1 Einleitung 2 2 Lineargleichungssysteme zweiten Grades 2 3 Lineargleichungssysteme höheren als

Mehr

Unsere Webapplikation erweitern

Unsere Webapplikation erweitern Unsere Webapplikation erweitern Um die Webapplikation zu benutzen: 1. Starten Sie den Server, indem Sie das Hauptprogramm in der Klasse ImdbServer starten. 2. Laden Sie im Browser die Seite http://localhost:8080/html/index.html.

Mehr

Comic Life 2.x. Fortbildung zum Mediencurriculum

Comic Life 2.x. Fortbildung zum Mediencurriculum Comic Life 2.x Fortbildung zum Mediencurriculum - 1 - Comic Life Eine kurze Einführung in die Bedienung von Comic Life 2.x. - 2 - Starten von Comic Life Bitte starte das Programm Comic Life. Es befindet

Mehr

So importieren Sie einen KPI mithilfe des Assistenten zum Erstellen einer Scorecard

So importieren Sie einen KPI mithilfe des Assistenten zum Erstellen einer Scorecard 1 von 6 102013 18:09 SharePoint 2013 Veröffentlicht: 16.07.2012 Zusammenfassung: Hier erfahren Sie, wie Sie einen KPI (Key Performance Indicator) mithilfe des PerformancePoint Dashboard Designer in SharePoint

Mehr

Virtueller Seminarordner Anleitung für die Dozentinnen und Dozenten

Virtueller Seminarordner Anleitung für die Dozentinnen und Dozenten Virtueller Seminarordner Anleitung für die Dozentinnen und Dozenten In dem Virtuellen Seminarordner werden für die Teilnehmerinnen und Teilnehmer des Seminars alle für das Seminar wichtigen Informationen,

Mehr

kleines keyword brevier Keywords sind das Salz in der Suppe des Online Marketing Gordian Hense

kleines keyword brevier Keywords sind das Salz in der Suppe des Online Marketing Gordian Hense Keywords sind das Salz in der Suppe des Online Marketing Keywords - Das Salz in der Suppe des Online Marketing Keyword Arten Weitgehend passende Keywords, passende Wortgruppe, genau passende Wortgruppe

Mehr

Kapiteltests zum Leitprogramm Binäre Suchbäume

Kapiteltests zum Leitprogramm Binäre Suchbäume Kapiteltests zum Leitprogramm Binäre Suchbäume Björn Steffen Timur Erdag überarbeitet von Christina Class Binäre Suchbäume Kapiteltests für das ETH-Leitprogramm Adressaten und Institutionen Das Leitprogramm

Mehr

IBM Software Demos Tivoli Provisioning Manager for OS Deployment

IBM Software Demos Tivoli Provisioning Manager for OS Deployment Für viele Unternehmen steht ein Wechsel zu Microsoft Windows Vista an. Doch auch für gut vorbereitete Unternehmen ist der Übergang zu einem neuen Betriebssystem stets ein Wagnis. ist eine benutzerfreundliche,

Mehr

Anwendungsbeispiele. Neuerungen in den E-Mails. Webling ist ein Produkt der Firma:

Anwendungsbeispiele. Neuerungen in den E-Mails. Webling ist ein Produkt der Firma: Anwendungsbeispiele Neuerungen in den E-Mails Webling ist ein Produkt der Firma: Inhaltsverzeichnis 1 Neuerungen in den E- Mails 2 Was gibt es neues? 3 E- Mail Designs 4 Bilder in E- Mails einfügen 1 Neuerungen

Mehr

Anleitung für das Content Management System

Anleitung für das Content Management System Homepage der Pfarre Maria Treu Anleitung für das Content Management System Teil 6 Wochenspiegel und Begegnung Einleitung Die Veröffentlichung einer Begegnung oder eines Wochenspiegels erfolgt (so wie auch

Mehr

Bedienung von BlueJ. Klassenanzeige

Bedienung von BlueJ. Klassenanzeige Im Folgenden werden wichtige Funktionen für den Einsatz von BlueJ im Unterricht beschrieben. Hierbei wird auf den Umgang mit Projekten, Klassen und Objekten eingegangen. Abgeschlossen wird dieses Dokument

Mehr

2.1 Briefkopf Klicken Sie im Menü Einstellungen auf den Button Briefkopf. Folgendes Formular öffnet sich:

2.1 Briefkopf Klicken Sie im Menü Einstellungen auf den Button Briefkopf. Folgendes Formular öffnet sich: Installation 1 Installation 1 2 Einstellungen 1 2.1 Briefkopf 1 2.2 Logo 2 2.3 Zusatztext 2 2.4 Fußzeile 2 2.5 Mehrwertsteuer (Umsatzsteuer) 3 2.6 Rechnungsnummer 4 2.7 Drucken 4 2.8 Einheiten 5 3 Artikelverwaltung

Mehr

Bauteilattribute als Sachdaten anzeigen

Bauteilattribute als Sachdaten anzeigen Mit den speedikon Attributfiltern können Sie die speedikon Attribute eines Bauteils als MicroStation Sachdaten an die Elemente anhängen Inhalte Was ist ein speedikon Attribut?... 3 Eigene Attribute vergeben...

Mehr

Dokumentation für das Spiel Pong

Dokumentation für das Spiel Pong Dokumentation für das Spiel Pong BwInf - Turnierserver Didaktik der nformatik BWINF KI Wettbewerbs-Plattform Stand: 02.09.2014 Grundlagen In diesem KI-Turnier programmiert ihr einen Schläger für das Retro-Spiel

Mehr

Excel Pivot-Tabellen 2010 effektiv

Excel Pivot-Tabellen 2010 effektiv 7.2 Berechnete Felder Falls in der Datenquelle die Zahlen nicht in der Form vorliegen wie Sie diese benötigen, können Sie die gewünschten Ergebnisse mit Formeln berechnen. Dazu erzeugen Sie ein berechnetes

Mehr

Ein Poster mit Inkscape

Ein Poster mit Inkscape Ein Poster mit Inkscape Ein Poster mit Inkscape...1 Vorrede...1 Bitmaps importieren...2 Hintergrundbild einpassen...3 Ebenen hinzufügen...5 Objekte hinzufügen...6 Farben zuweisen...7 Farbverläufe zuweisen...8

Mehr

Kommunikations-Management

Kommunikations-Management Tutorial: Wie importiere und exportiere ich Daten zwischen myfactory und Outlook? Im vorliegenden Tutorial lernen Sie, wie Sie in myfactory Daten aus Outlook importieren Daten aus myfactory nach Outlook

Mehr

ODBC-Treiber 1. 1.1 Programmübersicht

ODBC-Treiber 1. 1.1 Programmübersicht 1 O D B C - Treiber ODBC-Treiber 1 1.1 Programmübersicht Nach einer ausgiebigen Testphase wurde kürzlich der neue ODBC-Treiber freigegeben. Dieser ist somit ab der 2000-er-Version lizenzpflichtig und kann

Mehr

SPS-Bearbeitung mit EPLAN 5.70

SPS-Bearbeitung mit EPLAN 5.70 SPS-Bearbeitung mit EPLAN 5.70 Beispielhaft anhand einer digitalen Eingangskarte werden hier die einzelnen Schritte der SPS-Bearbeitung erklärt. Grundsätzlich ist es ratsam sich ein spezielles Schaltplanprojekt

Mehr

Im Original veränderbare Word-Dateien

Im Original veränderbare Word-Dateien Objekte einer Datenbank Microsoft Access Begriffe Wegen seines Bekanntheitsgrades und der großen Verbreitung auch in Schulen wird im Folgenden eingehend auf das Programm Access von Microsoft Bezug genommen.

Mehr

Typo3 - Inhalte. 1. Gestaltung des Inhaltsbereichs. 2. Seitenunterteilung einfügen

Typo3 - Inhalte. 1. Gestaltung des Inhaltsbereichs. 2. Seitenunterteilung einfügen Typo3 - Inhalte 1. Gestaltung des Inhaltsbereichs Das Layout der neuen TVA Website sieht neben dem grafischen Rahmen und den Navigations-Elementen oben und links einen grossen Inhaltsbereich (graue Fläche)

Mehr

Funktionsbeschreibung Website-Generator

Funktionsbeschreibung Website-Generator Funktionsbeschreibung Website-Generator Website-Generator In Ihrem Privatbereich steht Ihnen ein eigener Websitegenerator zur Verfügung. Mit wenigen Klicks können Sie so eine eigene Website erstellen.

Mehr

Webalizer HOWTO. Stand: 18.06.2012

Webalizer HOWTO. Stand: 18.06.2012 Webalizer HOWTO Stand: 18.06.2012 Copyright 2003 by manitu. Alle Rechte vorbehalten. Alle verwendeten Bezeichnungen dienen lediglich der Kennzeichnung und können z.t. eingetragene Warenzeichen sein, ohne

Mehr

Vorbereitung einer Grafik zum Druck einer Glotze aus, Stadion an! -Zaunfahne Torsten Bunde, Stand 5. Juli 2014

Vorbereitung einer Grafik zum Druck einer Glotze aus, Stadion an! -Zaunfahne Torsten Bunde, Stand 5. Juli 2014 Vorbereitung einer Grafik zum Druck einer Glotze aus, Stadion an! -Zaunfahne Torsten Bunde, Stand 5. Juli 2014 Wer wie wir beim SV Arminia Hannover eventuell das Problem hat, das sich nicht genügend Leute

Mehr

Das Typsystem von Scala. L. Piepmeyer: Funktionale Programmierung - Das Typsystem von Scala

Das Typsystem von Scala. L. Piepmeyer: Funktionale Programmierung - Das Typsystem von Scala Das Typsystem von Scala 1 Eigenschaften Das Typsystem von Scala ist statisch, implizit und sicher 2 Nichts Primitives Alles ist ein Objekt, es gibt keine primitiven Datentypen scala> 42.hashCode() res0:

Mehr

Die Excel Schnittstelle - Pro Pack

Die Excel Schnittstelle - Pro Pack Die Excel Schnittstelle - Pro Pack Die Excel Pro Pack ist eine Erweiterung der normalen Excel Schnittstelle, die in der Vollversion von POSWare Bestandteil der normalen Lizenz und somit für alle Lizenznehmer

Mehr

Informatik 1 Tutorial

Informatik 1 Tutorial ETH Zürich, D-INFK/D-BAUG Herbstsemester 2014 Dr. Martin Hirt Christian Badertscher Informatik 1 Tutorial Dieses Tutorial hat zum Ziel, die notwendigen Tools auf dem eigenen Computer zu installieren, so

Mehr

Qt-Projekte mit Visual Studio 2005

Qt-Projekte mit Visual Studio 2005 Qt-Projekte mit Visual Studio 2005 Benötigte Programme: Visual Studio 2005 Vollversion, Microsoft Qt 4 Open Source s. Qt 4-Installationsanleitung Tabelle 1: Benötigte Programme für die Qt-Programmierung

Mehr

Kapitel 3 Frames Seite 1

Kapitel 3 Frames Seite 1 Kapitel 3 Frames Seite 1 3 Frames 3.1 Allgemeines Mit Frames teilt man eine HTML-Seite in mehrere Bereiche ein. Eine Seite, die mit Frames aufgeteilt ist, besteht aus mehreren Einzelseiten, die sich den

Mehr

Ein Bild in den Text einfügen

Ein Bild in den Text einfügen Bild in einen Artikel einfügen Ein Bild in den Text einfügen Positioniert den Cursor an der Stelle im Text, egal ob bei einem Artikel oder einer WordPress-Seite, wo das Bild eingefügt werden soll. Hinter

Mehr

Anton Ochsenkühn. amac BUCH VERLAG. Ecxel 2016. für Mac. amac-buch Verlag

Anton Ochsenkühn. amac BUCH VERLAG. Ecxel 2016. für Mac. amac-buch Verlag Anton Ochsenkühn amac BUCH VERLAG Ecxel 2016 für Mac amac-buch Verlag 2 Word-Dokumentenkatalog! Zudem können unterhalb von Neu noch Zuletzt verwendet eingeblendet werden. Damit hat der Anwender einen sehr

Mehr

Arbeit mit dem Reportgenerator

Arbeit mit dem Reportgenerator Allgemeines: Der Reportgenerator ist ein umfangreiches Werkzeug, mit dem aus verschiedenen Modulen heraus individuell gestaltete Druckvorlagen erstellt werden können. Es lassen sich z. B. individuelle

Mehr

OP-LOG www.op-log.de

OP-LOG www.op-log.de Verwendung von Microsoft SQL Server, Seite 1/18 OP-LOG www.op-log.de Anleitung: Verwendung von Microsoft SQL Server 2005 Stand Mai 2010 1 Ich-lese-keine-Anleitungen 'Verwendung von Microsoft SQL Server

Mehr

Tutorium Informatik 1. Aufgabe 2: Formatierte Ein- und Ausgabe

Tutorium Informatik 1. Aufgabe 2: Formatierte Ein- und Ausgabe Tutorium Informatik 1 Aufgabe 2: Formatierte Ein- und Ausgabe Fachbereich: Elektrotechnik Inhaltsverzeichnis 1 Aufgabe 1 2 Benötigte Funktionen und Schlüsselwörter 2 Robert Halas / FH Regensburg - 2003

Mehr