jasperReport/iReport 子报表显示空白(未显示)
Posted
技术标签:
【中文标题】jasperReport/iReport 子报表显示空白(未显示)【英文标题】:jasperReport/iReport subreport shows blank (not displayed) 【发布时间】:2012-11-08 10:36:15 【问题描述】:我正在尝试使用 iReport 设计器(report1.jrxml)从主报告创建子报告(report1_subreport3.jrxml)都具有 空数据源) 。主报表detail band包含静态文本(“Main Report”),子报表元素和子报表在其对应的detail band(”中包含静态文本子报告”)
但是点击主报表的预览标签只显示静态文本“主报表”不显示子报表的静态文本(“子报表”)。
我也浏览了链接http://community.jaspersoft.com/questions/524978/empty-subreport-xml-datasource-ireport,但仍然遇到问题。
下面是report1.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="report1" language="groovy" pageWidth="595" pageHeight="842" columnWidth="555" leftMargin="20" rightMargin="20" topMargin="20" bottomMargin="20" uuid="20036b98-ef64-4dea-8345-b89bcd8f2671">
<property name="ireport.zoom" value="1.0"/>
<property name="ireport.x" value="0"/>
<property name="ireport.y" value="68"/>
<parameter name="SUBREPORT_DIR" class="java.lang.String" isForPrompting="false">
<defaultValueExpression><![CDATA["D:\\soapReport\\jasperReport\\"]]></defaultValueExpression>
</parameter>
<background>
<band splitType="Stretch"/>
</background>
<title>
<band splitType="Stretch"/>
</title>
<pageHeader>
<band splitType="Stretch"/>
</pageHeader>
<columnHeader>
<band splitType="Stretch"/>
</columnHeader>
<detail>
<band splitType="Stretch">
<staticText>
<reportElement uuid="d49ee6bf-1a13-41bb-9feb-f0fb2ec414f2" x="71" y="28" />
<textElement/>
<text><![CDATA[Main Report]]></text>
</staticText>
<subreport>
<reportElement uuid="364d3c38-a0a1-4fa5-b0bf-12b22314ac5e" x="311" y="14" />
<connectionExpression><![CDATA[$PREPORT_CONNECTION]]></connectionExpression>
<subreportExpression><![CDATA[$PSUBREPORT_DIR + "report1_subreport3.jasper"]]></subreportExpression>
</subreport>
</band>
</detail>
<columnFooter>
<band splitType="Stretch"/>
</columnFooter>
<pageFooter>
<band splitType="Stretch"/>
</pageFooter>
<summary>
<band splitType="Stretch"/>
</summary>
</jasperReport>
以下是report1_subreport3.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="report1_subreport3" language="groovy" pageWidth="555" pageHeight="802" columnWidth="555" leftMargin="0" rightMargin="0" topMargin="0" bottomMargin="0" uuid="7ca2d973-972c-4c56-8d5e-503b32b4afc6">
<property name="ireport.zoom" value="1.0"/>
<property name="ireport.x" value="0"/>
<property name="ireport.y" value="0"/>
<background>
<band splitType="Stretch"/>
</background>
<title>
<band splitType="Stretch"/>
</title>
<pageHeader>
<band splitType="Stretch"/>
</pageHeader>
<columnHeader>
<band splitType="Stretch"/>
</columnHeader>
<detail>
<band splitType="Stretch">
<staticText>
<reportElement uuid="5f488fe4-f9f7-4f12-9c1e-812661026bd7" x="222" y="50" />
<textElement/>
<text><![CDATA[Sub Report]]></text>
</staticText>
</band>
</detail>
<columnFooter>
<band splitType="Stretch"/>
</columnFooter>
<pageFooter>
<band splitType="Stretch"/>
</pageFooter>
<summary>
<band splitType="Stretch"/>
</summary>
</jasperReport>
在此先感谢您提供的任何帮助...
感谢 Gopi 的更改,但 仍然显示空白 subreport。 以下是主要报告
<?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="report1" pageWidth="595" pageHeight="842" columnWidth="555" leftMargin="20" rightMargin="20" topMargin="20" bottomMargin="20" uuid="748f862c-3467-4c8c-89f6-04a571192482">
<property name="ireport.zoom" value="1.0"/>
<property name="ireport.x" value="0"/>
<property name="ireport.y" value="0"/>
<parameter name="SUBREPORT_DIR" class="java.lang.String" isForPrompting="false">
<defaultValueExpression><![CDATA["D:/soapReport/jasperReport/"]]></defaultValueExpression>
</parameter>
<queryString>
<![CDATA[]]>
</queryString>
<background>
<band splitType="Stretch"/>
</background>
<title>
<band splitType="Stretch"/>
</title>
<pageHeader>
<band splitType="Stretch"/>
</pageHeader>
<columnHeader>
<band splitType="Stretch"/>
</columnHeader>
<detail>
<band splitType="Stretch">
<staticText>
<reportElement uuid="17f2cfc8-497a-4676-b83a-acf55bccac04" x="33" y="15" />
<textElement/>
<text><![CDATA[Main Report]]></text>
</staticText>
</band>
</detail>
<columnFooter>
<band splitType="Stretch">
<subreport>
<reportElement uuid="40f53bea-c9eb-46a7-b4fc-3d592da3ef90" x="234" y="17" />
<connectionExpression><![CDATA[$PREPORT_CONNECTION]]></connectionExpression>
<subreportExpression><![CDATA["D:/soapReport/jasperReport/report1_subreport1.jasper"]]></subreportExpression>
</subreport>
</band>
</columnFooter>
<pageFooter>
<band splitType="Stretch"/>
</pageFooter>
<summary>
<band splitType="Stretch"/>
</summary>
</jasperReport>
以下是子报告
<?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="report1_subreport1" language="groovy" pageWidth="555" pageHeight="802" whenNoDataType="AllSectionsNoDetail" columnWidth="555" leftMargin="0" rightMargin="0" topMargin="0" bottomMargin="0" uuid="62bf7fb7-8145-4aa6-b963-c98eefac9862">
<property name="ireport.zoom" value="1.0"/>
<property name="ireport.x" value="0"/>
<property name="ireport.y" value="0"/>
<background>
<band splitType="Stretch"/>
</background>
<columnHeader>
<band splitType="Stretch">
<staticText>
<reportElement uuid="9bf9eafc-c1e0-49fa-8bb8-ed6c496498da" x="213" y="20" />
<textElement/>
<text><![CDATA[Sub Report]]></text>
</staticText>
</band>
</columnHeader>
</jasperReport>
如果我遗漏了什么,请帮助我...
【问题讨论】:
【参考方案1】: 将您的子报告字段放在除详细信息带之外的任何其他带中,并将whenNoDataType="AllSectionsNoDetail"
添加到您的 xml 文件中。 将其添加到<JasperReport>
标记中的其他报告属性中。 您还可以使用 GUI 设计器添加。 打开您的子报告并在属性编辑器中,在选项末尾您将找到 When No Data
选项。从可用选项列表中选择All Sections with No Detail
。
主要报告:
<?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="report1" pageWidth="595" pageHeight="842" columnWidth="555" leftMargin="20" rightMargin="20" topMargin="20" bottomMargin="20">
<property name="ireport.zoom" value="1.0"/>
<property name="ireport.x" value="0"/>
<property name="ireport.y" value="12"/>
<parameter name="SUBREPORT_DIR" class="java.lang.String" isForPrompting="false">
<defaultValueExpression><![CDATA["/home/qualian/Desktop/gopi/prjreport/"]]></defaultValueExpression>
</parameter>
<queryString>
<![CDATA[]]>
</queryString>
<background>
<band splitType="Stretch"/>
</background>
<title>
<band splitType="Stretch"/>
</title>
<pageHeader>
<band splitType="Stretch"/>
</pageHeader>
<columnHeader>
<band splitType="Stretch"/>
</columnHeader>
<detail>
<band splitType="Stretch">
<subreport>
<reportElement x="33" y="56" />
<connectionExpression><![CDATA[$PREPORT_CONNECTION]]></connectionExpression>
<subreportExpression class="java.lang.String"><![CDATA[$PSUBREPORT_DIR+"report3_subreport1.jasper"]]></subreportExpression>
</subreport>
<staticText>
<reportElement x="33" y="15" />
<textElement/>
<text><![CDATA[Main Report]]></text>
</staticText>
</band>
</detail>
<columnFooter>
<band splitType="Stretch"/>
</columnFooter>
<pageFooter>
<band splitType="Stretch"/>
</pageFooter>
<summary>
<band splitType="Stretch"/>
</summary>
子报告:
<?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="report1_subreport3" language="groovy" pageWidth="555" pageHeight="802" whenNoDataType="AllSectionsNoDetail" columnWidth="555" leftMargin="0" rightMargin="0" topMargin="0" bottomMargin="0">
<property name="ireport.zoom" value="1.0"/>
<property name="ireport.x" value="0"/>
<property name="ireport.y" value="0"/>
<background>
<band splitType="Stretch"/>
</background>
<columnHeader>
<band splitType="Stretch">
<staticText>
<reportElement x="107" y="12" />
<textElement/>
<text><![CDATA[Sub Report]]></text>
</staticText>
</band>
</columnHeader>
这就像一个魅力。希望这可以帮助。
【讨论】:
嗨,Gopi,感谢您的输入...我尝试了您的步骤 1. 在另一个波段 (columnfooter) 中添加子报表和 2. 在使用我在主报告中包含的以下标签解决了上述问题。我们需要使用空数据源(new net.sf.jasperreports.engine.JREmptyDataSource())
SUBREPORT.jrxml
<?xml version="1.0" encoding="UTF-8"?>
<!-- Created with Jaspersoft Studio version 6.3.1.final using JasperReports Library version 6.3.1 -->
<!-- 2016-12-15T10:33:58 -->
<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="HYPERLINKS_SUBREPORT" pageWidth="595" pageHeight="842" columnWidth="595" leftMargin="0" rightMargin="0" topMargin="0" bottomMargin="0" uuid="ad9606b1-969d-4340-a7eb-61dc30ec8f0d">
<property name="com.jaspersoft.studio.data.defaultdataadapter" value="One Empty Record"/>
<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>
<detail>
<band splitType="Stretch">
<staticText>
<reportElement x="16" y="47" uuid="866e60e7-16a0-4fea-b56f-ca4143e98fec"/>
<text><![CDATA[Testing text]]></text>
</staticText>
</band>
</detail>
main_report.jrxml 的 XML
<subreport>
<reportElement positionType="Float" x="0" y="220" uuid="62463158-73b1-4089-b66c-633d3a987649"/>
<dataSourceExpression><![CDATA[new net.sf.jasperreports.engine.JREmptyDataSource()]]></dataSourceExpression>
<subreportExpression><![CDATA["SUBREPORT.jasper"]]></subreportExpression>
</subreport>
同样可以使用 Jaspersoft Studio 实现。
【讨论】:
编辑 subreport.jrxml 文件是创建文件后的唯一选项。或者,您也可以在主文件中选择子报表元素后,通过编辑参数表达式来设置该值。 将元素<dataSourceExpression><![CDATA[new net.sf.jasperreports.engine.JREmptyDataSource()]]></dataSourceExpression>
放在 jasper studio 上,然后将其清除。可能不在正确的 XSD 中。
忘记我上面的评论,当我们将它从 GUI 和 XML 显示中放置时,就可以了。【参考方案3】:
任何对 jasper reports studio 6.3.0 不显示子报表有问题的人都应尝试更改子报表中的参数名称,然后更新主报表子报表小部件“编辑参数”选项中的参数连接以匹配新参数姓名。也可以避免下划线即。 “USER_ID”。
【讨论】:
【参考方案4】:在我的情况下,问题是由 JasperReportStudio 在保存子报表后未构建 .jasper 文件引起的。这导致主报告始终包含我创建的子报告的第一个版本(其中有一些错误,因此没有显示任何内容)。
解决方法是每次保存后按Ctrl-S再按Ctrl-B。这会重建子报表 .jasper 文件并导致它在主报表的预览中正确刷新。
【讨论】:
以上是关于jasperReport/iReport 子报表显示空白(未显示)的主要内容,如果未能解决你的问题,请参考以下文章
使用JasperReport+iReport生成报表出现一个问题,请各位高手帮忙看一下!急!
请教一些关于JasperReport+iReport的相关问题,各位前辈帮帮忙.