SubRelatorio com IREPORT

3 respostas
Vinny

Meu problema é o seguinte quando eu rodo minha aplicação o relatorio funciona normal
mas não aparece as informações do subrelatorio

Meu relatorio é uma nota de venda
onde aparece os itens da venda as informações da venda
e tem esse subrelatorio que era para aparecer as parcelas dessa venda so
que não aparece fica em branco, quando eu rodo pelo Ireport as parcelas aparece mas quando eu
chamo pela minha aplicação não aparece, meu codigo que eu estou usando para chamar esse
relatorio é o seguinte:

JasperReport jasperReport = JasperCompileManager.compileReport(caminho+ "\\notaVenda.jrxml");
                         JasperReport jasperReportSub = JasperCompileManager.compileReport(caminho+ "\\parcelasPagar.jrxml");
                         Map parametros = new HashMap();
                         parametros.put("SUBREL", jasperReportSub);
                         JasperPrint jasperPrint = JasperFillManager.fillReport(jasperReport, parametros, new JRResultSetDataSource(rs));
                         JasperViewer jasperViewer = new JasperViewer(jasperPrint, false );
                         jasperViewer.setDefaultCloseOperation(JasperViewer.DISPOSE_ON_CLOSE);
                         jasperViewer.setTitle("Nota da Venda");
                         jasperViewer.setVisible(true);

Alguém já passou por isso, se sim me diga como eu posso resolver isso?

Abraço.

3 Respostas

Vinny

Não sei pq mas esse topico foi criado 2 veses!

Andre_Brito

Tem que dar uma olhada na subexpression que vai pro seu relatório no iReport. Você deve passar uma lista pra ele. E depois tem que debugar pra ver se essa lista vem de forma correta. Se você puder (ou quiser) esperar, a noite posso colocar um exemplo (provavelmente seu problema já vai estar resolvido).

Basicamente, o que você pode fazer é o seguinte:

  • Criar o subrelatório e colocar no relatório principal.
  • Clicar nas propriedades do subrelatório e passar pra ele (no Subreport Expression) um objeto do tipo JRDataSource (new NomeDoSeuObjeto(listaQueVemDeUmObjetoNoRelatorioPrincipal), no caso um DataSource).
  • :slight_smile:

Acho que esse parâmetro que você passa ali (que é o subreport) não precisaria usar se fizesse da maneira que lhe falo. Mas não tenho certeza porque nunca compilei via código.

L

Cara eu faco assim,no meu relatorio principal eu crio um parametro e nas propriedades do subRelatorio coloco ele para utilizar um dataSource e coloco a seguinte expressao nele:

new JRBeanCollectionDataSource($P{seuPArametroDoTipoCollection})

Lembrando que se o relatorio principal ou o subRelatorio nao contiver dados nao vai funcionar tbm.

Tbm costumo passar o subrelatorio como parametro em um InputStream.

Criado 3 de março de 2010
Ultima resposta 4 de mar. de 2010
Respostas 3
Participantes 3