IREPORT- Problemas com layout de subrelatório

27 respostas
I

Pessoal tenho um relatório no IREPORT, que é composto de um relatório principal, e um subrelatório.No principal eu tenho uma Imagem(LOGO do relatório) e 5 campos,No subrelatório, tenho um relatório que é o resultado de um processo de cálculo no banco, jogando tudo num arraylist para exibir ao usuário, igual ao exemplo aqui: http://guj.com.br/posts/list/110980.java
postado pelo eduardocsanto, reparando que eu não faço conexão do relatório com a base de dados.Meu problema é que o subrelatório tá uma zona!Os dados se misturam pq não há layout predefinido.Na verdade, eu nem sei como montar um layout para o subreport, pois da forma que eu fiz, eu taquei o subreport como parâmetro de uma Hashtable do relatório principal.
Alguem sabe de alguma alternativa, lembrando que eu não conecto o report na base de dados!

27 Respostas

C

caramba, não tem como mandar um print da tela para ver como está?

R

Oi Ironlynx,

não seria melhor você editar os arquivos no iReport e configurar o layout? Já fiz relatórios e sub-relatórios, mas somente no editor visual do iReport.

I

cabelo, olha como o relatório deve ficar:
http://img379.imageshack.us/img379/9329/relatoriown3.gif
Onde está “Planilha de Atualização de Preços-Saída” é o local do logo!
Não possso postar o relatório executando por causa de “dados confidenciais”(até parece que são dados da CIA, mas o cliente exige…)

Rafael,vc fala montar todo no iREport e depois se virar para juntar com os dados?É isso?

R

Você monta o relatório e o sub-relatório no iReport e configura os parâmetros de acordo com o seu bean (já que você está passando os valores via parâmetro - Hashtable - para o relatório).

C

segue a dica do Rafael Carneiro
usa o IReport para fazer o layout q vc quer, relatorios e sub relatórios, e coloca os atributos beans, facinho facinho

I

Só para esclarecer:
No relatório(vide foto) até Período de Atualização, os dados vem da página anterior(aque chama o relatório, gerar-relatorio.jsp).De valor inicial para baixo, são valores que vem do banco e são processados numa classe de negócio e eu taco para um Bean e depois para o Relatório.

C

então, nos valores q são do banco vc joga em um sub-relatorio, blz? Daí vc monta o relatorio e o subrelatorio no Ireport com o layout q vc quiser. No sub-relatorio vc coloca os atributos do seu Bean e manda o Bean para o sub-relatorio, pronto.

R

Complementando o cabelograff: os mesmos atributos do seu bean serão os nomes dos parâmetros do seu relatório.

I

Na verdade, são dois beans(do usuário e do banco), pq para facilitar(usando JRBeanDataSource) eu taco os dados digitados pelo usuário em um e passo para o relatório principal.
Blz, cabelo e rafael.Eu vou testar essa forma que vocês falaram aqui.Amanhã eu posto o resultado de como ficou.
um []´ção!

R

Na verdade, são dois beans(do usuário e do banco), pq para facilitar(usando JRBeanDataSource) eu taco os dados digitados pelo usuário em um e passo para o relatório principal.
Blz, cabelo e rafael.Eu vou testar essa forma que vocês falaram aqui.Amanhã eu posto o resultado de como ficou.
um []´ção!

Isso mesmo, testa aí e avisa a gente.

J

Pra mexer com subreport no ireport num deixa de usar grupos que isso resolve muita coisa!!!

Eu quebrei cabeça até ler em algum lugar por aqui essa dica dos grupos, e cada subreport deve ficar em um único band…

I

Bom, descobri que eu na verdade estou tendo um problema com o alinhamento da imagem(logo) do meu relatório(o principal!).Minha imagem tem 790 de largura por 90 de altura e tá estravazando a banda.Qual o lucar correto de coloca-la com perfeição?Na banda title?Ah, é óbvio que eu tô usando o formato paisagem.

Definitivamente eu não domino muito iReport, o que você chama de grupos?

R

Eu acho que a melhor maneira é fazer essa configuração no editor do iReport. Não lembro as cores no momento, mas o editor indica (através de cores) se a imagem ou campo estão fora da margem do relatório.

J

Você pode criar grupos que geram novas bands além das que já existem.

Aí vc coloca cada subreport dentro de uma band.

Fica mais fácil de organizar o layout e vi em algum lugar q funciona assim, num testei o contrário.

Eu uso o plugin do Ireport para NetBeans, para criar um grupo eu clico com o botão direito do mouse em cima do relatório.

I

É, eu tô mexendo no editor aqui, mas sempre dá um:
et.sf.jasperreports.engine.design.JRValidationException: Report design not valid : 1. Warning : Element bottom reaches outside band area : y=0 height=90 band-height=50 at net.sf.jasperreports.engine.design.JRAbstractCompiler.verifyDesign(JRAbstractCompiler.java:260) at net.sf.jasperreports.engine.design.JRAbstractCompiler.compileReport(JRAbstractCompiler.java:144) at it.businesslogic.ireport.IReportCompiler.run(IReportCompiler.java:591) at java.lang.Thread.run(Unknown Source)
ô saco, a imagem não fica perfeita nem a pau…só quero deixá-la no topo.Aliás, eu não entendo pq por padrão, a largura do documento é 842 e a altura é 595.Porque não pega a definição do monitor, por exemplo 1024x768?

Eu pensei que cada subreport deveria ficar em uma banda Detail?Nada a ver?

R

É, eu nunca consegui fazer nada perto da perfeição utilizando essa ferramenta. :frowning:

J

Cada elemento tem que ficar completamente dentro do Band. Se for necessário, aumente o tamanho do band…

E os subreport devem ficar cada um dentro de um único band, por isso vc cria grupos pra eles.

I

++!Resovi fazer todo layout do zero, colocando um Principal(até período de atualização) e um subrelatório(até Comentários, lembrando a imagem do meu relatório: http://img379.imageshack.us/img379/9329/relatoriown3.gif ), mas eu não consigo centralizar a imagem com perfeição(equidistante entre as margens esquerda e direita, e colada ao topo) de forma alguma!E eu já mudei para 1024x768 o design do relatório e nada!

R

Eu acho que dá para ajustar. No momento estou sem o iReport, mas mais tarde irei ver isso e te digo quais os botões (no menu de opções de largura, altura, etc) são necessários.

I

No caso, eu só uso a Detail mesmo para os dados.A única coisa que não gostei é que o alinhamento nunca fica 100%(olhe o que eu quero: http://img379.imageshack.us/img379/9329/relatoriown3.gif , lembrando que onde está escrito “Planilha de Atualização de Preços-Saída” é o local do meu logo de 790x90!

Acho que consegui, não tá perfeito, mas tá funcionando OK com o relatório “pelado”, meus parâmtros(alguém pode precisar):
Imagem no PAGE_HEADER, o topo(-50), esquerda 75,altura 90, largura 790 resolução de 1024x768, alinhando verticalmente no TOPO.
Vamos ver como fica com os demais componentes…(já tô com medo… :lol: )

R

É assim mesmo, na base da tentativa e erro. :slight_smile:

I

ô se… pintou uma dúvida besta aqui: quando eu tô usando o iReport sem conexão, apenas juntando os beans, os meus fields são campos normais não, ligados aos campos correspondentes no(s) bean(s)?(e não parâmetros?)

R

Eu sempre criei como parâmetros (mesmo não passando via código Java). Tenho que confirmar isso pra você.

I

Acho que vou testar das duas formas.Vou criar primeiro com o Field passando uma Coleção para preenchimento e depois eu testo com parãmetros.Bom, vou montar o resto do relatório e amanhã eu posto os resultados(incluso os .jrxml e os beans para quem quiser montar algo similar ou testar).

R

Da forma que eu faço eu crio os parâmetros no iReport, mas no código java eu passo o bean com os nomes dos atributos idênticos aos parâmetros criados no iReport, ou seja, eu não passo via parâmetro no código java.

I

Tentei fazer só com Fields, mas não dá certo(Tanto o principal como o Auxiliar).Vou para a forma antiga, transformar todos os campos do principal em parâmetros e fields no subrelatório Auxiliar.Vou criar uma classe StandAlone e postar aqui para quem quiser usar de exemplo.

I

Bom, das duas formas funciona!!!Mas ainda não postei o código aqui por que estou com um probleminha: Só imprime em 2 páginas!
Mesmo tendo espaço, e eu aumentando minha banda DETAIL ao máximo, o subrelatório não entra “embaixo” do relatório principal.Weird.Vou fuçar aqui até conseguir enfiar um no outro, mas tá… quando conseguir eu posto o código completo aqui.

Criado 7 de janeiro de 2009
Ultima resposta 10 de jan. de 2009
Respostas 27
Participantes 4