[IREPORT] Multiplas colunas só aparecer o footer na última
9 respostas
R
RafaelViana
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?
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
1_de_abril
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
Hebert_Freitas
Estou com um problema idêntico, alguma solução diferente? existe alguma forma de fazer isso usando o print when expression?
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
RafaelViana
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
RafaelViana
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.