【发布时间】:2016-10-05 05:07:54
【问题描述】:
我的图表报告使用了 Java.util.collection 类型的参数。当我尝试在组带中使用此图表作为具有类似 Java.util.collection 类型参数的主报表的子报表时,图表值会在组内迭代。例如,如果图表在两个单独的页面中显示 L1 和 L2 的值。但是,当将值 L1 添加到主报表时,子报表会同时显示 L1 和 L2 而不仅仅是 L1。
当参数作为 L1 传递时,我能否仅显示子报表中的 L1,而不是组带中的 L&L2?
仅供参考,使用 Jaspersoft Studio 5.6.1
编辑:
假设我从主报告中传递 2 个项目 P1 和 P2 作为参数,现在我得到的结果是:
- 第一页主报表数据P1
- 子报表数据P1
- 子报表数据P2
- 第 2 页主报告数据 P2
- 子报表数据P1
- 子报表数据P2
但是,想要的结果应该是这样的:
- 第一页主报表数据P1
- 子报表数据P1
- 第 2 页主报告数据 P2
- 子报表数据P2。
我已在其中一个组标题中添加了子报表。
主要报告:
<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="test_subreport" pageWidth="595" pageHeight="842" columnWidth="555" leftMargin="20" rightMargin="20" topMargin="20" bottomMargin="20" uuid="d2616041-39f3-44ce-a1e4-4ce5a6a1593c">
<property name="com.jaspersoft.studio.data.defaultdataadapter" value="Dev DB Conn" />
<parameter name="param_project" class="java.util.collection" nestedType="java.lang.Integer">
<parameterDescription>
<![CDATA[]]>
</parameterDescription>
</parameter>
<queryString language="SQL">
<![CDATA[SELECT
i.id prid,c.INUSAGE,d.CURRUSAGE
FROM
project table i, custom table c
where i.id = c.id and $X{IN,I.id,param_project}
]]>
</queryString>
<field name="prid" class="java.math.BigDecimal" />
<field name="INUSAGE" class="java.math.BigDecimal" />
<field name="CURRUSAGE" class="java.math.BigDecimal" />
<group name="Group1">
<groupExpression>
<![CDATA[$F{INVID}]]>
</groupExpression>
</group>
<columnHeader>
<band height="210">
<textField>
<reportElement x="0" y="80" width="80" height="30" uuid="263d8d17-1c40-4709-ba8f-76e27a976c75" />
<textFieldExpression>
<![CDATA[$F{prid}]]>
</textFieldExpression>
</textField>
<subreport>
<reportElement isPrintRepeatedValues="false" x="80" y="2" width="200" height="200" uuid="da630714-b937-493c-9db5-a4baa7128f3d" />
<subreportParameter name="param_invID">
<subreportParameterExpression>
<![CDATA[$P{param_project}]]>
</subreportParameterExpression>
</subreportParameter>
<connectionExpression>
<![CDATA[$P{REPORT_CONNECTION}]]>
</connectionExpression>
<subreportExpression>
<![CDATA["Workload1_added_collection_group1.jasper"]]>
</subreportExpression>
</subreport>
</band>
</columnHeader>
子报告链接:subreport
谢谢
Sreeram
【问题讨论】:
-
请edit您的问题并添加
jrxml信息以及屏幕截图(如果可能)。你想要的方式是什么?你把它放在主要报告的什么地方? -
托比,更新了问题。添加了 jrxml。假设我从主报表传递 2 个项目 P1 和 P2 作为参数,现在我得到的结果是,第一页主报表数据 P1,子报表数据 P1,子报表数据 P2 第二页主报表数据 P2,子报表数据 P1 , 子报表数据 P2 但是,期望的结果应该是这样的,第一页主报表数据 P1,子报表数据 P1 第二页主报表数据 P2,子报表数据 P2。我在其中一个组标题中添加了子报表.
-
这和子报表有关系吗?通常子报表应该只获取它应该显示的项目,例如P1 的“P1 ID”和 P2 的“P2 ID”。但是,如果您提供一个集合,它将始终在数据集合中循环。
-
感谢托比,我将图表直接添加到主报告中,它起作用了。现在我有另一个问题。我有两个关于主要报告的子报告。对于多值参数输入(类型:集合),第一个子报表应该跟在第一个输入的第二个报表之后,对于第二个输入,第一个子报表应该跟在第二个子报表之后。但在我的情况下,它打印第一个sureport的所有值,然后打印第二个子报表的所有值。我怎样才能使它成为一个正确的报告?这是放置问题吗,因为我将子报表放置在组标题中
-
没问题。请在此评论中使用您的描述打开一个新问题。
标签: collections jasper-reports subreport