当关联查询没有记录时,在iReport中打印空表

时间:2013-01-02 14:21:40

标签: jasper-reports ireport xmltable

我正在使用iReports版本3.7.6。 我通过使用数据集将其与查询相关联来动态生成表。

当查询返回记录时,我会打印一个包含所有记录的表。

但是当查询返回零记录时,我需要显示一个空表。但我只是走了一条水平线。

以下是jasper XML文件的一部分:

<componentElement>
    <reportElement x="131" y="11" width="424" height="24"/>
    <jr:list xmlns:jr="http://jasperreports.sourceforge.net/jasperreports/components" xsi:schemaLocation="http://jasperreports.sourceforge.net/jasperreports/components http://jasperreports.sourceforge.net/xsd/components.xsd" printOrder="Vertical">
        <datasetRun subDataset="pmDataSet">
            <parametersMapExpression><![CDATA[$P{REPORT_PARAMETERS_MAP}]]></parametersMapExpression>
            <connectionExpression><![CDATA[$P{REPORT_CONNECTION}]]></connectionExpression>
        </datasetRun>
        <jr:listContents height="24" width="424">
            <textField>
                <reportElement x="0" y="0" width="134" height="22"/>
                <box>
                    <topPen lineWidth="0.5"/>
                    <rightPen lineWidth="0.5"/>
                </box>
                <textElement/>
                <textFieldExpression class="java.lang.String"><![CDATA[$F{COLUMN_1}]]></textFieldExpression>
            </textField>
            <textField>
                <reportElement x="134" y="0" width="120" height="22"/>
                <box>
                    <topPen lineWidth="0.5"/>
                    <rightPen lineWidth="0.5"/>
                </box>
                <textElement/>
                <textFieldExpression class="java.lang.String"><![CDATA[($F{COLUMN_2}) ? $F{COLUMN_2} : "(Blank)"]]></textFieldExpression>
            </textField>
            <textField>
                <reportElement x="254" y="0" width="170" height="22"/>
                <box>
                    <topPen lineWidth="0.5"/>
                    <rightPen lineWidth="0.5"/>
                </box>
                <textElement/>
                <textFieldExpression class="java.lang.String"><![CDATA[$F{COLUMN_3}]]></textFieldExpression>
            </textField>
        </jr:listContents>
    </jr:list>
</componentElement>

这里我使用了“List”元素(jr:list)并将其与数据集相关联。

1 个答案:

答案 0 :(得分:2)

据我所知,用表格无法实现。但是,仍然有一个工作。

使用 Subreport 代替表格。使用表完成的所有操作也可以使用子报表完成。只有你需要照顾的是这个属性。

When No Data

将其设为

  • All Sections No Detail:仅显示标题信息
  • No Data Section:以便可以在No Data频段中显示自定义消息。

希望这会有所帮助。