use*_*322 2 jasper-reports subreport
我想简单地将一个值从子报告返回到主报告,但总是null在执行报告时显示。使用 iReport 5.1.0。
<?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="report4" language="groovy" pageWidth="595" pageHeight="842" columnWidth="555" leftMargin="20" rightMargin="20" topMargin="20" bottomMargin="20" uuid="ce028d85-f7e8-4abd-ad6b-e3b2ba04d14e">
<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["C:\\Users\\DellXFR\\"]]></defaultValueExpression>
</parameter>
<variable name="z" class="java.lang.Integer" calculation="System">
<variableExpression><![CDATA[8]]></variableExpression>
</variable>
<background>
<band splitType="Stretch"/>
</background>
<title>
<band height="79" splitType="Stretch"/>
</title>
<detail>
<band height="125" splitType="Stretch">
<subreport>
<reportElement uuid="0c501730-d98a-4982-9953-2939f127ad9e" x="40" y="10" width="200" height="100"/>
<connectionExpression><![CDATA[$P{REPORT_CONNECTION}]]></connectionExpression>
<returnValue subreportVariable="x" toVariable="z"/>
<subreportExpression><![CDATA[$P{SUBREPORT_DIR} + "report4_subreport1.jasper"]]></subreportExpression>
</subreport>
<textField evaluationTime="Band">
<reportElement uuid="9020a8d9-5799-4907-b8a3-704f41ffdcc0" x="399" y="73" width="100" height="20"/>
<textElement/>
<textFieldExpression><![CDATA[$V{z}]]></textFieldExpression>
</textField>
</band>
</detail>
<summary>
<band height="42" splitType="Stretch"/>
</summary>
</jasperReport>
Run Code Online (Sandbox Code Playgroud)
<?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="report4_subreport1" language="groovy" pageWidth="555" pageHeight="802" columnWidth="555" leftMargin="0" rightMargin="0" topMargin="0" bottomMargin="0" uuid="78290b3a-34c2-496e-86ff-e213ca2c1039">
<property name="ireport.zoom" value="1.0"/>
<property name="ireport.x" value="0"/>
<property name="ireport.y" value="0"/>
<queryString language="SQL">
<![CDATA[select * from ot;]]>
</queryString>
<field name="salscheme_id" class="java.lang.String">
<fieldDescription><![CDATA[]]></fieldDescription>
</field>
<field name="ot_amount" class="java.lang.Double">
<fieldDescription><![CDATA[]]></fieldDescription>
</field>
<variable name="x" class="java.lang.Integer">
<variableExpression><![CDATA[1]]></variableExpression>
</variable>
<group name="salscheme_id">
<groupExpression><![CDATA[$F{salscheme_id}]]></groupExpression>
</group>
<background>
<band splitType="Stretch"/>
</background>
<detail>
<band height="125" splitType="Stretch"/>
</detail>
</jasperReport>
Run Code Online (Sandbox Code Playgroud)
将变量从子报表传递到主报表,如下所示:
在主报告中,创建一个变量:
<variable name="subReportValue" class="java.lang.Integer"/>
Run Code Online (Sandbox Code Playgroud)
注意:不要没有设定计算值。
在子报表中,还要创建一个变量:
<variable name="returnValue" class="java.lang.Integer" calculation="First">
<variableExpression><![CDATA[$F{myField}]]></variableExpression>
</variable>
Run Code Online (Sandbox Code Playgroud)
设置计算和您想要返回的内容。注意:尊重主报表变量的class 值,它们需要是同一个 class。
在主报表中,在子报表标签中设置子报表返回值:
<returnValue subreportVariable="returnValue" toVariable="subReportValue"/>
Run Code Online (Sandbox Code Playgroud)如果你想把 放在subReportValue细节带中,只需要设置evalutationTime的textField,因此它需要在子报表之后(否则它仍然为空)。
<textField evaluationTime="Band">
<reportElement x="251" y="109" width="100" height="20"/>
<textElement lineSpacing="Single"/>
<textFieldExpression class="java.lang.Integer"><![CDATA[$V{subReportValue}]]></textFieldExpression>
</textField>
Run Code Online (Sandbox Code Playgroud)如果它不在evaluationTime="Report"用于分组的详细信息带设置中。要了解不同的evaluationTime,请参阅EvaluationTimeEnum
完成后重新编译子报告,因为主报告引用的是编译.jasper文件,而不是.jrxml源文件。
| 归档时间: |
|
| 查看次数: |
5700 次 |
| 最近记录: |