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

在ireport中显示独立于主数据源(主报表)的子报表

宇文温文
2023-03-14

嗯,我有一个主报告和一个子报告,在主报告中我有两个细节带。在第一个细节区,我放置了“主数据源”(来自fillReport),在第二个细节区,我放置了子报告(来自param的数据源)。

<?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="rf002" pageWidth="595" pageHeight="842" whenNoDataType="AllSectionsNoDetail" columnWidth="575" leftMargin="10" rightMargin="10" topMargin="10" bottomMargin="10" uuid="4436a245-e7f4-426f-aabc-806179a89e8a">
    <property name="ireport.zoom" value="1.0"/>
    <property name="ireport.x" value="0"/>
    <property name="ireport.y" value="84"/>
    <parameter name="pathSubreport" class="java.lang.String">
        <defaultValueExpression><![CDATA["/home/ronaldo/workspace/sender/src/main/webapp/WEB-INF/report/"]]></defaultValueExpression>
    </parameter>
    <parameter name="titulo" class="java.lang.String"/>
    <parameter name="endereco" class="java.lang.String"/>
    <parameter name="cep" class="java.lang.String"/>
    <parameter name="estado" class="java.lang.String"/>
    <parameter name="cidade" class="java.lang.String"/>
    <parameter name="razaoSocial" class="java.lang.String"/>
    <parameter name="pathLogomarca" class="java.lang.String"/>
    <parameter name="usuario" class="java.lang.String"/>
    <parameter name="dataFechamento" class="java.util.Date"/>
    <parameter name="SUBREPORT_DIR" class="java.lang.String" isForPrompting="false">
        <defaultValueExpression><![CDATA["/home/ronaldo/workspace/odontonew/src/main/webapp/WEB-INF/report/"]]></defaultValueExpression>
    </parameter>
    <parameter name="totaltt" class="java.lang.Double"/>
    <parameter name="dentista" class="br.com.odontonew.bean.Dentista"/>
    <parameter name="historicosCaixaDentista" class="java.lang.Object"/>
    <parameter name="historicosPagamentoOrcamento" class="java.lang.Object"/>
    <parameter name="parcelasAVencerHoje" class="java.lang.Object"/>
    <queryString>
        <![CDATA[]]>
    </queryString>
    <field name="nomePaciente" class="java.lang.String">
        <fieldDescription><![CDATA[orcamento.paciente.pessoaFisica.nome]]></fieldDescription>
    </field>
    <field name="dataHoraConsulta" class="java.sql.Timestamp">
        <fieldDescription><![CDATA[dataHoraAgendada]]></fieldDescription>
    </field>
    <field name="idConsulta" class="java.lang.Integer">
        <fieldDescription><![CDATA[id]]></fieldDescription>
    </field>
    <field name="nomeProcedimento" class="java.lang.String">
        <fieldDescription><![CDATA[itens.itemTabelaProcedimento.procedimento.nome]]></fieldDescription>
    </field>
    <field name="isConcluido" class="java.lang.Boolean">
        <fieldDescription><![CDATA[itens.concluido]]></fieldDescription>
    </field>
    <group name="consulta">
        <groupExpression><![CDATA[$F{idConsulta}]]></groupExpression>
        <groupHeader>
            <band height="33">
                <textField isBlankWhenNull="true">
                    <reportElement x="8" y="16" width="276" height="14" uuid="fd8d4206-2b32-4619-a340-95b4357b6a1a"/>
                    <textElement>
                        <font isBold="true"/>
                    </textElement>
                    <textFieldExpression><![CDATA[$F{nomePaciente}]]></textFieldExpression>
                </textField>
                <textField pattern="dd/MM/yyyy h.mm a" isBlankWhenNull="true">
                    <reportElement x="292" y="16" width="184" height="14" uuid="e7b1cb6b-c4c4-42ab-b028-69e720f43f1f"/>
                    <textElement>
                        <font isBold="true"/>
                    </textElement>
                    <textFieldExpression><![CDATA[$F{dataHoraConsulta}]]></textFieldExpression>
                </textField>
                <staticText>
                    <reportElement x="9" y="5" width="149" height="12" uuid="bf06788d-c15a-4547-8a6e-df2ae3be70ea"/>
                    <textElement>
                        <font size="8"/>
                    </textElement>
                    <text><![CDATA[Paciente da Consulta]]></text>
                </staticText>
                <staticText>
                    <reportElement x="292" y="5" width="149" height="12" uuid="4d788cff-e015-4085-a320-8924a6a6b48c"/>
                    <textElement>
                        <font size="8"/>
                    </textElement>
                    <text><![CDATA[Data e Hora da Consulta]]></text>
                </staticText>
            </band>
        </groupHeader>
    </group>
    <background>
        <band/>
    </background>
    <title>
        <band height="90" splitType="Stretch">
            <subreport>
                <reportElement stretchType="RelativeToBandHeight" x="0" y="0" width="575" height="90" uuid="0999674d-9841-41dd-97c2-226b2186b45e"/>
                <subreportParameter name="pathLogomarca">
                    <subreportParameterExpression><![CDATA[$P{pathLogomarca}]]></subreportParameterExpression>
                </subreportParameter>
                <subreportParameter name="cidade">
                    <subreportParameterExpression><![CDATA[$P{cidade}]]></subreportParameterExpression>
                </subreportParameter>
                <subreportParameter name="titulo">
                    <subreportParameterExpression><![CDATA[$P{titulo}]]></subreportParameterExpression>
                </subreportParameter>
                <subreportParameter name="cep">
                    <subreportParameterExpression><![CDATA[$P{cep}]]></subreportParameterExpression>
                </subreportParameter>
                <subreportParameter name="estado">
                    <subreportParameterExpression><![CDATA[$P{estado}]]></subreportParameterExpression>
                </subreportParameter>
                <subreportParameter name="usuario">
                    <subreportParameterExpression><![CDATA[$P{usuario}]]></subreportParameterExpression>
                </subreportParameter>
                <subreportParameter name="razaoSocial">
                    <subreportParameterExpression><![CDATA[$P{razaoSocial}]]></subreportParameterExpression>
                </subreportParameter>
                <subreportParameter name="endereco">
                    <subreportParameterExpression><![CDATA[$P{endereco}]]></subreportParameterExpression>
                </subreportParameter>
                <subreportExpression><![CDATA[$P{pathSubreport}+"headerTemplate.jasper"]]></subreportExpression>
            </subreport>
        </band>
    </title>
    <columnHeader>
        <band height="76">
            <rectangle>
                <reportElement x="0" y="27" width="575" height="49" backcolor="#DFDCDC" uuid="4e1f0879-74cc-46bf-8fb2-bb60ea002018"/>
                <graphicElement>
                    <pen lineWidth="0.0"/>
                </graphicElement>
            </rectangle>
            <staticText>
                <reportElement x="416" y="57" width="140" height="14" uuid="afd4b28f-8b51-43d1-a9a2-c4acbb1f6c63"/>
                <textElement textAlignment="Center">
                    <font isBold="true"/>
                </textElement>
                <text><![CDATA[Concluído]]></text>
            </staticText>
            <staticText>
                <reportElement x="7" y="57" width="397" height="14" uuid="2c8deaa8-9d46-4c31-a542-e41b7f959615"/>
                <textElement>
                    <font isBold="true"/>
                </textElement>
                <text><![CDATA[Procedimento]]></text>
            </staticText>
            <staticText>
                <reportElement x="9" y="34" width="397" height="14" uuid="6578bf15-8e39-4a0d-9fc6-5c45fb5ad566"/>
                <textElement>
                    <font isBold="true" isItalic="true" isUnderline="false"/>
                </textElement>
                <text><![CDATA[Consultas Realizadas]]></text>
            </staticText>
            <textField pattern="dd/MM/yyyy" isBlankWhenNull="true">
                <reportElement x="120" y="5" width="165" height="14" uuid="4a835664-78da-4231-b7de-a21b730b4a7e"/>
                <textFieldExpression><![CDATA[$P{dataFechamento}]]></textFieldExpression>
            </textField>
            <staticText>
                <reportElement x="6" y="5" width="112" height="14" uuid="8420da3e-43c6-49a6-a688-89d50b5095a7"/>
                <textElement>
                    <font isBold="true"/>
                </textElement>
                <text><![CDATA[Data Fechamento:]]></text>
            </staticText>
        </band>
    </columnHeader>
    <detail>
        <band height="21">
            <textField isBlankWhenNull="true">
                <reportElement x="10" y="4" width="394" height="14" uuid="0f1109a2-30d7-4789-bb6f-54d066856cf3"/>
                <textFieldExpression><![CDATA[$F{nomeProcedimento}]]></textFieldExpression>
            </textField>
            <textField isBlankWhenNull="true">
                <reportElement x="425" y="1" width="131" height="14" uuid="6b67a6ee-6732-48b6-b79e-12f6e371c35e"/>
                <textFieldExpression><![CDATA[$F{isConcluido} ? "Sim" : "Não"]]></textFieldExpression>
            </textField>
        </band>
        <band height="173">
            <subreport>
                <reportElement x="0" y="0" width="575" height="73" uuid="871e12c8-2633-4d76-8d65-ce253710c4eb"/>
                <dataSourceExpression><![CDATA[$P{historicosPagamentoOrcamento}]]></dataSourceExpression>
                <subreportExpression><![CDATA[$P{SUBREPORT_DIR} + "rf002_historicosPagamentoOrcamento.jasper"]]></subreportExpression>
            </subreport>
            <subreport>
                <reportElement x="0" y="94" width="575" height="69" uuid="338fd0af-a2ca-453e-8777-0f49698ebb44"/>
                <dataSourceExpression><![CDATA[$P{historicosCaixaDentista}]]></dataSourceExpression>
                <subreportExpression><![CDATA[$P{SUBREPORT_DIR} + "rf002_historicosCaixa.jasper"]]></subreportExpression>
            </subreport>
        </band>
    </detail>
    <lastPageFooter>
        <band height="185" splitType="Stretch">
            <textField evaluationTime="Report">
                <reportElement x="516" y="155" width="40" height="20" uuid="3cd272a2-adde-48f0-9f1e-5d7f007b9a1f"/>
                <textFieldExpression><![CDATA[" " + $V{PAGE_NUMBER}]]></textFieldExpression>
            </textField>
            <textField>
                <reportElement x="436" y="155" width="80" height="20" uuid="7cc86ec7-b620-4c95-9147-1410b1a22054"/>
                <textElement textAlignment="Right"/>
                <textFieldExpression><![CDATA["Page "+$V{PAGE_NUMBER}+" of"]]></textFieldExpression>
            </textField>
        </band>
    </lastPageFooter>
</jasperReport>

解决方案

经过大量的研究,我发现我对“主报告”和“子报告”的概念是错误的。当我们有一个“主报表”(与主数据源相关联)时,正确的做法是所有“子报表”都直接与此相关联。因此,我创建了3个子报告,并像“param”一样传递所有数据源。在JasperManagerFillReport中,我传递了一个“JremptyDataSource”来避免空白页,因为“Main DataSource”没有任何内容。

共有1个答案

张嘉佑
2023-03-14

可以尝试将Whennodata属性设置为nodatasection。然后,在no data区域添加所需内容。

此外,检查当您作为dataSourceExpression发送的参数为空(如果为空)时子报表的情况。

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

  • 使用的开发IDE:Jaspersoft Studio 我试图使用下面的表达式将主报表数据源用于表数据集,但没有得到任何数据。 请说明如何将数据源从报表传递到表。我对jasper报告很陌生。样品会很有用。 JRXML: Json数据: 我已经添加了我试图加载的JRXML和Json。当我在数据集中传递dataSourceExpression时,我只得到2行,但在源数据中有3行。请帮我解决这个问题

  • 你好,在我解释我的问题之前,我会告诉你我想回答什么。 我正在尝试创建一个子报告,显示用户的不同收入。一个用户可以收到多次捐赠,出售了多栋房子/房产,赢得了比赛等。所有这些操作都有更多关于他们收到多少钱、缴纳的税款的详细信息,… 现在,我正在尝试在一个细节中显示用户的详细信息(姓名,姓氏,..;)。这行得通。下一个细节带将用于捐赠。我创建了一个子报表,在其中指定了此部分的布局。但是,此子报表所需的数

  • 我有一个主报告和两个子报告。我正在使用自定义数据源来获取报表内容。但是在jasper studio中预览主报表时,只显示一个子报表(无论哪个子报表先出现)。 为(如)。只显示report1.jrxml,如果删除子报表,则显示report2.jrxml。 我已经试用了以下方法: 将子报告放置在不同的详细信息带中。 将“位置类型”设置为“浮动”。 将“运行到底部”属性设置为“true”。

  • 我想在iReport中将数据集从主报表转移到子报表。在Odoo版本中,我就这样使用过。 现在我使用 Odoo 版本 8 和版本 8 的新jasper_reports模块。所以我将一些jar文件从jasper_reports模块转移到iReport IDE。后。。。来自Odoo版本7的所有报告都导致了Groovy错误。这就是为什么我在iReport中将Groovy语言改为Java语言的原因。但。。。

  • 我正在尝试使用 iReport 设计器(两者都具有空数据源)从主报告(report1.jrxml)创建一个子报告(report1_subreport3.jrxml)。主报表详细信息带包含静态文本(“主报表”),子报表元素和子报表在其相应的详细信息带中包含静态文本(“子报表”) 但单击主报表的预览选项卡仅显示静态文本“主报表”,而不显示子报表(“子报表”)的静态文本。 我还浏览了http://com