Banda Detail no iReport

12 respostas
W

Olá galera…

Tenho um relatório, onde eu mostro itens de um cadastro… Cada um tem um tamanho…

Alguns itens começam em uma página e terminam em outra…

Gostaria de saber se tem como fazer uma das duas coisas:

  • Mostrar uma mensagem do tipo “Este item continua na próxima página”, quando isto ocorrer.
  • Ou então, impedir que os itens sejam “quebrados” e exibidos em duas páginas separadas…

De preferência o primeiro caso…

Existe como?!

Valeu galera…

12 Respostas

peerless

Bom, a primeira pergunta a fazer é: você está usando qual tipo de datasource ?

W

Uma consulta normal, ao BD… padrão…

peerless

Impedir que os itens sejam quebrados não tem como, né? A não ser que você mande no MAXIMO X itens para o relatório (referentes ao tamanho da página), acho que isso não seria muito interessante fazer! :slight_smile:

Outra idéia é enviar listas usando o DataSource JRBeanCollectionDataSource, cada objeto da lista seria um HashMap, no hashmap você poderia tratar o tamanho virtual que cabe em um relatório, fazendo com que no registro que exceda o tamanho da página, seja modificado o valor de alguma variavel auxiliar para “continua na proxima página”, por ex:

Lista de HashMap: (Vamos considerar que a página aceite no máximo 3 registros)

{{nome=“pedro”, msg=""}, {nome=“joao”, msg=""}, {nome=“josé”, msg=""}, {nome="",msg=“Continua na próxima página.”}, {nome=“paulo”, msg=""} }

Aí, lá no seu relatório, você define no detail uma expressão como:

(objeto field) code ? $F{nome} : $F{msg}[/code]

Faz uma classe que abstraia o relatório, e comece a passar coleções para ele ao invés de acesso direto ao banco, além de você poder tratar melhor seus dados, tem maior controle sobre o relatório…

qualquer dúvida posta aí!

gustavosedit

Estou com o mesmo problema mas meus campos variam de tamanho, então a solução de de limitar o número de itens por página não resolve. :?

alguma solução?

[]'s

peerless

gustavosedit:
Estou com o mesmo problema mas meus campos variam de tamanho, então a solução de de limitar o número de itens por página não resolve. :?

alguma solução?

[]'s

vc leu o que escrevi acima ?

W

não vai rolar então… eu tenho alguns itens que são imagens… daí não vou ter como tratar desta forma…

Vou ter que pensar em alguma outra solução…

O sistema antigo era em Delhi, e tinha essa frescura de, “continua na próxima página”…

Bom, beleza… Vou tentar outras alternativas… se eu descobrir algo, aviso aew…

Valeu galera…

gustavosedit

Li sim, já estou usando JRBeanCollectionDataSource, mas não resolve. O problema é que cada item do meu array ArrayList preciso que fique inteiro em uma página.

Como fazer isso quando os campos no HashMap variam de tamanho?

peerless

webeverton:
não vai rolar então… eu tenho alguns itens que são imagens… daí não vou ter como tratar desta forma…

Vou ter que pensar em alguma outra solução…

O sistema antigo era em Delhi, e tinha essa frescura de, “continua na próxima página”…

Bom, beleza… Vou tentar outras alternativas… se eu descobrir algo, aviso aew…

Valeu galera…

Campos imagem ?

peerless

Li sim, já estou usando JRBeanCollectionDataSource, mas não resolve. O problema é que cada item do meu array ArrayList preciso que fique inteiro em uma página.

Como fazer isso quando os campos no HashMap variam de tamanho?

Os campos do hashmap variam mas o limite do seu relatório é sempre um. Quantos “records” cada página aceita? Faça o calculo de que tamanho está a sua aba Detail e faz as contas!

gustavosedit

Vou tentar explicar melhor: meu relatório tem um campo que recebe um texto que pode ter n linhas, portanto a quantidade de records do meu Detail varia. Não tem como eu saber quantas linhas vão ter nesse campo a não ser que eu tire uma média de letras que caibam em uma linha e estime seu tamanho.

Pensei que pudesse haver alguma configuração no iReport para não “quebrar” o Detail (sempre jogar para a página seguinte).

W

Isso… essa seria uma boa alternativa também…

Já que não existe como verificar se metade do registro está numa página, e a outra metade na outra…

L

vc pode criar um subrelatorio na banda detail.
se o subrelatorio for maior que o espaço que sobra na pagina atual, ele pula para a proxima…
nao lembro se é automático ou tem configuracao…
mas eu ja fiz isso!

Criado 8 de maio de 2008
Ultima resposta 28 de out. de 2009
Respostas 12
Participantes 4