7

XMLをデータソースとして使用してレポートサマリーパネルでテーブルコンポーネントを作成しているときに問題が発生しました。最終的なレポートには単なる空白行が表示されます。

以下はProjectXML.xmlという名前の私のxmlデータソースです

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

以下はreport12.jrxmlという名前の私の.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>

以下は、report12.jrxmlの空白のプレビューのスクリーンショットです。

report12プレビュー

TestSuite名を含む完全なテーブルを取得するために、これに関するヘルプに感謝します。

4

2 に答える 2

6

「ハック」を見つけましたが、あまり良い方法ではありませんが、機能しています。

メイン (レポートの) データセットを追加して、テーブルコンポーネントで使用できます。

<?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>

このサンプルでは((net.sf.jasperreports.engine.data.JRXmlDataSource)$P{REPORT_DATA_SOURCE}).dataSource("/testsuites/testsuite")、​​テーブルのデータソースを設定するために式を使用しました。

結果は次のようになります。

iReport プレビューによる結果レポート


必要なデザインを取得するもう 1 つの方法は、 (テーブルコンポーネントを使用せずに)詳細バンドを使用することです。


あなたが説明した状況は、JasperReportsエンジンのバグを検出したと思います。

http://community.jaspersoft.comサイトで同様の投稿を見つけました: Table component and XML datasource and using table elements with xml datasource

于 2012-11-26T10:49:41.647 に答える
1

IReport で解決策を見つけ、[テーブル データソースの編集] を選択し、ドロップダウン リストで [接続] / [データソース式] を選択します。

データソース式を使用

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

そしてそれはJavaアプリから動作します

于 2014-02-07T02:28:43.750 に答える