[IREPORT] Multiplas colunas só aparecer o footer na última

9 respostas
R

Boa Noite a todos estou com uma situação no Ireport que não consegui resolver.

Tenho um relatório que tem múltiplas colunas na mesma página, ao habilitar a banda column footer aparece o conteúdo no final de todas as colunas, porém gostaria que aparecesse apenas no final da última coluna da última página.

Certo.Teoricamente fácil, apenas colocar uma expressão para só mostrar o clumn footer se o numero total de colunas que está exibindo é igual ao máximo que exibiu na página, e o numero da página é igual ao numero da página atual.

Consegui descobrir o numero da coluna atual através da COLUMN_COUNT
E o numero da pagina atual atráves da PAGE_NUMBER

Mas e os valores do total de páginas do relatórios e o total de colunas na página?

9 Respostas

R

Não há como fazer isso?

R

Desculpem upar novamente o tópico, porém parecia ser uma situação tão simples.

Vamos tentar uma última vez.Se alguém souber posta ai, senão vou recorrer ao fórum oficial do Ireport e assim que conseguir a solução ( se tiver ), posto ai para consulta posterior.

1

bom… uma ideia que vc pode tentar eh… :idea:

se vc estiver passando seus parametros de um sql ou algum datasource vc adicionar mais um parametro com o total
ex: um count do sql ou o total do seu datasource

ai dentro do relatorio vc conta qtos parametros sao usados para preencher uma pagina
ex: se com 30 fields na band ele pula pra outra pagina (vc pode ver pela variavel PAGE_COUNT)

entao no final com esses dados vc faz por exemplo:

total do seu datasource 150 rows (fields) dividido pelo max por pargina ex: 30 igual ao numero de paginas do seu relatorio
ai vc compara com a variavel PAGE_NUMBER

complicado neh… mas tenta ae :smiley:

Hebert_Freitas

Estou com um problema idêntico, alguma solução diferente? existe alguma forma de fazer isso usando o print when expression?

R

Resolvi sim.

Segue o post do fórum do Ireport com a solução: http://jasperforge.org/plugins/espforum/view.php?group_id=83&forumid=101&topicid=74100&topid=74667

Hebert_Freitas

Obrigado Rafael, é exatamente o que preciso.
Mas não entendi uma coisa, no código abaixo:

private final int COLUMNS = 5;
private final int RECORDS_PER_COLUMN = 55;

private int LAST_PAGE;
private int LAST_COLUMN;
 

LAST_PAGE = (int) Math.ceil( ((double) numero.size()) / (COLUMNS * RECORDS_PER_COLUMN ) );
LAST_COLUMN = (int) Math.ceil( ( ((double)(numero.size()) % (COLUMNS * RECORDS_PER_COLUMN )) / RECORDS_PER_COLUMN ) );

quem é “numero”, é uma variável, o que ela representa.

Mais uma vez, muito obrigado.

R

numero é a lista dos registros que preencherão o relatório.

É usado para saber qual é o total de registros que o relatório terá

Hebert_Freitas

OK Rafael, consegui resolver aqui, eu tinha pensado nesta solução de forma descritiva, mas não conseguia bolar os cálculos, mais tarde vou pensar em como fazer a solução somente no relatório como você propôs no fórum do jasper, se conseguir eu posto aqui no fórum.

Gostaria de agradecer a sua ajuda, estava a dois dias empacado neste problema, muito obrigado mesmo.

R

Ok. Testa sim. E coloca a resposta aqui no fórum.

Se não me engano Ireport não tem a função Math.ceil Por isso, não fiz o teste.

Criado 21 de abril de 2010
Ultima resposta 7 de jan. de 2011
Respostas 9
Participantes 3