[Resolvido] IReport - Paginação

12 respostas
K

Boa tarde !!

Pessoal, estou tendo um probleminha com meu relatório. Estou utilizando a versão 0.5 (e não pode ser alterada para uma versão mais nova por normas da empresa).

Tenho um relatório principal, onde possuo vários fields.

No meu pageHeader eu tenho dois subrelatórios e os dados estão sendo enviados e exibidos corretamente para o meu relatório.

Os dados a serem exibidos nos meus subrelatórios são de acordo com um determinado grupo de clientes. Por exemplo:

Tenho um grupo 1 com 50 clientes. Se todos esses clientes não couberem na mesma página ele irá jogar para a página seguinte, no entanto ao fazer isso os dados do meu subrelatório não se repete como deveria.

Pensei em talvez criar um método no Ireport para solucionar, mas não sei se esta seria a melhor forma.

Alguém já passou por um problema semelhante?

12 Respostas

G

Recem estou começando no iReport, mas boa sorte! :wink:

R

Oque acontece com os dados? Ele está apresentando de que maneira incorretamente?

Se puder colocar os jrxml e o codigo para facilitar a ajuda seria interessante.

K

Oi rdmardegam, obrigada por responder!

Então, infelizmente não posso postar :cry:, sei que me ajudaria muito, mas normas são normas.

O problema que acontece é que quando uma página do meu relatório precisa ser dividida em mais de uma (devido ao excesso de informações) as informações presentes no subrelatório (que está no pageHeader) não são exibidas. O subrelatório fica com valor em branco.

Só pra facilitar, eu tenho um grupo 1 e esse grupo contém muitos clientes e na hora de gerar esse relatório ele exibe na primeira página desse grupo 1 as informações que preciso no header, já quando ele vai para a página 2 ele não exibe nada no header.

Não sei se fui clara, ou se deu para clarear alguma coisa.

Uma forma de tentar solucionar que encontrei seria criando método para verificar se o grupo exibido na página anterior é o mesmo grupo exibido na página corrente. Se tiver alguma outra idéia, posta aê :smiley:

[]'s

R

É ta meio complicado de entender hehe.

Então, existe um looping de usuários ou são parametros fixos?

Lembrando que a banda “pageHeader” é exibida em todas as paginas geradas! Talvez você esteja gerando um conteudo nessa “pageHeader” grande, deixando com que as demais informações geradas não sejam apresentadas?

Você n teria como montar um exemplo generico para melhor visualização, ja que n pode enviar oq vc está utilizado?

Como você está montando este relatorio? Passando colecao atraves do java ou efetuando select pelo ireport?

K

Então,

Esse trecho é o trecho do meu jrxml que não se repete, ou seja, durante a paginação ele não exibe as informações no pageHeader.

<pageHeader>
<band>

<subreport  isUsingCache="true">
					<reportElement
						mode="Transparent"
						x="1"
						y="88"
						width="632"
						height="9"
						forecolor="#000000"
						backcolor="#FFFFFF"
						key="subreport-1"
						stretchType="NoStretch"
						positionType="FixRelativeToTop"
						isPrintRepeatedValues="true"
						isRemoveLineWhenBlank="false"
						isPrintInFirstWholeBand="false"
						isPrintWhenDetailOverflows="false"/>
					<subreportParameter  name="REPORT_LOCALE">
						<subreportParameterExpression><![CDATA[new java.util.Locale("pt", "BR")]]></subreportParameterExpression>
					</subreportParameter>
					<dataSourceExpression><![CDATA[new PdfDataSource($F{clientes})]]></dataSourceExpression>
					<subreportExpression  class="java.net.URL"><![CDATA[$P{REPORT_PARAMETERS_MAP}.get("SubClientes")]]></subreportExpression>
				</subreport>
			</band>
		</pageHeader>

Eu monto o meu relatório mandando uma coleção do java para meu subrelatório (subClientes) e este relatório está no meu pageHeader do relatório principal.

Quanto ao java, ele faz o select na base e passa para o IReport através de uma collection.

Quando eu tenho vários grupos no meu relatório, ele exibe corretamente o subrelatório com as informações para a primeira página de relatório para todos esses grupos, porém a partir da segunda página de cada grupo ele não exibe.

Ajudou ? rs

Obrigada :lol:

R

É sem o exemplo em si fica meio dificil de compreender totalmente o problema.

Entao, vc tem um relatorio principal ? Esse relatorio principal teria apenas informacoes simples ou alguma informacao que tenha q se repetir, um lista ?

E vc tem um subRelatorio que deve exibir os clientes. Como você está passando essa colecao para o subrelatorio? Atraves de um new JRBeanCollectionDataSource ?

Efim, eu daria a sugestao de vc colocar o subRelatorio na banda detail, pois o pageHeader é a banda q se repete a cada nova pagina. Entao na pageHeader seria interessante ter o Cabeçalho da pagina.

Uma coisa simples q as vezes pode ser, (acredito que não seja) é setar os fields com posicao “Flutuante”.

Se quiser me add no msn: [email removido]

T

Um bom conselho, seria utilizar de Groups para colocar as informações que não se repetem…

ps.: ajudar no escuro é dificil :wink:
Mas, vamo ver oque dá

K

Bom dia gente!!

Desculpem-me não ter respondido ontem a este tópico, mas devido ao jogo (e que jogo feio diga-se de passagem) não tive tempo de entrar aqui.

Resolvi o problema de outra forma, troquei o datasource que estava usando para passar os dados para os subrelatórios (que estavam apresentado o problema) para que fosse restartado a cada vez que ele fosse carregado. Também fiz alguns ajustes no código (no Java mesmo) e por fim acabei resolvendo.

E guisantogui eu tentei utilizar grupos sim, mas o problema era nos meus subrelatórios e por isso mesmo usando grupos no header o problema continuava.

rdmardegam, quanto às suas perguntas, eu tinha sim um relatório principal e tinha uma lista de dados. Esta lista fica no meu campo details e estava exibindo tudo certinho. Eu tinha um subrelatório que usava outro datasource PdfDataSource - mas eu o alterei já. E eu realmente precisava ter meu subrelatório no pageHeader, no meu Details eu precisava ter outra lista, outros dados, não tinha como colocar ésse sub no details (o que com certeza teria resolvido o problema logo de cara).

Vim agradecer a ajuda de vcs :smiley:

Obrigada.

Vou fechar o tópico, acho melhor.

[]'s
Karina

R

Jogo feio mesmo.
OK entao, que conseguiu resolver.
Parabens.
O bom de participar aqui é que sempre aprendemos.

Att

K

Ahh!

E o datasource que usei é um implementado aqui na empresa que trabalho, não conheço algum no mercado que restarta a cada vez que o subrelatório é chamado.

[]'s
Karina

R

Acredito que já fiz algo parecido aqui, realmente o Ireport tem um milhao de funcionalidades, eu ja mexi com milhares de coisas nele e a cada dia descubro uma coisa nova, isso é sempre bom.

T

Realmente Karina,

Eu costumo usar Collections, já usou?
É bem fácil de se trabalhar… com um controle brutal das informações :wink:

DataSource tambem é uma boa prática de desenvolver relatórios ^^
iReport sempre trás uma dificuldade ou outra,
que muitas vezes acabamos por resolver na aplicação, por talvez ‘limitação’

att. Jonas

Criado 11 de junho de 2010
Ultima resposta 16 de jun. de 2010
Respostas 12
Participantes 4