【问题标题】:Jasper iReport table returns an empty document although query works尽管查询有效,Jasper iReport 表返回一个空文档
【发布时间】:2012-03-05 13:26:40
【问题描述】:

我正在尝试使用 Jasper iReport 4.5 创建一个报告,并且我正在使用一个表格来显示一些数据。该表由一个查询填充,当我在查询编辑器中检查查询的预览时,我得到了我想要的结果。 但是当我尝试创建报表的预览时,我得到的只是“文档没有页面”。甚至不显示表头中的静态文本。

这是报告的 XML,但没有查询:

<?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="subReportTextManualCustomerRating" pageWidth="500" pageHeight="842" columnWidth="460" leftMargin="20" rightMargin="20" topMargin="20" bottomMargin="20">
    <property name="ireport.zoom" value="1.4641000000000008"/>
    <property name="ireport.x" value="0"/>
    <property name="ireport.y" value="0"/>
    <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>
    <style name="table 1">
        <box>
            <pen lineWidth="1.0" lineColor="#000000"/>
        </box>
    </style>
    <style name="table 1_TH" mode="Opaque" backcolor="#FFFFFF">
        <box>
            <pen lineWidth="0.5" lineColor="#000000"/>
        </box>
    </style>
    <style name="table 1_CH" mode="Opaque" backcolor="#FFBFBF">
        <box>
            <pen lineWidth="0.5" lineColor="#000000"/>
        </box>
    </style>
    <style name="table 1_TD" mode="Opaque" backcolor="#FFFFFF">
        <box>
            <pen lineWidth="0.5" lineColor="#000000"/>
        </box>
    </style>
    <subDataset name="CustomerType">
        <parameter name="TEXT_MANUAL_OID" class="java.lang.String"/>
        <queryString>
        </queryString>
        <field name="Anzahl" class="java.lang.Long"/>
        <field name="Typ" class="java.lang.String"/>
        <field name="Bezeichnung" class="java.lang.String"/>
    </subDataset>
    <parameter name="TEXT_MANUAL_OID" class="java.lang.String"/>
    <queryString>
        <![CDATA[]]>
    </queryString>
    <summary>
        <band height="143">
            <componentElement>
                <reportElement key="table 1" style="table 1" x="0" y="0" width="460" height="143"/>
                <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="CustomerType">
                        <connectionExpression><![CDATA[$P{REPORT_CONNECTION}]]></connectionExpression>
                    </datasetRun>
                    <jr:column width="90">
                        <jr:tableHeader style="table 1_TH" height="30">
                            <staticText>
                                <reportElement x="0" y="0" width="90" height="30"/>
                                <textElement/>
                                <text><![CDATA[Kontakt Typen]]></text>
                            </staticText>
                        </jr:tableHeader>
                        <jr:detailCell style="table 1_TD" height="20">
                            <textField>
                                <reportElement x="0" y="0" width="90" height="20"/>
                                <textElement/>
                                <textFieldExpression><![CDATA[$F{Typ}]]></textFieldExpression>
                            </textField>
                        </jr:detailCell>
                    </jr:column>
                    <jr:column width="90">
                        <jr:tableHeader style="table 1_TH" height="30">
                            <staticText>
                                <reportElement x="0" y="0" width="90" height="30"/>
                                <textElement/>
                                <text><![CDATA[Ergebniserklärung]]></text>
                            </staticText>
                        </jr:tableHeader>
                        <jr:detailCell style="table 1_TD" height="20">
                            <textField>
                                <reportElement x="0" y="0" width="90" height="20"/>
                                <textElement/>
                                <textFieldExpression><![CDATA[$F{Bezeichnung}]]></textFieldExpression>
                            </textField>
                        </jr:detailCell>
                    </jr:column>
                    <jr:column width="90">
                        <jr:tableHeader style="table 1_TH" height="30">
                            <staticText>
                                <reportElement x="0" y="0" width="90" height="30"/>
                                <textElement/>
                                <text><![CDATA[Anzahl der Kontakte]]></text>
                            </staticText>
                        </jr:tableHeader>
                        <jr:detailCell style="table 1_TD" height="20">
                            <textField>
                                <reportElement x="0" y="0" width="90" height="20"/>
                                <textElement/>
                                <textFieldExpression><![CDATA[$F{Anzahl}]]></textFieldExpression>
                            </textField>
                        </jr:detailCell>
                    </jr:column>
                </jr:table>
            </componentElement>
        </band>
    </summary>
</jasperReport>

【问题讨论】:

  • 您是否为报告创建了数据源?您应该将相关数据源设置为活动的(在iReport 中)。您使用的是什么数据源(xml 或其他)?
  • 是的,我有一个有效的数据源,我将表格设置为使用主报表数据源
  • 好的,我刚刚发现它是什么。我必须为主报告创建一个查询,即使我没有在此报告中的任何地方使用它。所以我只是添加了 select 1 as dummy_field 作为主报告的查询,现在表格显示了我想要的数据。遗憾的是,我只能在 7 小时内回答我自己的问题,因为我的帐户是新帐户。
  • @Stefan 您可以将您的评论添加为答案并将其标记为已接受,即使这是您自己的问题。

标签: jasper-reports ireport xmltable


【解决方案1】:

还有另一种方法。

按照以下步骤进行

  1. 点击主报告名称
  2. 选择属性名称:当没有数据类型时
  3. 选择属性值:所有部分无详细信息

使用这个就不需要添加dummy sql了。

【讨论】:

    【解决方案2】:

    好的,我刚刚发现它是什么。我必须为主报告创建一个查询,即使我没有在此报告中的任何地方使用它。所以我只是添加了“select 1 as dummy_field”作为主报告的查询,现在表格显示了我想要的数据。

    【讨论】:

      【解决方案3】:

      就我而言,我提供了空数据源并解决了问题

      JasperPrint jasperPrint = JasperFillManager.fillReport(path,null, new JREmptyDataSource());
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-06-29
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多