Duplicação de Sub-relatorios

0 respostas
W

Olá pessoal,

estou desenvolvendo um relatorio principal que contem dois sub-relatorios dentro dele, porem esses dois sub-relatorios estão sendo duplicados na hora da visualização, se transformando em 4. Na configuração dos meus sub-relatorios do Ireport estou utilizando a seguinte configuração:

“subReport expression” = $P{caminho_sub_entrada}
“Data source expression” = new net.sf.jasperreports.engine.data.JRBeanCollectionDataSource($P{listaEntradas})

Os subrelatorios estão sendo preenchidos com uma list carregada e passada por parametro para os sub-relatorios, segue o codigo fonte:

File relatorioPrincipal = new File("Relatorios"+File.separator+"fechamento_caixa.jrxml");
        File relatorioSaidas = new File("Relatorios"+File.separator+"fechamento_caixa_saidas.jasper");
        File relatorioentradas = new File("Relatorios"+File.separator+"fechamento_caixa_entrada.jasper");
      

        HashMap<String, Object> mapa = new HashMap<String, Object>();
        mapa.put("dataInicio", dataInicial);
        mapa.put("dataFim", dataFinal);
        mapa.put("totalEntrada", totalEntrada);
        mapa.put("totalSaida", totalSaida);
        mapa.put("saldo", saldo);
        mapa.put("usuario", usuario.getNome());
        mapa.put("lista", listaDados);
        mapa.put("listaEntradas", listaDadosEntrada);
        mapa.put("SUBREPORT_DIR", relatorioSaidas.getAbsolutePath().toString());  
        mapa.put("caminho_sub_entrada", relatorioentradas.getAbsolutePath().toString());
        
        try {
            
            //neste ponto com a lista preenchida vc cria um data source para o relatorio
            JRDataSource jrds = new JRBeanCollectionDataSource(listaDados); //a lista que vc carregou vai servir de data source para o relatorio
            
            //Desenha o relatorio
            JasperDesign desenho = JRXmlLoader.load(relatorioPrincipal.getAbsolutePath());
            
            //compila o relatorio
            JasperReport relatorio = JasperCompileManager.compileReport(desenho);
            
            //Chama a impressao do relatorio passando o layout, os parametroe e o resultset carregado
            JasperPrint print = JasperFillManager.fillReport(relatorio, mapa, jrds); //new net.sf.jasperreports.engine.data.JRBeanCollectionDataSource(listaDados)
            
            //Cria janela de visualização para o relatorio
            //opção false significa que ao fechar o relatorio a aplicação continuara aberta
            JasperViewer visualizacao = new JasperViewer(print, false);
            
            //Apresenta o relatorio na tela
            visualizacao.show();
Criado 27 de agosto de 2012
Respostas 0
Participantes 1