【问题标题】:Subreport variable always return null子报表变量始终返回 null
【发布时间】:2021-04-11 18:26:35
【问题描述】:

我需要在主报表中放置一个变量,该变量的值来自子报表。我按照网上的说明进行操作,但我总是得到空值。为了测试,我将“18”放在子报表变量的表达式中,但返回null。

有人可以帮助我吗?我会把JRXML放在下面。

我在主报告中创建了一个变量 var1:

  1. 名称:var1
  2. 计算:系统
  3. 重置类型:报告
  4. 增量类型:无

在子报表中,我创建了变量 returnValue

  1. 计算:无计算函数
  2. 表达式:18
  3. 增量类型:无
  4. 重置类型:报告

在master中,我配置了返回值:

  1. 来自变量:returnValue
  2. 到变量:var1
  3. 计算类型:无

以下两个xml文件


大师

<?xml version="1.0" encoding="UTF-8"?>
<!-- Created with Jaspersoft Studio version 6.6.0.final using JasperReports Library version 4.0.2  -->
<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="master" pageWidth="595" pageHeight="842" columnWidth="555" leftMargin="20" rightMargin="20" topMargin="20" bottomMargin="20">
    <property name="com.jaspersoft.studio.data.defaultdataadapter" value="One Empty Record"/>
    <variable name="var1" class="java.lang.Integer" calculation="System"/>
    <title>
        <band height="79" splitType="Stretch">
            <staticText>
                <reportElement x="153" y="26" width="100" height="30"/>
                <text><![CDATA[MASTER]]></text>
            </staticText>
        </band>
    </title>
    <summary>
        <band height="246" splitType="Stretch">
            <subreport>
                <reportElement x="80" y="10" width="360" height="50"/>
                <connectionExpression><![CDATA[$P{REPORT_CONNECTION}]]></connectionExpression>
                <returnValue subreportVariable="returnValue" toVariable="var1"/>
                <subreportExpression><![CDATA["sub1.jasper"]]></subreportExpression>
            </subreport>
            <textField>
                <reportElement x="149" y="147" width="100" height="30"/>
                <textFieldExpression><![CDATA[$V{var1}]]></textFieldExpression>
            </textField>
        </band>
    </summary>
</jasperReport>

子报告

<?xml version="1.0" encoding="UTF-8"?>
<!-- Created with Jaspersoft Studio version 6.6.0.final using JasperReports Library version 4.0.2  -->
<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="sub1" pageWidth="595" pageHeight="842" columnWidth="555" leftMargin="20" rightMargin="20" topMargin="20" bottomMargin="20">
    <variable name="returnValue" class="java.lang.Integer">
        <variableExpression><![CDATA[18]]></variableExpression>
    </variable>
    <title>
        <band height="79" splitType="Stretch">
            <staticText>
                <reportElement x="212" y="24" width="100" height="30"/>
                <text><![CDATA[SUB 1]]></text>
            </staticText>
        </band>
    </title>
</jasperReport>

【问题讨论】:

    标签: jasper-reports subreport


    【解决方案1】:
    1. 一个问题是子报表永远不会被执行,因为它的主dataset 没有返回任何行。所以把子报表的When No Data Type&lt;NULL&gt;改成All Sections No Detail-

    1. 其次,子报表中的变量returnValue 具有Reset typeNone -

    1. 最后,使用TextField 渲染的变量var1 应该有Evaluation Time 作为Report -

    以下是更新的 JRXML -

    大师

    <?xml version="1.0" encoding="UTF-8"?>
    <!-- Created with Jaspersoft Studio version 6.15.0.final using JasperReports Library version 6.15.0-dd49bfb94918336b8321d5507193f0169ead4e95  -->
    <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="master" pageWidth="595" pageHeight="842" columnWidth="555" leftMargin="20" rightMargin="20" topMargin="20" bottomMargin="20" uuid="d1a326d7-0db4-41f6-9791-6c0abc454731">
        <property name="com.jaspersoft.studio.data.defaultdataadapter" value="One Empty Record"/>
        <variable name="var1" class="java.lang.Integer" calculation="System"/>
        <title>
            <band height="79" splitType="Stretch">
                <staticText>
                    <reportElement x="153" y="26" width="100" height="30" uuid="ccc1c45e-e056-4a8e-8adc-cebefd388bc9"/>
                    <text><![CDATA[MASTER]]></text>
                </staticText>
            </band>
        </title>
        <summary>
            <band height="246" splitType="Stretch">
                <subreport>
                    <reportElement x="80" y="10" width="360" height="50" uuid="e251bfe7-5e81-4b79-9bc6-5f0e6c1d9555"/>
                    <connectionExpression><![CDATA[$P{REPORT_CONNECTION}]]></connectionExpression>
                    <returnValue subreportVariable="returnValue" toVariable="var1"/>
                    <subreportExpression><![CDATA["sub.jasper"]]></subreportExpression>
                </subreport>
                <textField evaluationTime="Report">
                    <reportElement x="149" y="147" width="100" height="30" uuid="24c3289e-f7a5-4137-9254-1fa2605f6741"/>
                    <textFieldExpression><![CDATA[$V{var1}]]></textFieldExpression>
                </textField>
            </band>
        </summary>
    </jasperReport>
    
    

    子报告

    <?xml version="1.0" encoding="UTF-8"?>
    <!-- Created with Jaspersoft Studio version 6.15.0.final using JasperReports Library version 6.15.0-dd49bfb94918336b8321d5507193f0169ead4e95  -->
    <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="sub1" pageWidth="595" pageHeight="842" whenNoDataType="AllSectionsNoDetail" columnWidth="555" leftMargin="20" rightMargin="20" topMargin="20" bottomMargin="20" uuid="97bfa906-b658-45f6-aff8-3bfa505251b3">
        <variable name="returnValue" class="java.lang.Integer" resetType="None">
            <variableExpression><![CDATA[18]]></variableExpression>
        </variable>
        <title>
            <band height="79" splitType="Stretch">
                <staticText>
                    <reportElement x="212" y="24" width="100" height="30" uuid="9332a235-2823-4b53-b6f8-0a7c56d58aee"/>
                    <text><![CDATA[SUB 1]]></text>
                </staticText>
            </band>
        </title>
    </jasperReport>
    
    

    【讨论】:

      猜你喜欢
      • 2016-05-31
      • 2015-08-15
      • 2012-03-18
      • 2016-11-04
      • 2016-07-28
      • 2010-11-08
      • 2017-11-26
      • 2015-02-23
      • 2017-11-16
      相关资源
      最近更新 更多