Como somar os valores retornados por um sub-relatório colocado na faixa de detalhes?
Eu tenho um relatório e um sub-relatório que basicamente imprimem isso:
Aqui está o código para o relatório principal:
<jasperReport>
<queryString><![CDATA[
select 1 as "RECORD", 'A' as "GROUP"
from dual
union all
select 2, 'A'
from dual
union all
select 3, 'B'
from dual
union all
select 4, 'B'
from dual]]>
</queryString>
<field name="RECORD" class="java.math.BigDecimal"/>
<field name="GROUP" class="java.lang.String"/>
<variable name="return" class="java.math.BigDecimal"/>
<group name="group">
<groupExpression><![CDATA[$F{GROUP}]]></groupExpression>
<groupFooter>
<band height="20">
<staticText>
<text><![CDATA[End of group ]]></text>
</staticText>
<textField>
<textFieldExpression><![CDATA[$F{GROUP}]]></textFieldExpression>
</textField>
<staticText>
<text><![CDATA[The sum of returned values for the group]]></text>
</staticText>
</band>
</groupFooter>
</group>
<detail>
<band height="20">
<staticText>
<text><![CDATA[Record]]></text>
</staticText>
<textField>
<textFieldExpression><![CDATA[$F{RECORD}]]></textFieldExpression>
</textField>
<subreport>
<connectionExpression><![CDATA[$P{REPORT_CONNECTION}]]></connectionExpression>
<returnValue subreportVariable="return" toVariable="return"/>
<subreportExpression><![CDATA["subreport.jasper"]]></subreportExpression>
</subreport>
<staticText>
<text><![CDATA[Subreport returned]]></text>
</staticText>
<textField evaluationTime="Band">
<textFieldExpression><![CDATA[$V{return}]]></textFieldExpression>
</textField>
</band>
</detail>
</jasperReport>
e o código para o sub-relatório:
<jasperReport>
<queryString>
<![CDATA[select * from dual]]>
</queryString>
<field name="DUMMY" class="java.lang.String"/>
<variable name="return" class="java.math.BigDecimal">
<variableExpression><![CDATA[new BigDecimal(Math.random())]]></variableExpression>
</variable>
</jasperReport>
O que eu quero é imprimir a soma dos valores retornados para o grupo na banda do grupo (cabeçalho ou rodapé).
Eu sei que não é possível acumular o valor em uma variável porque a avaliação das variáveis sempre ocorre antes que o sub-relatório possa retornar seu resultado. Então, eu estaria somando um monte de valores nulos.
Vi pessoas dizendo para fazer a soma dentro de um campo de texto colocado em uma banda após o sub-relatório, mas nunca consegui fazê-lo funcionar.