Solucionado (ver solução)

Importante

Você está vendo a versão anterior da nova experiência da Alura que estamos preparando para você. Em breve, ela ganha uma identidade visual novinha totalmente pensada em potencializar seus estudos!

Solucionado
(ver solução)
10
respostas

Relátorio dinâmico.

Olá, eu ainda não vi todo o curso, mas gostaria de saber se é possível fazer um relatório dinâmico? Por exemplo uma agenda de consultas, onde cada consulta tem um tempo diferente.

10 respostas

Oi Alexandre,

se o "tempo" for uma variável (apenas o valor varia) é possível sim.

abs

Certo, no caso meu problema é que tenho uma calendário de espaço de tempo de 30 minutos. E consultas de 30 e 50 minutos. Minha intenção é a linha ser pintada de acordo com o tempo da consulta. Mais ou menos como essas img: http://goo.gl/KQdLns

É possível com IReport? Caso sim pode me indicar algum material complementar?

Oi Alexandre,

isso é tranquilo de fazer e o nosso curso deve te dar a base para implementar.

vc já assistiu tudo?

abs

Estou assistindo, estou na 5ª aula agora e não faço ideia de como resolver. :(

Alexandre, vc está usando a versão mais atual do iReport?

abs

Sim, Ireport 5.6.

Oi Alexandre,

então vamos lá:

1) Dentro do iReport cria um novo "style" (é o primeiro elemento dentro do Report Inspector).

2) Depois vá para aba "XML" e procura o elemento style que vc acabou de criar. Deve estar quase no inicio do XML.

3) Substitua toda declaração do elemento <style ...> com a declaração abaixa:

    <style name="consultaStyle">
        <conditionalStyle>
            <conditionExpression><![CDATA[$F{tempoConsulta} >=5]]></conditionExpression>
            <style forecolor="#00FF00" backcolor="#FF0000" isBold="false" mode="Opaque"/>
        </conditionalStyle>
        <conditionalStyle>
            <conditionExpression><![CDATA[$F{tempoConsulta} < 5]]></conditionExpression>
            <style forecolor="#FF0000" backcolor="#00FF00" isBold="true" mode="Opaque"/>
        </conditionalStyle>
    </style>

Repare que existe um estilo consultaStyle que é conditional (baseado numa expression). Além disso, minha condição usa um field que se chama $F{tempoConsulta} . Ai vc precisa mexer e usar o seu field com sua condição!

4) Por ultimo vc precisa aplicar esse consultaStyle nas propriedades de um campo (field). Volte ao Desigener e seleciona o campo que gostaria de personalizar baseado com o estilo conditional. Nas propriedades desse campo procure Style e selecione nosso consultaStyle

5) Com um pouquinho de sorte vai funcionar :)

abs

Resolve a questão da cor, porém cada field pode ter um tamanho diferente.

solução!

Cada field possui um atributo isStretchWithOverflow="true", talvez isso resolve o seu problema.

Vc também pode fugir do iReport e gerar o relatorio dinamicamente com http://dynamicjasper.com/

abs

Obrigado!