当前位置: 首页 > 知识库问答 >
问题:

主报表中未呈现子报表

顾宣
2023-03-14

我已经创建了一个Jasper报告,我正试图将报告集成到主报告中。我可以按原样填充子报表中的数据,但如果我将其集成到主报表中,我就不能呈现我在子报表中呈现的数据。事实上,我在集成子报表的地方得到了空白。

<?xml version="1.0" encoding="UTF-8"?>
<!-- Created with Jaspersoft Studio version 6.2.0.final using JasperReports Library version 6.2.0  -->
<!-- 2015-12-29T14:51:49 -->
<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="Table1Jasper" pageWidth="250" pageHeight="842" columnWidth="250" leftMargin="0" rightMargin="0" topMargin="0" bottomMargin="0" uuid="168d5180-08f7-4e70-a176-9757e902e707">
    <property name="com.jaspersoft.studio.data.defaultdataadapter" value="TableOneTestFactory"/>
    <property name="com.jaspersoft.studio.unit." value="pixel"/>
    <property name="com.jaspersoft.studio.unit.pageHeight" value="pixel"/>
    <property name="com.jaspersoft.studio.unit.pageWidth" value="pixel"/>
    <property name="com.jaspersoft.studio.unit.topMargin" value="pixel"/>
    <property name="com.jaspersoft.studio.unit.bottomMargin" value="pixel"/>
    <property name="com.jaspersoft.studio.unit.leftMargin" value="pixel"/>
    <property name="com.jaspersoft.studio.unit.rightMargin" value="pixel"/>
    <property name="com.jaspersoft.studio.unit.columnWidth" value="pixel"/>
    <property name="com.jaspersoft.studio.unit.columnSpacing" value="pixel"/>
    <queryString>
        <![CDATA[]]>
    </queryString>
    <field name="a" class="java.lang.String"/>
    <field name="b" class="java.lang.Integer"/>
    <background>
        <band splitType="Stretch"/>
    </background>
    <title>
        <band height="31" splitType="Stretch">
            <staticText>
                <reportElement mode="Opaque" x="10" y="0" width="230" height="30" forecolor="#6E4A85" backcolor="#E9E1ED" uuid="c96bbba0-dd6f-4572-92ea-19b5a6165ce4"/>
                <box>
                    <topPen lineWidth="1.0" lineStyle="Double"/>
                    <leftPen lineWidth="1.0" lineStyle="Double"/>
                    <bottomPen lineWidth="1.0" lineStyle="Double"/>
                    <rightPen lineWidth="1.0" lineStyle="Double"/>
                </box>
                <textElement textAlignment="Center" verticalAlignment="Middle">
                    <font size="14" isBold="true"/>
                </textElement>
                <text><![CDATA[TABLE ONES' FIELDS']]></text>
            </staticText>
        </band>
    </title>
    <columnHeader>
        <band height="60" splitType="Stretch">
            <staticText>
                <reportElement mode="Opaque" x="23" y="30" width="100" height="30" backcolor="#39FA50" uuid="611cad70-6062-4bc6-863c-bb4dbb4d5d55"/>
                <box>
                    <topPen lineWidth="0.5" lineStyle="Solid"/>
                    <leftPen lineWidth="0.5" lineStyle="Solid"/>
                    <bottomPen lineWidth="0.5" lineStyle="Solid"/>
                    <rightPen lineWidth="0.5" lineStyle="Solid"/>
                </box>
                <textElement textAlignment="Center" verticalAlignment="Middle">
                    <font size="12" isBold="true"/>
                </textElement>
                <text><![CDATA[a]]></text>
            </staticText>
            <staticText>
                <reportElement mode="Opaque" x="123" y="30" width="100" height="30" backcolor="#39FA50" uuid="77893362-087e-4df0-9ca3-48acf820741f"/>
                <box>
                    <topPen lineWidth="0.5" lineStyle="Solid"/>
                    <leftPen lineWidth="0.5" lineStyle="Solid"/>
                    <bottomPen lineWidth="0.5" lineStyle="Solid"/>
                    <rightPen lineWidth="0.5" lineStyle="Solid"/>
                </box>
                <textElement textAlignment="Center" verticalAlignment="Middle">
                    <font size="12" isBold="true"/>
                </textElement>
                <text><![CDATA[b]]></text>
            </staticText>
        </band>
    </columnHeader>
    <detail>
        <band height="29" splitType="Stretch">
            <textField>
                <reportElement mode="Opaque" x="23" y="-1" width="100" height="30" backcolor="#C28C8C" uuid="05928dbf-95d4-491b-9ef5-905a1fa18b2a"/>
                <box>
                    <topPen lineWidth="0.5" lineStyle="Solid"/>
                    <leftPen lineWidth="0.5" lineStyle="Solid"/>
                    <bottomPen lineWidth="0.5" lineStyle="Solid"/>
                    <rightPen lineWidth="0.5" lineStyle="Solid"/>
                </box>
                <textElement textAlignment="Center" verticalAlignment="Middle"/>
                <textFieldExpression><![CDATA[$F{a}]]></textFieldExpression>
            </textField>
            <textField>
                <reportElement mode="Opaque" x="123" y="-1" width="100" height="30" backcolor="#C28C8C" uuid="54082691-6a9e-4c28-b960-b729bdae9458"/>
                <box>
                    <topPen lineWidth="0.5" lineStyle="Solid"/>
                    <leftPen lineWidth="0.5" lineStyle="Solid"/>
                    <bottomPen lineWidth="0.5" lineStyle="Solid"/>
                    <rightPen lineWidth="0.5" lineStyle="Solid"/>
                </box>
                <textElement textAlignment="Center" verticalAlignment="Middle"/>
                <textFieldExpression><![CDATA[$F{b}]]></textFieldExpression>
            </textField>
        </band>
    </detail>
</jasperReport>
<?xml version="1.0" encoding="UTF-8"?>
<!-- Created with Jaspersoft Studio version 6.2.0.final using JasperReports Library version 6.2.0  -->
<!-- 2015-12-29T14:14:23 -->
<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="MainReport" pageWidth="595" pageHeight="842" columnWidth="555" leftMargin="20" rightMargin="20" topMargin="20" bottomMargin="20" uuid="a0a24146-f700-4edb-8746-7825a1fa923d">
    <property name="com.jaspersoft.studio.data.defaultdataadapter" value="TableOneTestFactory"/>
    <queryString>
        <![CDATA[]]>
    </queryString>
    <background>
        <band splitType="Stretch"/>
    </background>
    <title>
        <band height="79" splitType="Stretch">
            <staticText>
                <reportElement mode="Opaque" x="0" y="0" width="560" height="30" forecolor="#000000" backcolor="#834EED" uuid="5f92ae14-f194-4e5e-bf26-8f11a9335900"/>
                <box>
                    <topPen lineWidth="1.0" lineStyle="Double"/>
                    <leftPen lineWidth="1.0" lineStyle="Double"/>
                    <bottomPen lineWidth="1.0" lineStyle="Double"/>
                    <rightPen lineWidth="1.0" lineStyle="Double"/>
                </box>
                <textElement textAlignment="Center" verticalAlignment="Middle">
                    <font size="20" isBold="true"/>
                </textElement>
                <text><![CDATA[Main Report]]></text>
            </staticText>
        </band>
    </title>
    <columnHeader>
        <band height="61" splitType="Stretch"/>
    </columnHeader>
    <detail>
        <band height="329" splitType="Stretch">
            <subreport>
                <reportElement x="0" y="90" width="560" height="60" uuid="021bbef9-3a86-48a1-a15f-64627101521f"/>
                <connectionExpression><![CDATA[$P{REPORT_CONNECTION}]]></connectionExpression>
                <subreportExpression><![CDATA["Table1Jasper.jasper"]]></subreportExpression>
            </subreport>
        </band>
    </detail>
    <columnFooter>
        <band height="45" splitType="Stretch"/>
    </columnFooter>
    <pageFooter>
        <band height="54" splitType="Stretch"/>
    </pageFooter>
    <summary>
        <band height="42" splitType="Stretch"/>
    </summary>
</jasperReport>

共有1个答案

莘绍元
2023-03-14

不能对子报表使用相对路径,需要使用绝对路径。

这通常通过使用参数(带有默认表达式)来实现。

<parameter name="SUBREPORT_DIR" class="java.lang.String" isForPrompting="false">
    <defaultValueExpression><![CDATA["C:\\The\\Path\\To\\Subreport\\"]]></defaultValueExpression>
</parameter>
<subreportExpression><![CDATA[$P{SUBREPORT_DIR} + "Table1Jasper.jasper"]]></subreportExpression>

参数的使用有助于部署应用程序,例如,在java中,您可以计算应用程序的相对路径,并将其作为绝对路径传递给参数映射中的报表。

java中的示例(在参数映射中设置参数)。

parameterMap.put("SUBREPORT_DIR", new File("theRelativeSubReportDir").getAbsolutePath() + File.separator);

还有...请记住,当您更改子报表时,您总是需要重新编译成。jasper

 类似资料:
  • 我有一个要转换成CSV格式的XML。我使用Jasper Reports来转换它,并使用Jasper Studio来设计JRXML。 这是XML: 我希望CSV格式包含以下列: fields_exitence分为3个(nonMap、ux和两者),属性在

  • 我想用subreport创建一个简单的Jasper报表,但我无法使其工作。 选择提供一个结果(数据库是Oracle),但是子报表在从生成的repport中不可见。但报告的结尾是一个全新的空页。 你能告诉我这个例子有什么问题吗?我尝试了很多东西(子报表中的默认值,当No Data=所有节时,子报表标题中的No detaily设置,以及很多东西,我不记得了),但没有任何帮助。

  • 我有一个主报告,它在详细信息带中查询数据库中的项目列表,另一个详细信息带包含一个子报告,为每个记录呈现一次。我希望这第二个细节带只能在它的子报告不是空的时候呈现。 我试图将子报表中的REPORT_COUNT转换为返回变量,并将参数设置为,但是看起来返回变量是在带区呈现后计算出来的,因此即使正确返回也看不到变量。 我还能做什么? 这里的更新是主报告的JRXML:

  • 嗯,我有一个主报告和一个子报告,在主报告中我有两个细节带。在第一个细节区,我放置了“主数据源”(来自fillReport),在第二个细节区,我放置了子报告(来自param的数据源)。 解决方案 经过大量的研究,我发现我对“主报告”和“子报告”的概念是错误的。当我们有一个“主报表”(与主数据源相关联)时,正确的做法是所有“子报表”都直接与此相关联。因此,我创建了3个子报告,并像“param”一样传递

  • 我在Jaspersoft Studio中使用JavaBeans生成基本报告(主/子报告)时遇到问题。 我创建了TestMainReport.jrxml和TestSubreport.jrxml. TestMainReport。jrxml包含两个静态文本字段,在标题栏中标记为“标题”,在摘要栏中标记为“摘要”。 TestSubreport。jrxml包含两个静态文本字段,标题中的“子报告标题”和摘要栏

  • 目前,我正在使用JasperReports和DynamicJasper构建我的报告并打印它们。当我只使用单个jasper-files或jrxml-files时,所有的工作都很好。我还有一段代码,如果需要合并报表,它可以将所有JasperPrint-files合并为一个。然而,这并不是最理想的... 我可以使用一个.jasper或.jrxml文件作为主报表(它有一个页眉、一个页脚和n个空的详细信息带