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!
IREPORT- Problemas com layout de subrelatório
27 Respostas
caramba, não tem como mandar um print da tela para ver como está?
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.
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?
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).
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
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.
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.
Complementando o cabelograff: os mesmos atributos do seu bean serão os nomes dos parâmetros do seu relatório.
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!
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.
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…
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?
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.
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.
É, 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?
É, eu nunca consegui fazer nada perto da perfeição utilizando essa ferramenta. 
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.
++!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!
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.
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: )
É assim mesmo, na base da tentativa e erro. 
ô 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?)
Eu sempre criei como parâmetros (mesmo não passando via código Java). Tenho que confirmar isso pra você.
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).
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.
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.
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.
