Zum Inhalt springen

Marsanka

Mitglieder
  • Gesamte Inhalte

    9
  • Benutzer seit

  • Letzter Besuch

  1. Hi, ich habe eine spezielle Frage an JasperReports-Kenner. Ich versuche, den jrxml-Bericht mit einer Crosstab zu erstellen. Dabei ist es möglich, einen subDataset zu definieren und eine zusätzliche SQL-Query einzubinden. Ist es denn überhaupt möglich, innerhalb einer Crostab mehrere subDatasets zu definieren? Hier ist die jrxml-Datei: <?xml version="1.0" encoding="UTF-8"?> <jasperReport xmlns="http://jasperreports.sourceforge.net/jasperreports" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://jasperreports.sourceforge.net/jasperreports http://jasperreports.sourceforge.net/xsd/jasperreport.xsd" name="Grabdaten_Erfassung" pageWidth="595" pageHeight="842" columnWidth="565" leftMargin="15" rightMargin="15" topMargin="10" bottomMargin="10"> <style name="Arial_Normal" isDefault="true" fontName="Arial" fontSize="8" isBold="false" isItalic="false" isUnderline="false" isStrikeThrough="false" pdfFontName="Helvetica" pdfEncoding="Cp1252" isPdfEmbedded="false"/> <style name="Arial_Bold" isDefault="false" fontName="Arial" fontSize="8" isBold="true" isItalic="false" isUnderline="false" isStrikeThrough="false" pdfFontName="Helvetica-Bold" pdfEncoding="Cp1252" isPdfEmbedded="false"/> <subDataset name="FBEZIRK_DATEN"> <parameter name="BEZIRK" class="java.lang.String"/> <queryString> <![CDATA[SELECT FRIEDHOF, COUNT(ol_ghaupt.KINDEX) as ANZAHL, ol_friedhof.FNR FROM ol_friedhof LEFT JOIN ol_ghaupt ON ol_friedhof.FNR = ol_ghaupt.FNR AND ol_friedhof.MANDANT_ID = ol_ghaupt.MANDANT_ID WHERE ol_friedhof.MANDANT_ID = 100010 AND ol_friedhof.FBEZIRK = $P{BEZIRK} GROUP BY FRIEDHOF, ol_friedhof.FNR]]> </queryString> <field name="FRIEDHOF" class="java.lang.String"/> <field name="ANZAHL" class="java.lang.Integer"/> <field name="FNR" class="java.lang.String"/> </subDataset> <queryString> <![CDATA[SELECT DISTINCT FBEZIRK FROM ol_friedhof WHERE MANDANT_ID = 100010]]> </queryString> <field name="FBEZIRK" class="java.lang.String"/> <title> <band height="50"> <staticText> <reportElement x="0" y="0" width="140" height="20"/> <textElement> <font fontName="Arial" size="14" isBold="true"/> </textElement> <text><![CDATA[Grabdatenerfassung]]></text> </staticText> <textField pattern="dd.MM.yyyy"> <reportElement x="465" y="0" width="100" height="20"/> <textElement textAlignment="Right"> <font fontName="Arial" size="14" isBold="true"/> </textElement> <textFieldExpression class="java.util.Date"><![CDATA[new java.util.Date()]]></textFieldExpression> </textField> </band> </title> <detail> <band height="70" splitType="Stretch"> <crosstab isRepeatColumnHeaders="false"> <reportElement mode="Opaque" x="0" y="0" width="565" height="60"/> <crosstabParameter name="BEZIRK"> <parameterValueExpression><![CDATA[$F{FBEZIRK}]]></parameterValueExpression> </crosstabParameter> <crosstabDataset> <dataset> <datasetRun subDataset="FBEZIRK_DATEN"> <datasetParameter name="BEZIRK"> <datasetParameterExpression><![CDATA[$F{FBEZIRK}]]></datasetParameterExpression> </datasetParameter> </datasetRun> </dataset> </crosstabDataset> <rowGroup name="Friedhof" width="120" totalPosition="End"> <bucket> <bucketExpression class="java.lang.String"><![CDATA[$F{FRIEDHOF}]]></bucketExpression> </bucket> <crosstabRowHeader> <cellContents backcolor="#FFFFFF" mode="Opaque"> <box> <topPen lineWidth="1.0" lineStyle="Solid"/> <leftPen lineWidth="1.0" lineStyle="Solid"/> <bottomPen lineWidth="1.0" lineStyle="Solid"/> <rightPen lineWidth="1.0" lineStyle="Solid"/> </box> <textField> <reportElement x="5" y="5" width="110" height="20"/> <textElement> <font size="10"/> </textElement> <textFieldExpression class="java.lang.String"><![CDATA[$V{Friedhof}]]></textFieldExpression> </textField> </cellContents> </crosstabRowHeader> <crosstabTotalRowHeader> <cellContents backcolor="#999999" mode="Opaque"> <box> <topPen lineWidth="1.0" lineStyle="Solid"/> <leftPen lineWidth="1.0" lineStyle="Solid"/> <bottomPen lineWidth="1.0" lineStyle="Solid"/> <rightPen lineWidth="1.0" lineStyle="Solid"/> </box> <textField> <reportElement x="5" y="5" width="110" height="20"/> <textElement> <font size="10"/> </textElement> <textFieldExpression class="java.lang.String"><![CDATA[$P{BEZIRK} + " gesamt:"]]></textFieldExpression> </textField> </cellContents> </crosstabTotalRowHeader> </rowGroup> <columnGroup name="Grabanzahl" height="30" totalPosition="End" headerPosition="Stretch"> <bucket> <bucketExpression class="java.lang.Integer"><![CDATA[($F{ANZAHL})]]></bucketExpression> </bucket> <crosstabColumnHeader> <cellContents backcolor="#FFFFFF" mode="Opaque"> <box> <topPen lineWidth="1.0" lineStyle="Solid"/> <leftPen lineWidth="1.0" lineStyle="Solid"/> <bottomPen lineWidth="1.0" lineStyle="Solid"/> <rightPen lineWidth="1.0" lineStyle="Solid"/> </box> </cellContents> </crosstabColumnHeader> <crosstabTotalColumnHeader> <cellContents backcolor="#FFFFFF" mode="Opaque"> <box> <topPen lineWidth="1.0" lineStyle="Solid"/> <leftPen lineWidth="1.0" lineStyle="Solid"/> <bottomPen lineWidth="1.0" lineStyle="Solid"/> <rightPen lineWidth="1.0" lineStyle="Solid"/> </box> <staticText> <reportElement x="10" y="5" width="60" height="20"/> <textElement textAlignment="Center"> <font size="12" isBold="true"/> </textElement> <text><![CDATA[Gräber]]></text> </staticText> </cellContents> </crosstabTotalColumnHeader> </columnGroup> <measure name="ANZAHLSum" class="java.lang.Integer" calculation="Sum"> <measureExpression><![CDATA[$F{ANZAHL}]]></measureExpression> </measure> <crosstabCell width="0" height="25"> <cellContents backcolor="#FFFFFF" mode="Transparent"> <box> <topPen lineWidth="1.0" lineStyle="Solid"/> <leftPen lineWidth="1.0" lineStyle="Solid"/> <bottomPen lineWidth="1.0" lineStyle="Solid"/> <rightPen lineWidth="1.0" lineStyle="Solid"/> </box> </cellContents> </crosstabCell> <crosstabCell width="80" height="25" columnTotalGroup="Grabanzahl"> <cellContents backcolor="#FFFFFF" mode="Opaque"> <box> <topPen lineWidth="1.0" lineStyle="Solid"/> <leftPen lineWidth="1.0" lineStyle="Solid"/> <bottomPen lineWidth="1.0" lineStyle="Solid"/> <rightPen lineWidth="1.0" lineStyle="Solid"/> </box> <textField pattern="##.###"> <reportElement style="Arial_Bold" x="10" y="0" width="60" height="25"/> <textElement textAlignment="Right" verticalAlignment="Middle"> <font size="10"/> </textElement> <textFieldExpression class="java.lang.Integer"><![CDATA[$V{ANZAHLSum}]]></textFieldExpression> </textField> </cellContents> </crosstabCell> <crosstabCell width="80" height="25" rowTotalGroup="Friedhof" columnTotalGroup="Grabanzahl"> <cellContents backcolor="#999999" mode="Opaque"> <box> <topPen lineWidth="1.0" lineStyle="Solid"/> <leftPen lineWidth="1.0" lineStyle="Solid"/> <bottomPen lineWidth="1.0" lineStyle="Solid"/> <rightPen lineWidth="1.0" lineStyle="Solid"/> </box> <textField pattern="##.###"> <reportElement style="Arial_Bold" x="10" y="0" width="60" height="25"/> <textElement textAlignment="Right" verticalAlignment="Middle"> <font size="10"/> </textElement> <textFieldExpression class="java.lang.Integer"><![CDATA[$V{ANZAHLSum}]]></textFieldExpression> </textField> </cellContents> </crosstabCell> </crosstab> </band> </detail> </jasperReport> Danke für die Antworten!
  2. Hallo an alle, ich versuche eine Crosstabelle mit JasperReport zu erstellen. Der gleiche Report mit DB als datenQuelle habe ich schon ausprobiert und es hat funktioniert. Ich brauche aber die XML-Datei als Datenquelle. Den Report habe ich entsprechend angepasst. Leider funktioniert noch nicht. Folgender Fehler wird nun angezeigt: 11.08.2009 12:13:47 net.sf.jasperreports.engine.query.JRXPathQueryExecuter <init> WARNUNG: The supplied org.w3c.dom.Document object is null. Das bedeutet, dass der xPath in der XML-Datei anders sein sollte, weil die Daten nicht gefunden werden. Ich habe schon alles mögliche überprüft. Vielleicht hat jemand, der sich mit JasperReport auskennt, eine Idee, was falsch sein könnte? Hier bitte den Quellcode: import java.io.File; import java.util.HashMap; import net.sf.jasperreports.engine.JRException; import net.sf.jasperreports.engine.JasperCompileManager; import net.sf.jasperreports.engine.JasperExportManager; import net.sf.jasperreports.engine.JasperFillManager; import net.sf.jasperreports.engine.JasperPrint; import net.sf.jasperreports.engine.JasperReport; import net.sf.jasperreports.engine.data.JRXmlDataSource; public class JasperReport_PDF { public JasperReport_PDF() { } public void erstellePDF() { JasperReport jasperReport; JasperPrint jasperPrint; HashMap<String, String> parameter = new HashMap<String, String>(); try { JRXmlDataSource xml = new JRXmlDataSource(new File("ShipmentsReport_XML.xml"), "/template51000/Orders"); jasperReport = JasperCompileManager.compileReport("ShipmentsReport_XML.jrxml"); jasperPrint = JasperFillManager.fillReport(jasperReport, parameter, xml); JasperExportManager.exportReportToPdfFile(jasperPrint, "out/ShipmentsReport_XML.pdf"); } catch (JRException e) { e.printStackTrace(); } } public static void main(String[] args) { JasperReport_PDF pdf = new JasperReport_PDF(); pdf.erstellePDF(); System.out.println("PDF wurde erstellt!"); } } Hier der jrxml-Report: <?xml version="1.0" encoding="UTF-8"?> <jasperReport xmlns="http://jasperreports.sourceforge.net/jasperreports" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://jasperreports.sourceforge.net/jasperreports http://jasperreports.sourceforge.net/xsd/jasperreport.xsd" name="ShipmentsReport" pageWidth="842" pageHeight="595" orientation="Landscape" columnWidth="812" leftMargin="15" rightMargin="15" topMargin="10" bottomMargin="10"> <style name="Arial_Normal" isDefault="true" fontName="Arial" fontSize="8" isBold="false" isItalic="false" isUnderline="false" isStrikeThrough="false" pdfFontName="Helvetica" pdfEncoding="Cp1252" isPdfEmbedded="false"/> <style name="Arial_Bold" isDefault="false" fontName="Arial" fontSize="8" isBold="true" isItalic="false" isUnderline="false" isStrikeThrough="false" pdfFontName="Helvetica-Bold" pdfEncoding="Cp1252" isPdfEmbedded="false"/> <subDataset name="Country_Orders"> <parameter name="Country" class="java.lang.String" /> <queryString language="xPath"> <![CDATA[/template51000/Orders]]> </queryString> <field name="ShippedDate" class="java.sql.Timestamp"> <fieldDescription><![CDATA[ShippedDate]]></fieldDescription> </field> <field name="ShipRegion" class="java.lang.String"> <fieldDescription><![CDATA[ShipRegion]]></fieldDescription> </field> <field name="ShipCity" class="java.lang.String"> <fieldDescription><![CDATA[ShipCity]]></fieldDescription> </field> <field name="Freight" class="java.lang.Float"> <fieldDescription><![CDATA[Freight]]></fieldDescription> </field> </subDataset> <queryString language="xPath"> <![CDATA[/template51000/Orders]]> </queryString> <field name="ShipCountry" class="java.lang.String"> <fieldDescription><![CDATA[ShipCountry]]></fieldDescription> </field> <detail> <band height="100" splitType="Stretch"> <textField> <reportElement x="0" y="0" width="500" height="15"/> <textElement> <font fontName="Arial_Bold" size="10"/> </textElement> <textFieldExpression class="java.lang.String"><![CDATA["Shipments to " + $F{ShipCountry}]]></textFieldExpression> </textField> <crosstab isRepeatColumnHeaders="false"> <reportElement mode="Opaque" x="0" y="20" width="812" height="60"/> <crosstabParameter name="Country"> <parameterValueExpression><![CDATA[$F{ShipCountry}]]></parameterValueExpression> </crosstabParameter> <crosstabDataset> <dataset> <datasetRun subDataset="Country_Orders"> <datasetParameter name="Country"> <datasetParameterExpression><![CDATA[$F{ShipCountry}]]></datasetParameterExpression> </datasetParameter> </datasetRun> </dataset> </crosstabDataset> <rowGroup name="Region" width="50" totalPosition="End"> <bucket> <bucketExpression class="java.lang.String"><![CDATA[$F{ShipRegion}]]></bucketExpression> </bucket> <crosstabRowHeader> <cellContents> <box> <leftPen lineWidth="2.0" lineStyle="Solid"/> <bottomPen lineWidth="2.0" lineStyle="Solid"/> <rightPen lineWidth="2.0" lineStyle="Solid"/> </box> <textField> <reportElement x="5" y="5" width="40" height="40"/> <textElement/> <textFieldExpression class="java.lang.String"><![CDATA[$V{Region} == null ? "No region" : $V{Region}]]></textFieldExpression> </textField> </cellContents> </crosstabRowHeader> <crosstabTotalRowHeader> <cellContents backcolor="#60FFFF"> <box> <leftPen lineWidth="2.0" lineStyle="Solid"/> <bottomPen lineWidth="2.0" lineStyle="Solid"/> <rightPen lineWidth="2.0" lineStyle="Solid"/> </box> <textField> <reportElement x="5" y="5" width="110" height="20"/> <textElement/> <textFieldExpression class="java.lang.String"><![CDATA[$P{Country} + " Total"]]></textFieldExpression> </textField> </cellContents> </crosstabTotalRowHeader> </rowGroup> <rowGroup name="City" width="70" totalPosition="End"> <bucket> <bucketExpression class="java.lang.String">$F{ShipCity}</bucketExpression> </bucket> <crosstabRowHeader> <cellContents> <box bottomBorder="2Point" rightBorder="2Point"/> <textField> <reportElement x="5" y="5" width="60" height="15"/> <textFieldExpression>$V{City}</textFieldExpression> </textField> </cellContents> </crosstabRowHeader> <crosstabTotalRowHeader> <cellContents backcolor="#E0FFFF"> <box bottomBorder="2Point" rightBorder="2Point"/> <staticText> <reportElement x="5" y="5" width="60" height="15"/> <text>Total</text> </staticText> </cellContents> </crosstabTotalRowHeader> </rowGroup> <columnGroup name="ShipYear" height="30" totalPosition="End" headerPosition="Stretch"> <bucket> <bucketExpression class="java.sql.Timestamp"><![CDATA[$F{ShippedDate}]]></bucketExpression> </bucket> <crosstabColumnHeader> <cellContents> <box> <topPen lineWidth="2.0" lineStyle="Solid"/> <bottomPen lineWidth="2.0" lineStyle="Solid"/> <rightPen lineWidth="2.0" lineStyle="Solid"/> </box> <rectangle radius="10"> <reportElement x="4" y="4" width="52" height="22"/> <graphicElement> <pen lineWidth="1.0" lineStyle="Solid"/> </graphicElement> </rectangle> <textField pattern="yyyy"> <reportElement x="5" y="5" width="50" height="20"/> <textElement textAlignment="Center" verticalAlignment="Middle"/> <textFieldExpression class="java.sql.Timestamp"><![CDATA[$V{ShipYear}]]></textFieldExpression> </textField> </cellContents> </crosstabColumnHeader> <crosstabTotalColumnHeader> <cellContents backcolor="#FFFF60"> <box> <topPen lineWidth="2.0" lineStyle="Solid"/> <bottomPen lineWidth="2.0" lineStyle="Solid"/> <rightPen lineWidth="2.0" lineStyle="Solid"/> </box> <staticText> <reportElement x="5" y="5" width="20" height="15"/> <textElement/> <text><![CDATA[Total]]></text> </staticText> </cellContents> </crosstabTotalColumnHeader> </columnGroup> <columnGroup name="ShipMonth" height="40" totalPosition="End"> <bucket> <bucketExpression class="java.sql.Timestamp"><![CDATA[$F{ShippedDate}]]></bucketExpression> </bucket> <crosstabColumnHeader> <cellContents> <box> <bottomPen lineWidth="2.0" lineStyle="Solid"/> <rightPen lineWidth="2.0" lineStyle="Solid"/> </box> <textField pattern="MMM"> <reportElement x="5" y="5" width="20" height="30"/> <textElement/> <textFieldExpression class="java.sql.Timestamp"><![CDATA[$V{ShipMonth}]]></textFieldExpression> </textField> </cellContents> </crosstabColumnHeader> <crosstabTotalColumnHeader> <cellContents/> </crosstabTotalColumnHeader> </columnGroup> <measure name="FreightSum" class="java.lang.Float" calculation="Sum"> <measureExpression><![CDATA[$F{Freight}]]></measureExpression> </measure> <crosstabCell width="30" height="25"> <cellContents backcolor="#FFFFFF"> <box> <bottomPen lineWidth="1.0" lineStyle="Solid"/> <rightPen lineWidth="1.0" lineStyle="Solid"/> </box> <textField pattern="#0.0"> <reportElement x="0" y="0" width="25" height="25"/> <textElement textAlignment="Right" verticalAlignment="Middle"/> <textFieldExpression class="java.lang.Float"><![CDATA[$V{FreightSum}]]></textFieldExpression> </textField> </cellContents> </crosstabCell> <crosstabCell width="30" height="25" columnTotalGroup="ShipMonth"> <cellContents backcolor="#FFFFC0"> <box> <bottomPen lineWidth="1.0" lineStyle="Solid"/> <rightPen lineWidth="1.0" lineStyle="Solid"/> </box> <textField pattern="#0.0"> <reportElement style="Arial_Bold" x="0" y="0" width="25" height="25"/> <textElement textAlignment="Right" verticalAlignment="Middle"/> <textFieldExpression class="java.lang.Float"><![CDATA[$V{FreightSum}]]></textFieldExpression> </textField> </cellContents> </crosstabCell> <crosstabCell width="35" height="25" columnTotalGroup="ShipYear"> <cellContents backcolor="#FFFF60"> <box> <bottomPen lineWidth="1.0" lineStyle="Solid"/> <rightPen lineWidth="1.0" lineStyle="Solid"/> </box> <textField pattern="#0.0"> <reportElement style="Arial_Bold" x="0" y="0" width="30" height="25"/> <textElement textAlignment="Right" verticalAlignment="Middle"/> <textFieldExpression class="java.lang.Float"><![CDATA[$V{FreightSum}]]></textFieldExpression> </textField> </cellContents> </crosstabCell> <crosstabCell height="25" rowTotalGroup="City"> <cellContents backcolor="#E0FFFF"> <box> <bottomPen lineWidth="1.0" lineStyle="Solid"/> <rightPen lineWidth="1.0" lineStyle="Solid"/> </box> <textField pattern="#0.0"> <reportElement x="0" y="0" width="25" height="25"/> <textElement textAlignment="Right" verticalAlignment="Middle"/> <textFieldExpression class="java.lang.Float"><![CDATA[$V{FreightSum}]]></textFieldExpression> </textField> </cellContents> </crosstabCell> <crosstabCell rowTotalGroup="City" columnTotalGroup="ShipMonth"> <cellContents backcolor="#E0FFC0"> <box> <bottomPen lineWidth="1.0" lineStyle="Solid"/> <rightPen lineWidth="1.0" lineStyle="Solid"/> </box> <textField pattern="#0.0"> <reportElement style="Arial_Bold" x="0" y="0" width="25" height="25"/> <textElement textAlignment="Right" verticalAlignment="Middle"/> <textFieldExpression class="java.lang.Float"><![CDATA[$V{FreightSum}]]></textFieldExpression> </textField> </cellContents> </crosstabCell> <crosstabCell rowTotalGroup="City" columnTotalGroup="ShipYear"> <cellContents backcolor="#E0FF60"> <box> <bottomPen lineWidth="1.0" lineStyle="Solid"/> <rightPen lineWidth="1.0" lineStyle="Solid"/> </box> <textField pattern="#0.0"> <reportElement style="Arial_Bold" x="0" y="0" width="30" height="25"/> <textElement textAlignment="Right" verticalAlignment="Middle"/> <textFieldExpression class="java.lang.Float"><![CDATA[$V{FreightSum}]]></textFieldExpression> </textField> </cellContents> </crosstabCell> <crosstabCell height="30" rowTotalGroup="Region"> <cellContents backcolor="#60FFFF"> <box> <bottomPen lineWidth="1.0" lineStyle="Solid"/> <rightPen lineWidth="1.0" lineStyle="Solid"/> </box> <textField pattern="#0.0"> <reportElement style="Arial_Bold" x="0" y="0" width="25" height="30"/> <textElement textAlignment="Right" verticalAlignment="Middle"/> <textFieldExpression class="java.lang.Float"><![CDATA[$V{FreightSum}]]></textFieldExpression> </textField> </cellContents> </crosstabCell> <crosstabCell rowTotalGroup="Region" columnTotalGroup="ShipMonth"> <cellContents backcolor="#60FFC0"> <box> <bottomPen lineWidth="1.0" lineStyle="Solid"/> <rightPen lineWidth="1.0" lineStyle="Solid"/> </box> <textField pattern="#0.0"> <reportElement style="Arial_Bold" x="0" y="0" width="25" height="30"/> <textElement textAlignment="Right" verticalAlignment="Middle"/> <textFieldExpression class="java.lang.Float"><![CDATA[$V{FreightSum}]]></textFieldExpression> </textField> </cellContents> </crosstabCell> <crosstabCell rowTotalGroup="Region" columnTotalGroup="ShipYear"> <cellContents backcolor="#60FF60"> <box> <bottomPen lineWidth="1.0" lineStyle="Solid"/> <rightPen lineWidth="1.0" lineStyle="Solid"/> </box> <textField pattern="#0.0"> <reportElement style="Arial_Bold" x="0" y="0" width="30" height="30"/> <textElement textAlignment="Right" verticalAlignment="Middle"/> <textFieldExpression class="java.lang.Float"><![CDATA[$V{FreightSum}]]></textFieldExpression> </textField> </cellContents> </crosstabCell> </crosstab> </band> </detail> </jasperReport> Und nun die XML-Datei: <?xml version="1.0" encoding="UTF-8"?> <template51000> <Orders> <ShipCountry>Deuschland</ShipCountry> <ShippedDate>2009-08-05 21:41:45</ShippedDate> <ShipRegion>X</ShipRegion> <ShipCity>Berlin</ShipCity> <Freight>3.50</Freight> </Orders> <Orders> <ShipCountry>Deuschland</ShipCountry> <ShippedDate>2009-07-05 21:41:45</ShippedDate> <ShipRegion>X</ShipRegion> <ShipCity>Berlin</ShipCity> <Freight>4.50</Freight> </Orders> <Orders> <ShipCountry>Deuschland</ShipCountry> <ShippedDate>2009-06-05 21:41:45</ShippedDate> <ShipRegion>X</ShipRegion> <ShipCity>Berlin</ShipCity> <Freight>5.50</Freight> </Orders> <Orders> <ShipCountry>Deuschland</ShipCountry> <ShippedDate>2009-05-05 21:41:45</ShippedDate> <ShipRegion>X</ShipRegion> <ShipCity>Berlin</ShipCity> <Freight>6.50</Freight> </Orders> <Orders> <ShipCountry>Deuschland</ShipCountry> <ShippedDate>2009-04-05 21:41:45</ShippedDate> <ShipRegion>X</ShipRegion> <ShipCity>Berlin</ShipCity> <Freight>7.50</Freight> </Orders> <Orders> <ShipCountry>Deuschland</ShipCountry> <ShippedDate>2009-03-05 21:41:45</ShippedDate> <ShipRegion>X</ShipRegion> <ShipCity>Berlin</ShipCity> <Freight>8.50</Freight> </Orders> <Orders> <ShipCountry>Deuschland</ShipCountry> <ShippedDate>2009-02-05 21:41:45</ShippedDate> <ShipRegion>X</ShipRegion> <ShipCity>Berlin</ShipCity> <Freight>9.50</Freight> </Orders> </template51000> eim Ausführen werden nur Überschriften geholt, aber keine Tabelle :-( Kann mir jemand vielleicht helfen? Danke!
  3. Hallo an alle, ich habe eine Frage zu der Java-Bibliothek JasperReport. Es geht um Crosstab. Alle jrxml-Crosstab-Report, welche ich bis jetzt recherchiert und mir angeschaut habe, benutzen als Quelle - eine Datenbank-Anbindung. Ist es möglich - bei Crosstab-Reports eine xml-Datei als Quelle zu benutzen?. Bei einfachen Reports und Subreports ist es nämlich möglich. Und wenn jemand vielleicht gute Links für Crosstabs kennt, wäre ich sehr dankbar. Danke für jede Antwort!
  4. Hallo zusammen, ich habe ein Problem mit JasperReport. Ich habe ein Master- und ein Subreport. Als Datenquelle habe ich die XML-Datei. Im iReport habe ich das schon ausgetestet und es funktioniert. Beim Ausführen von Java-Code bleibt aber das Subreport leer. Ich bekomme nur folgende Warnung: ------------------------------------------------------------------------ net.sf.jasperreports.engine.query.JRXPathQueryExecuter <init> WARNUNG: The supplied org.w3c.dom.Document object is null. ------------------------------------------------------------------------ Ich habe schon in Foren nach der Lösung gesucht, man redet immer über die Übergabe von Parameter für das Subreport. Wo muß das eigegeben werden? In Java-Quellcode oder in jrxml-Datei? Hier noch die Auszüge aus der Dateien: Java-Code: Document document = JRXmlUtils.parse(new File ("C:/Dokumente und Einstellungen/Workspace/JasperReport_PDF/Datei1.xml")); JRXmlDataSource jrds = new JRXmlDataSource(document,"/xPath"); parameter.put(JRXPathQueryExecuterFactory.PARAMETER_XML_DATA_DOCUMENT, document); jasperReport = JasperCompileManager.compileReport("Datei2.jrxml"); jasperPrint = JasperFillManager.fillReport(jasperReport, parameter, jrds); JasperExportManager.exportReportToPdfFile(jasperPrint, "out/Datei3.pdf"); jrxml-Datei: ... <parameter name="SUB_REPORT" isForPrompting="true" class="net.sf.jasperreports.engine.JasperReport"> <defaultValueExpression/> </parameter> ... <band height="120" isSplitAllowed="true" > <subreport isUsingCache="true"> <reportElement x="3" y="7" width="457" height="106" key="subreport-2"/> <subreportParameter name="XML_DATA_DOCUMENT"> <subreportParameterExpression><![CDATA[$P{SUB_REPORT}]]></subreportParameterExpression> </subreportParameter> <subreportExpression class="java.lang.String"><![CDATA["subreport_myfirst.jasper"]]></subreportExpression> </subreport> </band> ... Ich hoffe, jemand kann mir mit den Parametern weiter helfen. Und danke für eine schnelle Antwort!
  5. Hallo, Mit "Datei bearbeiten" meinte ich jrxml-Datei mit iReport inhaltlich ändern. Ich habe das Problem gestern schon geklärt. In iReport 3.5.2 kann man die jrxml-Berichte durch Extras->Optionen->General->Compatibility die entsprechende JasperReport Version einstellen. Dann geht es. Aber diese Möglichkeit gibt's eben erst ab iReport 3.5.2. Trotzdem Danke für den Tipp! Dass Scripte in Tags zu schreiben sind, werde ich mir merken.
  6. Hallo zusammen, ich habe eine Frage zu JasperReport und Benutzung von IReport und hoffe, dass mir jemand weiter helfen kann. Ich habe eine kleine Java-Applikation: ------------------------------------------------------------------------- import java.io.File; import java.util.HashMap; import net.sf.jasperreports.engine.JRException; import net.sf.jasperreports.engine.JasperCompileManager; import net.sf.jasperreports.engine.JasperExportManager; import net.sf.jasperreports.engine.JasperFillManager; import net.sf.jasperreports.engine.JasperPrint; import net.sf.jasperreports.engine.JasperReport; import net.sf.jasperreports.engine.data.JRXmlDataSource; public class JasperReport_PDF { public JasperReport_PDF() { } public void erstellePDF() { JasperReport jasperReport; JasperPrint jasperPrint; HashMap<String, String> parameter = new HashMap<String, String>(); try { JRXmlDataSource xml = new JRXmlDataSource(new File("Datei1.xml"), "/xPath"); jasperReport = JasperCompileManager.compileReport("Datei2.jrxml"); jasperPrint = JasperFillManager.fillReport(jasperReport, parameter, xml); JasperExportManager.exportReportToPdfFile(jasperPrint, "out/Datei3.pdf"); } catch (JRException e) { e.printStackTrace(); } } public static void main(String[] args) { JasperReport_PDF pdf = new JasperReport_PDF(); pdf.erstellePDF(); System.out.println("PDF wurde erstellt!"); } } -------------------------------------------------------------------------- Das funktioniert erst mal. Das heißt - die XML-Datei, JRXML-Datei und der xPath sind korrekt. Versuche ich aber die JRXML-Datei zu ändern und abzuspeichern, dann geht es nicht mehr. Java wirft folgenden Fehler auf: ------------------------------------------------------------------------- 08.06.2009 14:57:06 org.apache.commons.digester.Digester error SCHWERWIEGEND: Parse Error at line 2 column 417: Document root element "jasperReport", must match DOCTYPE root "null". org.xml.sax.SAXParseException: Document root element "jasperReport", must match DOCTYPE root "null". at com.sun.org.apache.xerces.internal.util.ErrorHandlerWrapper.createSAXParseException(ErrorHandlerWrapper.java:195) at com.sun.org.apache.xerces.internal.util.ErrorHandlerWrapper.error(ErrorHandlerWrapper.java:131) at com.sun.org.apache.xerces.internal.impl.XMLErrorReporter.reportError(XMLErrorReporter.java:384) at com.sun.org.apache.xerces.internal.impl.XMLErrorReporter.reportError(XMLErrorReporter.java:318) at com.sun.org.apache.xerces.internal.impl.dtd.XMLDTDValidator.rootElementSpecified(XMLDTDValidator.java:1621) at com.sun.org.apache.xerces.internal.impl.dtd.XMLDTDValidator.handleStartElement(XMLDTDValidator.java:1900) at com.sun.org.apache.xerces.internal.impl.dtd.XMLDTDValidator.startElement(XMLDTDValidator.java:764) at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanStartElement(XMLDocumentFragmentScannerImpl.java:1359) at com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl$ContentDriver.scanRootElementHook(XMLDocumentScannerImpl.java:1316) at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl$FragmentContentDriver.next(XMLDocumentFragmentScannerImpl.java:3095) at com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl$PrologDriver.next(XMLDocumentScannerImpl.java:921) at com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl.next(XMLDocumentScannerImpl.java:648) at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanDocument(XMLDocumentFragmentScannerImpl.java:510) at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:807) at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:737) at com.sun.org.apache.xerces.internal.parsers.XMLParser.parse(XMLParser.java:107) at com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.parse(AbstractSAXParser.java:1205) at com.sun.org.apache.xerces.internal.jaxp.SAXParserImpl$JAXPSAXParser.parse(SAXParserImpl.java:522) at org.apache.commons.digester.Digester.parse(Digester.java:1745) at net.sf.jasperreports.engine.xml.JRXmlLoader.loadXML(JRXmlLoader.java:239) at net.sf.jasperreports.engine.xml.JRXmlLoader.loadXML(JRXmlLoader.java:226) at net.sf.jasperreports.engine.xml.JRXmlLoader.load(JRXmlLoader.java:214) at net.sf.jasperreports.engine.xml.JRXmlLoader.load(JRXmlLoader.java:168) at net.sf.jasperreports.engine.xml.JRXmlLoader.load(JRXmlLoader.java:152) at net.sf.jasperreports.engine.JasperCompileManager.compileReport(JasperCompileManager.java:150) at JasperReport_PDF.erstellePDF(JasperReport_PDF.java:30) at JasperReport_PDF.main(JasperReport_PDF.java:45) net.sf.jasperreports.engine.JRException: org.xml.sax.SAXParseException: Document root element "jasperReport", must match DOCTYPE root "null". at net.sf.jasperreports.engine.xml.JRXmlLoader.loadXML(JRXmlLoader.java:243) at net.sf.jasperreports.engine.xml.JRXmlLoader.loadXML(JRXmlLoader.java:226) at net.sf.jasperreports.engine.xml.JRXmlLoader.load(JRXmlLoader.java:214) at net.sf.jasperreports.engine.xml.JRXmlLoader.load(JRXmlLoader.java:168) at net.sf.jasperreports.engine.xml.JRXmlLoader.load(JRXmlLoader.java:152) at net.sf.jasperreports.engine.JasperCompileManager.compileReport(JasperCompileManager.java:150) at JasperReport_PDF.erstellePDF(JasperReport_PDF.java:30) at JasperReport_PDF.main(JasperReport_PDF.java:45) Caused by: org.xml.sax.SAXParseException: Document root element "jasperReport", must match DOCTYPE root "null". at com.sun.org.apache.xerces.internal.util.ErrorHandlerWrapper.createSAXParseException(ErrorHandlerWrapper.java:195) at com.sun.org.apache.xerces.internal.util.ErrorHandlerWrapper.error(ErrorHandlerWrapper.java:131) at com.sun.org.apache.xerces.internal.impl.XMLErrorReporter.reportError(XMLErrorReporter.java:384) at com.sun.org.apache.xerces.internal.impl.XMLErrorReporter.reportError(XMLErrorReporter.java:318) at com.sun.org.apache.xerces.internal.impl.dtd.XMLDTDValidator.rootElementSpecified(XMLDTDValidator.java:1621) at com.sun.org.apache.xerces.internal.impl.dtd.XMLDTDValidator.handleStartElement(XMLDTDValidator.java:1900) at com.sun.org.apache.xerces.internal.impl.dtd.XMLDTDValidator.startElement(XMLDTDValidator.java:764) at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanStartElement(XMLDocumentFragmentScannerImpl.java:1359) at com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl$ContentDriver.scanRootElementHook(XMLDocumentScannerImpl.java:1316) at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl$FragmentContentDriver.next(XMLDocumentFragmentScannerImpl.java:3095) at com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl$PrologDriver.next(XMLDocumentScannerImpl.java:921) at com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl.next(XMLDocumentScannerImpl.java:648) at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanDocument(XMLDocumentFragmentScannerImpl.java:510) at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:807) at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:737) at com.sun.org.apache.xerces.internal.parsers.XMLParser.parse(XMLParser.java:107) at com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.parse(AbstractSAXParser.java:1205) at com.sun.org.apache.xerces.internal.jaxp.SAXParserImpl$JAXPSAXParser.parse(SAXParserImpl.java:522) at org.apache.commons.digester.Digester.parse(Digester.java:1745) at net.sf.jasperreports.engine.xml.JRXmlLoader.loadXML(JRXmlLoader.java:239) ... 7 more -------------------------------------------------------------------------- Ich habe schon die JRXML-Datei vor und nach verglichen: Nach dem Abspeichern unterscheiden sie sich in folgender Zeile: -------------------------------------------------------------------------- Vorher: wo es klappt: <!-- Created with iReport - A designer for JasperReports --> <!DOCTYPE jasperReport PUBLIC "//JasperReports//DTD Report Design//EN" "http://jasperreports.sourceforge.net/dtds/jasperreport.dtd"> <jasperReport name="Termin-Blatt" 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="true" isSummaryNewPage="false"> -------------------------------------------------------------------------- Danach, wo es schon nicht klappt: keine DOCTYPE-Zeile, sondern <jasperReport xmlns="http://jasperreports.sourceforge.net/jasperreports" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://jasperreports.sourceforge.net/jasperreports http://jasperreports.sourceforge.net/xsd/jasperreport.xsd" name="Termin-Blatt" pageWidth="595" pageHeight="842" columnWidth="535" leftMargin="30" rightMargin="30" topMargin="20" bottomMargin="20" isTitleNewPage="true"> -------------------------------------------------------------------------- Man kann die JRXML-Dateien natürlich mit einem TextEditor bearbeiten, aber es ist in meinem Fall die Bedinung, dass dafür iReport benutzt werden soll und normale User die Layouts für ihre Reports selbst mit IReport erstellen können. Das Problem existiert schon eine Ewigkeit, so ich das in den Foren verfolgen könnte. Aber auf eine Lösung war ich noch nicht getroffen. Soll man beim iReport irgendeine Einstellung machen oder wie kann man sonst die bearbeiteten JRXML-Dateien wieder zum Laufen zu bringen? Danke für alle, die mir einen Tipp geben können!
  7. Hallo! Danke tausend mal!!! Es lag wirklich an der xml-Datei. Ich habe eine andere ausgetestet, bei der ich 100% sicher war und es hat funktioniert!!! Warum Kaum zu glauben!!! Danke sehr!!!
  8. Hallo zusammen, ich versuche die Funktionalität von Java-Bibliothek JasperReport in PHP-Umgebung mit PHP Java Bridge zu testen. Allein mit Java habe ich den gleichen Script schon getestet und es funktioniert einwandfrei. Wenn ich aber meinen PHP-Script aufrufe, bekomme ich foldenden Java-Fehler: -------------------------------------------------------------------------- Fatal error: Uncaught [[o:Exception]:"java.lang.Exception: Invoke failed: [[c:JasperCompileManager]]->compileReport((o:String)[o:String]). Cause: net.sf.jasperreports.engine.JRException: org.xml.sax.SAXParseException: Premature end of file. Responsible VM: 1.6.0_13@http://java.sun.com/" at: #-15 net.sf.jasperreports.engine.xml.JRXmlLoader.loadXML(JRXmlLoader.java:243) #-14 net.sf.jasperreports.engine.xml.JRXmlLoader.loadXML(JRXmlLoader.java:226) #-13 net.sf.jasperreports.engine.xml.JRXmlLoader.load(JRXmlLoader.java:214) #0 http://localhost:8080/JavaBridge/java/Java.inc(255): java_ThrowExceptionProxyFactory->getProxy(3, 'net.sf.jasperre...', true) #1 http://localhost:8080/JavaBridge/java/Java.inc(471): java_Arg->getResult(true) #2 http://localhost:8080/JavaBridge/java/Java.inc(477): java_Client->getWrappedResult(true) #3 http://localhost:8080/JavaBridge/java/Java.inc(672): java_Client->getResult() #4 http://localhost:8080/JavaBridge/java/Java.inc(1783): java_Client->invokeMethod(2, 'compileReport', Array) #5 http://localho in http://localhost:8080/JavaBridge/java/Java.inc on line 218 -------------------------------------------------------------------------- Und das ist der Quellcode: <?php // PDF-Erzeugung $settingsPath = "includes/settings/"; $JavaBridge = file_get_contents($settingsPath . 'javaBridgePath.inc'); $jasperReportsLib = file_get_contents($settingsPath . 'jasperReportsLibPath.inc'); require_once($JavaBridge); $xml_datei = "personen_db.xml"; $xpath = "/personen/person"; $jrxml_datei = "personen_db.jrxml"; $pdf_datei = "personen_db.pdf"; $handle = @opendir($jasperReportsLib); while(($new_item = readdir($handle)) !== false) { $java_library_path .= 'file:'.$jasperReportsLib.'/'.$new_item .';'; } java_require($java_library_path); // einlesen des XML-Files, erzeugt JR-Datenquelle: $ds = new Java("net.sf.jasperreports.engine.data.JRXmlDataSource",$xml_datei,$xpath); //Bis dahin komme ich durch! // einen zunächst leeren Report aus dem XML erzeugen: $sJcm = new JavaClass("net.sf.jasperreports.engine.JasperCompileManager"); //Bis dahin komme ich durch! $report = $sJcm->compileReport($jrxml_datei); //Hier steige ich schon aus! // den neuen Report mit Daten füllen $sJfm = new JavaClass("net.sf.jasperreports.engine.JasperFillManager"); $print = $sJfm->fillReport($report, new Java("java.util.HashMap"), $ds); // Umwandlung in PDF: $sJem = new JavaClass("net.sf.jasperreports.engine.JasperExportManager"); //$sJem->exportReportToPdfFile($print, $pdf_datei); echo "PDF wurde erstellt!"; ?> Ich bin hier im Forum, weil das eigentlich ein Java-Fehler ist und mit PHP nicht zu tun hat. Kann mir jemand helfen?
  9. Hallo zusammen, ich richte zum ersten Mal PHP Java Bridge und Tomcat. Auf der Seite PHP5, PHP/Java Bridge & Tomcat on XP PRO + SP and examples steht alles erklärt. PHP Java Bridge Pack habe ich von der http://sourceforge.net/project/showf...roup_id=117793 runtergeladen. Ich brauhe jetzt die Datei java-x86-windows.dll in C:\PHP\ext zu kopieren und sie zu php-java.dill umzubenennen. Dann kann ich weiter machen. Problem: Im Archiv PHPJavaBridge.war finde ich im Verzeichnis JavaBridge\WEB-INF\cgi leider keine java-x86-windows.dll. Die gibt's nirgendwo. Im Netz kann ich sie auch nicht zum Download finden. Ist das ein Versionen-Problem? Heißt die Datei inzwischen anders? Oder wo finde ich dann die Datei java-x86-windows.dll?

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...