Exibir apenas no último registro usando iReport

13 respostas
D

Então pessoal, existe alguma propriedade no Ireport que faça com que um objeto seja exibido apenas na folha que aparecer o último registro?

Eu sei do lastPageFooter, mas ele não serve no meu caso, pois eu preciso exibir ele exatamente onde ele está na tela, que no caso não é na parte debaixo de folha.

13 Respostas

V

Como assim ?
Esse obj é um array ?

Abraços,

D

Qualquer coisa que possa ser colocada na tela. Pode ser um rectangle por exemplo. Eu preciso de uma propriedade que faça ele aparecer somente na última folha, no lugar onde ele está no relatório. Ou seja, se ele estiver em title, ele aparecerá lá, mas só na última folha.

thiagocg

Da uma estudada nas expressões do ireport, por exemplo eu coloquei a seguinte expressão:

new Boolean($V{PAGE_NUMBER}.intValue() < 2)

Ela faz com que o valor seja impresso somente na primeira pag. do meu relatorio

D

thiagocg:
Da uma estudada nas expressões do ireport, por exemplo eu coloquei a seguinte expressão:

new Boolean($V{PAGE_NUMBER}.intValue() < 2)

Ela faz com que o valor seja impresso somente na primeira pag. do meu relatorio

Estava tentando fazer isso, porém não conseguia porque retornava um boolean. Muito Obrigado pela dica.

Agora se não for pedir demais: sabe se existe uma constante ou algo do gênero que pega o número da última página?

thiagocg

Use a variável de contagem de pagina

$V{PAGE_COUNT}

pois ela te retorna o total de paginas e sendo a sim o total é a ultima pagina.

Abraço

D

thiagocg:
Use a variável de contagem de pagina

$V{PAGE_COUNT}

pois ela te retorna o total de paginas e sendo a sim o total é a ultima pagina.

Abraço

Então, com o PAGE_COUNT não consegui. Testei com o REPORT_COUNT e ele funcionou quando mudei o Evaluation Time para Report. Só que essa opção só existe nos textFields. Nos outros ele funciona como um contador da página, pois não posso mudar o Evaluation Time.

Teria como eu pegar o valor de um textField por exemplo? Ai funcionaria creio eu. Ou algum jeito de ele mostrar as páginas do relatório inteiro, como faz o Evaluation Time nos textFields.

thiagocg

Cara com o page count funciona legal aqui, faz uns testes ai, eu não sei qual outra forma vc poderia fazer isso!

D

Tentei assim, mas não foi

PAGE_COUNT me retorna 1 sempre. Com o REPORT_COUNT ele até volta o número certo nos textFields, mas quando faço assim:

new Boolean($V{PAGE_NUMBER}.intValue() == $V{REPORT_COUNT}.intValue())

ou assim:

new Boolean($V{PAGE_NUMBER}.intValue() == $V{PAGE_COUNT}.intValue())

ele não mostra da maneira correta. Já tentei de tudo acho e ainda não consegui =/

thiagocg

cria uma variavel e na expressão coloca assim

new Integer($V{PAGE_COUNT}.intValue())

ai no tempo de avalição dela vc coloca como relatorio, isso te devolve o total de paginas do relatorio

D

thiagocg:
cria uma variavel e na expressão coloca assim

new Integer($V{PAGE_COUNT}.intValue())

ai no tempo de avalição dela vc coloca como relatorio, isso te devolve o total de paginas do relatorio

Ele está mostrando certinho. Mas e agora como eu digo para um rectangle que ele tem que aparecer só quando o PAGE_NUMBER for igual ao valor do textField que possui o código que você me passou?

thiagocg

voce não precisa atribuir o valor ao texteField pode fazer a comparação direta como eu fiz no primeiro post apenas mudando o codigo pra verificar se o page count é igual ao page number

D

Então, fiz isso:

new Boolean($V{REPORT_COUNT}.intValue() == $V{PAGE_COUNT}.intValue())

Mas só aparece na primeira. Só pra lembrar: não existe(pelo menos não que eu tenha visto) Evaluation Time para rectangle.

thiagocg
  1. O evolution time é para a sua variavel que vc irá criar.
  2. Use a variavel para a expressão que vc irá criar no seu retangulo em “imprimir quando a expressão” q é a ultima caixinha da primeira tab do seu retangulo
  3. nela vc verifica se é o page_number é igual ao valor da sua variavel
Criado 6 de outubro de 2008
Ultima resposta 6 de out. de 2008
Respostas 13
Participantes 3