1
resposta

Queria criar um relatório dinâmico.De modo, que só iria mostrar o campo que não estão null ajustando no layout quando necessario.

Olá, Pessoal. Estou precisando confeccionar um relatório dinâmico. Tipo tenho vários campos ( parameters e fields). Eu consigo até então quando o campo e null informar uma msg( dizendo que o campo não foi informado). Porém, queria não exibir esse campo quando estivesse null e ainda mais reposicionar o layout para não deixar um espaço em branco. Alguém poderia me ajudar com isso?

1 resposta

Fala Antonio, tudo bem?

Existem duas propriedades que podem te ajudar: isRemoveLineWhenBlank e isBlankWhenNull

<?xml version="1.0" encoding="UTF-8"?>
<jasperReport ..>
    <import value="com.google.common.base.*"/>
    <parameter name="daterangefrom" class="java.lang.String"/>
    <parameter name="daterangeto" class="java.lang.String"/>

    <title>
        <band height="79" splitType="Stretch">
            <textField isBlankWhenNull="true">
                <reportElement x="185" y="12" width="100" height="20"  isRemoveLineWhenBlank="true"/>
                <textElement/>
                <textFieldExpression><![CDATA[(!Strings.isNullOrEmpty($P{daterangefrom}) &&
    !Strings.isNullOrEmpty($P{daterangeto})) ?
" From ( " + $P{daterangefrom} + " - " + $P{daterangeto} + " )"
 : null]]></textFieldExpression>
            </textField>
        </band>
    </title>
</jasperReport>

Uma dica que eu dou nesse cenário é verificar se o campo de texto que você deseja ocultar não compartilha espaço vertical com nenhum outro elemento. O espaço vertical é ocultado apenas quando os elementos "isRemoveLineWhenBlank" forem os únicos elementos presentes na vertical.