Como criar subrelatorios no ireport

oi pessoal ,

sou novato , estou com dificuldades pra trabalhar com subrelatórios no ireport .

alguma dica ?

Leia e tente fazer os exemplos de algum tutorial.

http://www.guj.com.br/java.tutorial.artigo.151.1.guj

http://www.furutani.eti.br/tutoriais/Tutorial_Sub_Relatorio_ArrayList.pdf

li , nao consigo abstrair direito , preciso criar um subrelatorio simples a partir de uma factory com uma lista de objetos , sempre quando peço pra executar ele pede parametros , nao tenho ideia do que seja

deixei um printscreen da tela em anexo


Bom…vamos lá…
Quando voce cria um subrelatorio, é um arquivo jasper diferente do relatorio pai.
na imagem que vc passou ele esta pedindo o endereço deste arquivo .jasper que seria o seu subrelatorio.

este seria o parametro que vc precisa passar. O endereco do seu subrelatorio.
SUBREPORT_DIR

Deu para fixar?? qualquer coisa estamos aí…

eu criei dois relatorios ,

cada um utiliza da mesma base de dados . quando ele passa o parametro quando vai executar eu informo somente o nome do arquivo *.jasper ou caminho completo desde a raiz com aspas “/” de nenhuma forma funciona .

so funciona quando nao coloco parametro algum , so que ai ele nao exibe o conteudo do subrelatorio

O seu problema deve estar na passagem do parametro com o caminho. Da uma olhada na aba Subreport(Other) em Subreport Expression e voce pode ver que a variavel SUBREPORT_DIR recebera o caminho do arquivo .jasper.

ficaria assim:

$P{SUBREPORT_DIR} + "RelatorioGerencial_subreport0.jasper"

Exemplo:

C:/Relatorios/Relatorio_subreport0.jasper

Verifique se vc esta passando o caminho correto.
Nao se esqueca que no seu codigo vc tem que passar uma variavel com o mesmo nome SUBREPORT_DIR contendo o caminho

coloquei o caminho inteiro como mostra a figura quando eu executa ele so exibe do relatorio principal


voce esta passando o parametro fixo…
tente assim:

segui a orientação nao consegui

vo ditar os passos que eu to fazendo , talvez seja um erro no processo

abro o ireport , arquivo , Novo Documento

nomeio o relatorio de :“relatorio1” clico em ok

salvo o arquivo como : “relatorio1.jrxml”

escolho uma factory(ja preconfigurada , estou trabalhando com javabeans)

adiciono os atributos do meu bean

arrastos os atributos que estao na aba do lado (item campos) para a banda detail

e testo o relatório

funciona normal .

Parte2 (colocar o subrelatorio) - aqui esta o meu problema

clico no botão acima - “subrelatorio”

escolho a opção - “usando um relatório existente”

relatorio2.jrxml (este e um relatorio somente com um campo texto estatico)

Próximo >

deixo a opção : “Utilizando a mesma conexão utilizada para preencher o relatorio…”

Próximo >

deixo a opção : “Armazenar o nome do diretório em um parâmetro”

$P{SUBREPORT_DIR} + “relatorio.jasper”

OK

aparece meu sub-relatorio dentro de “detail”

mando executa e da bug

alguma dica ?

amigo, tem um tutorial no site www.furutani.eti.br que vai te ajudar. O nome do tutorial é “Mini-Tutorial Relatorios Java JasperReports e iReport”, muito explicativo e facil de entender. dá uma olhadinha nele…

[]'s

galera to com um problema semelhante, nas propriedades do subrelatorio, passo o parametro $P{REPORT_CONNECTION}, nas propriedades do subrelatorio (outro) tenho o parametro $P{SUBREPORT_FILE_NAME}, o qual esta preenchido com o caminho do subrelatorio.jasper no relatorio principal “C:\Arquivos de programas\JasperSoft\iReport-2.0.5\subrelatorio_empenhos.jasper”

é o primeiro relatório com subrelatorio que estou tentando gerar, porem ao executar utilizando a conexão ativa (banco de dados firebird) no console de saída aparece a seguinte mensagem:

“Erro ao preencher impressão … Unable to get next record.
net.sf.jasperreports.engine.JRException: Unable to get next record.
at net.sf.jasperreports.engine.JRResultSetDataSource.next(JRResultSetDataSource.java:99)
at net.sf.jasperreports.engine.fill.JRFillDataset.advanceDataSource(JRFillDataset.java:830) at net.sf.jasperreports.engine.fill.JRFillDataset.next(JRFillDataset.java:748)
at net.sf.jasperreports.engine.fill.JRBaseFiller.next(JRBaseFiller.java:1438)
at net.sf.jasperreports.engine.fill.JRVerticalFiller.fillReport(JRVerticalFiller.java:115) at net.sf.jasperreports.engine.fill.JRBaseFiller.fill(JRBaseFiller.java:895)
at net.sf.jasperreports.engine.fill.JRBaseFiller.fill(JRBaseFiller.java:798)
at net.sf.jasperreports.engine.fill.JRFiller.fillReport(JRFiller.java:63)
at net.sf.jasperreports.engine.JasperFillManager.fillReport(JasperFillManager.java:402)
at net.sf.jasperreports.engine.JasperFillManager.fillReport(JasperFillManager.java:234)
at it.businesslogic.ireport.IReportCompiler.run(IReportCompiler.java:947)
at java.lang.Thread.run(Unknown Source)
Caused by: org.firebirdsql.jdbc.FBSQLException: The result set is closed
at org.firebirdsql.jdbc.AbstractResultSet.checkCursorMove(AbstractResultSet.java:217)
at org.firebirdsql.jdbc.AbstractResultSet.next(AbstractResultSet.java:249)
at net.sf.jasperreports.engine.JRResultSetDataSource.next(JRResultSetDataSource.java:95)
… 11 more
Impressão não foi preenchida. Tente utilizar uma Fonte de Dados Vazia …”

se alguem puder ajudar …

Tb estou com problema semelhante! Será que não tem ninguém que tenha feito algo parecido???
Eu até mandei e-mail para as meninas da GLOBAL CODE que vi numa ed da Java Magazine, mas elas não responderam nada até o momento… Ou não sabem resolver ou não quiseram me responder :?

Estou com o mesmo problema do amigo MarcosPadilha:
"Erro ao preencher impressão … Unable to get next record.
net.sf.jasperreports.engine.JRException: Unable to get next record. …

é meu primeiro relatorio utilizando sub-relatório… alguem tem uma dica mais direta sobre esse probleminha??

Boa tarde a todos.

Estive o mesmo problema que vocês tiveram para trabalhar com iReport+Firebird.

Não querendo ressucitar o tópico mais é que na busca de resolver o problema sempre via este tópico, então para que os que tiverem o mesmo problema, possa facilitar a busca aqui vai uma modo de como resolvi o problema.

Faça o seguinte
No Ireport ou onde você for criar a conexão com o Firebird adicione isso (?defaultResultSetHoldable=True )

Ficando assim por exemplo:
jdbc:firebirdsql:192.168.21.248/3050:C:/firebirdroot/SisClinica/SISCLINICA_1_0.fdb?defaultResultSetHoldable=True

Pelo que pude perceber em minhas buscas que isto é devido a uma falha do Jaybird.

Bom té mais…

Olá pessoal !!
Sou novato no IREPORT …
Tenho dois relatórios, preciso jogar a os campos de um noutro …
gostaria que me ajudassem com a passagem de parametros …
Tentei como subrelatorio mais não deu certo …
Muito Obrigado pela Atenção …

Qual foi a solucao??? Estou no mesmo dilema…

parece que já somos muitos! Eu tambem gostava de saber a solução.

Cumps, TIago

[quote=saulocamposi]oi pessoal ,

sou novato , estou com dificuldades pra trabalhar com subrelatórios no ireport .

alguma dica ?[/quote]

Bom dia!

Vc setou a propriedade “Expression class” para java.io.File ?
Definiu a “Parameters map Expression” para $P{REPORT_SCRIPTLET}.getHeaderMap() ?
Fez a passagem de parametros do “Master” para o Sub ?

Verifique se estas propriedades estão setadas corretamente.

Att.