Переменная подотчета всегда возвращает значение null

Мне нужно поместить в главный отчет переменную, значение которой взято из подотчета. Я следовал инструкциям из Интернета, но всегда получал ноль. Для тестирования я ввел 18 в выражение переменной подотчета, но вернул ноль.

Кто-нибудь может мне помочь? Я помещу JRXML ниже.

Я создал переменную var1 в главном отчете:

  1. Имя: var1
  2. Расчет: Система
  3. Тип сброса: Отчет
  4. Тип приращения: Нет

В подотчете я создал переменную returnValue

  1. Расчет: без функции расчета
  2. Выражение: 18
  3. Тип приращения: Нет
  4. Тип сброса: Отчет

В мастере настроил возвращаемое значение:

  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>

person richardnew    schedule 06.01.2021    source источник


Ответы (1)


  1. Одна из проблем заключается в том, что подчиненный отчет никогда не запускается, поскольку его основной dataset не возвращает ни одной строки. Поэтому измените When No Data Type подотчета с <NULL> на All Sections No Detail -

введите описание изображения здесь

  1. Во-вторых, переменная returnValue в дополнительном отчете имеет Reset type как None -

введите описание изображения здесь

  1. Наконец, переменная var1, отображаемая с использованием TextField, должна иметь 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>

person Nikhil Patil    schedule 06.01.2021