2012-11-23 3 views
6

Ich habe Probleme beim Erstellen von Tabelle Komponente im Bericht Zusammenfassung Panel mit XML als Datenquelle, zeigt der Abschlussbericht eine Leerzeile.Tabelle Komponente zeigt leeren Bericht für XML-Datenquelle

Im Folgenden meiner XML-Datenquelle mit dem Namen ist ProjectXML.xml

<testsuites> 
    <testsuite name="testsuite1"/> 
    <testsuite name="testsuite2"/> 
    <testsuite name="testsuite3"/> 
</testsuites> 

Unten ist meine .jrxml Datei mit dem Namen report12.jrxml

<?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="report12" language="groovy" pageWidth="595" pageHeight="842" columnWidth="555" leftMargin="20" rightMargin="20" topMargin="20" bottomMargin="20" uuid="bb749013-793e-4a97-a43a-08d89a11ce20"> 
    <property name="ireport.zoom" value="1.0"/> 
    <property name="ireport.x" value="0"/> 
    <property name="ireport.y" value="0"/> 
    <style name="table"> 
     <box> 
      <pen lineWidth="1.0" lineColor="#3300CC"/> 
     </box> 
    </style> 
    <style name="table_TH" mode="Opaque" backcolor="#F0F8FF"> 
     <box> 
      <pen lineWidth="0.5" lineColor="#3300CC"/> 
     </box> 
    </style> 
    <style name="table_CH" mode="Opaque" backcolor="#BFE1FF"> 
     <box> 
      <pen lineWidth="0.5" lineColor="#3300CC"/> 
     </box> 
    </style> 
    <style name="table_TD" mode="Opaque" backcolor="#FFFFFF"> 
     <box> 
      <pen lineWidth="0.5" lineColor="#3300CC"/> 
     </box> 
     <conditionalStyle> 
      <conditionExpression><![CDATA[new Boolean($V{REPORT_COUNT}.intValue()%2==0)]]></conditionExpression> 
      <style backcolor="#EFF7FF"/> 
     </conditionalStyle> 
    </style> 
    <subDataset name="tableDataSet" uuid="44f57638-9650-43f7-9a45-b12c6144c112"> 
     <queryString language="xPath"> 
      <![CDATA[/testsuites/testsuite]]> 
     </queryString> 
     <field name="name" class="java.lang.String"> 
      <fieldDescription><![CDATA[@name]]></fieldDescription> 
     </field> 
    </subDataset> 
    <queryString language="xPath"> 
     <![CDATA[/testsuites/testsuite]]> 
    </queryString> 
    <field name="name" class="java.lang.String"> 
     <fieldDescription><![CDATA[@name]]></fieldDescription> 
    </field> 
    <summary> 
     <band height="238" splitType="Stretch"> 
      <componentElement> 
       <reportElement uuid="59f049a5-d77e-480c-a1ee-46987630290d" key="table" style="table" x="0" y="0" width="555" height="238"/> 
       <jr:table xmlns:jr="http://jasperreports.sourceforge.net/jasperreports/components" xsi:schemaLocation="http://jasperreports.sourceforge.net/jasperreports/components http://jasperreports.sourceforge.net/xsd/components.xsd"> 
        <datasetRun subDataset="tableDataSet" uuid="6d3ecced-ba97-49c1-aec9-7f5903748fa5"> 
         <connectionExpression><![CDATA[$P{REPORT_CONNECTION}]]></connectionExpression> 
        </datasetRun> 
        <jr:column uuid="ed4b1e17-dcec-4ed6-9f1f-efb543f240b7" width="90"> 
         <jr:columnHeader style="table_CH" height="30"> 
          <staticText> 
           <reportElement uuid="e2772a76-f9da-4438-8aa3-78cee739bdaf" x="0" y="0" width="90" height="30"/> 
           <textElement/> 
           <text><![CDATA[name]]></text> 
          </staticText> 
         </jr:columnHeader> 
         <jr:detailCell style="table_TD" height="20"> 
          <textField> 
           <reportElement uuid="d496fc00-bab8-4b85-bb8d-c75c1cfc3dc4" x="0" y="0" width="90" height="20"/> 
           <textElement/> 
           <textFieldExpression><![CDATA[$F{name}]]></textFieldExpression> 
          </textField> 
         </jr:detailCell> 
        </jr:column> 
       </jr:table> 
      </componentElement> 
     </band> 
    </summary> 
</jasperReport> 

Unter dem Screenshot die leere Vorschau des report12.jrxml

report12 Preview

Erweiterte Dank für jede auf diese Hilfe die vollständige Tabelle erhalten mit Testsuite Namen.

+0

@ Michaël sehr leid actuall Meine früheren Posts lösten meine Probleme, aber ich wusste nicht, wie ich die Antworten akzeptieren sollte ... oder die damit verbundene Wichtigkeit ... so dass ich das Kontrollkästchen nicht auswählte ... Entschuldigung dafür ... nun ging ich durch den angegebenen Link von Alex ... und lernte, wie man das macht .. so akzeptierte ich alle Antworten, die mir früher geholfen haben ... Danke Alex und Michaël. – Som

+0

es ist sehr kritisch für mich ..könnte mir bitte jemand helfen ... – Som

+0

@ uday035 Ich konnte diesen "Bug" (glaube ich, dass es ist) mit * iReport 4.5.0 und 4.8.0 * reproduzieren. Es ist ein bekanntes Problem - Sie können [Tabellenkomponente und XML-Datenquelle] (http://community.jaspersoft.com/questions/540959/table-component-and-xml-datasource) und [Tabellenelemente mit XML-Datenquelle verwenden] anzeigen. (http://community.jaspersoft.com/questions/534913/using-table-elements-xml-datasource) Beiträge auf http://community.jaspersoft.com. Sie können versuchen, die * Detail * -Band zu verwenden, um das gleiche Ergebnis zu erhalten - es ist Arbeit –

Antwort

5

Ich habe ein „Hack“ und nicht sehr schön Methode, aber es funktioniert gefunden.

Sie können den Hauptdatensatz (Bericht) hinzufügen und in der Komponente Tabelle verwenden.

<?xml version="1.0" encoding="UTF-8"?> 
<jasperReport .. whenNoDataType="AllSectionsNoDetail" ..> 
    <style name="table"> 
     <box> 
      <pen lineWidth="1.0" lineColor="#000000"/> 
     </box> 
    </style> 
    <style name="table_TH" mode="Opaque" backcolor="#F0F8FF"> 
     <box> 
      <pen lineWidth="0.5" lineColor="#000000"/> 
     </box> 
    </style> 
    <style name="table_CH" mode="Opaque" backcolor="#BFE1FF"> 
     <box> 
      <pen lineWidth="0.5" lineColor="#000000"/> 
     </box> 
    </style> 
    <style name="table_TD" mode="Opaque" backcolor="#FFFFFF"> 
     <box> 
      <pen lineWidth="0.5" lineColor="#000000"/> 
     </box> 
    </style> 
    <subDataset name="tbDS"> 
     <queryString language="xPath"> 
      <![CDATA[/testsuites/testsuite]]> 
     </queryString> 
     <field name="name" class="java.lang.String"> 
      <fieldDescription><![CDATA[@name]]></fieldDescription> 
     </field> 
    </subDataset> 
    <queryString language="xPath"> 
     <![CDATA[/testsuites/testsuite]]> 
    </queryString> 
    <field name="name" class="java.lang.String"> 
     <fieldDescription><![CDATA[@name]]></fieldDescription> 
    </field> 
    <summary> 
     <band height="98" splitType="Stretch"> 
      <componentElement> 
       <reportElement key="table" style="table" x="76" y="33" width="360" height="50"/> 
       <jr:table xmlns:jr="http://jasperreports.sourceforge.net/jasperreports/components" xsi:schemaLocation="http://jasperreports.sourceforge.net/jasperreports/components http://jasperreports.sourceforge.net/xsd/components.xsd"> 
        <datasetRun subDataset="tbDS"> 
         <dataSourceExpression><![CDATA[((net.sf.jasperreports.engine.data.JRXmlDataSource)$P{REPORT_DATA_SOURCE}).dataSource("/testsuites/testsuite")]]></dataSourceExpression> 
        </datasetRun> 
        <jr:column width="90"> 
         <jr:columnHeader style="table_CH" height="30"> 
          <staticText> 
           <reportElement x="0" y="0" width="90" height="30"/> 
           <textElement/> 
           <text><![CDATA[name]]></text> 
          </staticText> 
         </jr:columnHeader> 
         <jr:detailCell style="table_TD" height="20"> 
          <textField> 
           <reportElement x="0" y="0" width="90" height="20"/> 
           <textElement/> 
           <textFieldExpression><![CDATA[$F{name}]]></textFieldExpression> 
          </textField> 
         </jr:detailCell> 
        </jr:column> 
       </jr:table> 
      </componentElement> 
     </band> 
    </summary> 
</jasperReport> 

In dieser Probe I ((net.sf.jasperreports.engine.data.JRXmlDataSource)$P{REPORT_DATA_SOURCE}).dataSource("/testsuites/testsuite") Ausdruck für die Einstellung der Tabelle der Datenquelle verwendet haben.

Das Ergebnis wird:

The resulted report via iReport preview


Die andere Art und Weise erhalten Sie die gewünschten Design - ist die Details Band zu verwenden (ohne Tabelle Komponente verwendet wird).


Ich denke, die Situation, die Sie beschrieben den Bug eines Motor Jasper erkennt. Table component and XML datasource und using table elements with xml datasource

+0

Ja Alex, Ihr gegebenes xml hat wie ein Charme gearbeitet ..nach dem Platzieren dieses .... wenn ich aber einfach den Standardausdruck wie dann zeigt das Zusammenfassungsband leer und das Detailband zeigt die Tabellendatensätze, die die erste Zeile verlassen. – Som

+0

obwohl für all diese .. häufige Kompatibilitätsprobleme mit der Beibehaltung von XML als Datenquelle für jasper report desgining Ich bewege mich dazu, MySQL als Hintergrund zu behalten, indem ich die xml-Werte spare und in der Datenbank in einem geeigneten Tabellenformat belässe. Dann benutze ich diese Datenbank für das Berichtsdesign .. es macht das Leben viel einfacher .. :) .. Vielen Dank Alex .. für die Hilfe bei diesem ... – Som

+0

@ uday035 Willkommen :) –

1

fand ich eine Lösung auf IReport, wählen Sie Bearbeiten Tabelle Datenquelle, auf Drop-Down-Liste über Verbindungs ​​/ Datasource-Expression wählen

Verwenden Datenquelle Expresion

:

Ich habe ähnliche Beiträge bei http://community.jaspersoft.com Website gefunden

new net.sf.jasperreports.engine.JREmptyDataSource(1) 

und es funktioniert von Java App

+0

Können Sie das etwas besser formatieren? Es ist wirklich verwirrend. –

Verwandte Themen