我在那里,我通过从主报告,报告日期为子报告JasperReport的 。 这工作得很好。 我也有另外一个我在哪里传递相同的参数,以具有多个子报表的子报告。 当我在Ireports预览所有的网页上显示为空白,这意味着子子报表被调用,但因为所有的子子报告SQL是在报告日期空调不被通过的报告日期。 我怎样才能得到报告日期字段的子子报表? 当我预览报告日期子报表和类型的所有报告日期的工作全部四个页面填入正确的数据。
Answer 1:
按照下面的步骤将参数传递到子报表:
- 创建主报表参数,如
DATE_PARAM
。 - 打开子报告,并创建一个具有相同的名称和相同类型的参数。
- 返回主报告
- 在子报告,请选择属性右键点击
- 选择参数
- 从主报表添加参数与参数名称相同的参数名称的子报告
该参数是从子报表的主要报告通过。
Answer 2:
我的猜测是,他们使用的是默认值。
假设参数在主报告的名称TEST_DATE
和小组报告的名称是TEST_DATE2
那么你需要添加下面的口之间和关闭subreport
中的XML元素:
<subreportParameter name="TEST_DATE2">
<subreportParameterExpression><![CDATA[$P{TEST_DATE}]]></subreportParameterExpression>
</subreportParameter>
为了完整起见,这里是有一个主报告和子报表,应由只是改变了工作价值的例子SUBREPORT_DIR
指向你让他们放在哪里。
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="7e2bc622-d768-437e-8c33-fc777bc06f8c">
<property name="ireport.zoom" value="1.0"/>
<property name="ireport.x" value="0"/>
<property name="ireport.y" value="0"/>
<parameter name="TEST_DATE" class="java.util.Date"/>
<parameter name="SUBREPORT_DIR" class="java.lang.String" isForPrompting="false">
<defaultValueExpression><![CDATA["C:\\Reports\\"]]></defaultValueExpression>
</parameter>
<pageHeader>
<band height="83" splitType="Stretch">
<textField>
<reportElement uuid="4a2cf434-4473-48db-a89f-17a19d25cc4c" x="0" y="0" width="100" height="20"/>
<textElement/>
<textFieldExpression><![CDATA[$P{TEST_DATE}]]></textFieldExpression>
</textField>
<subreport>
<reportElement uuid="54c02e96-6d47-49db-9b9c-58e1dd153242" x="0" y="30" width="200" height="35"/>
<subreportParameter name="TEST_DATE2">
<subreportParameterExpression><![CDATA[$P{TEST_DATE}]]></subreportParameterExpression>
</subreportParameter>
<connectionExpression><![CDATA[$P{REPORT_CONNECTION}]]></connectionExpression>
<subreportExpression><![CDATA[$P{SUBREPORT_DIR} + "report1_subreport1.jasper"]]></subreportExpression>
</subreport>
</band>
</pageHeader>
</jasperReport>
report1_subreport1.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_subreport1" language="groovy" pageWidth="200" pageHeight="35" whenNoDataType="AllSectionsNoDetail" columnWidth="200" leftMargin="0" rightMargin="0" topMargin="0" bottomMargin="0" uuid="3cedac90-63cb-43cb-9d0f-e401543e65dd">
<property name="ireport.zoom" value="1.0"/>
<property name="ireport.x" value="0"/>
<property name="ireport.y" value="0"/>
<parameter name="TEST_DATE2" class="java.util.Date" isForPrompting="false"/>
<pageHeader>
<band height="35" splitType="Stretch">
<textField>
<reportElement uuid="ca7f3da6-79f0-4d95-92db-6c5dbf777df9" x="0" y="15" width="100" height="20"/>
<textElement/>
<textFieldExpression><![CDATA[$P{TEST_DATE2}]]></textFieldExpression>
</textField>
</band>
</pageHeader>
</jasperReport>
Answer 3:
如果您在使用iReport创建报表然后打开iReport的主报告,并选择Subreport
,转到property
报告部分,单击Parameters
属性,然后单击Copy from master
选项卡。 从那里,你可以选择你想传递给子报表的参数。
文章来源: Passing parameters from main report to subreport in Jasper