iReport - Subrelatórios [NÃO RESOLVIDO]

Galera,

Desculpem o desabafo mas já tô entrando em desespero. Seguinte tenho um RelPrincipal que chama Sub01. O Sub01 chama o Sub02 e o Sub02 chama o Sub03. Porém funciona apenas o RelPrincipal chamando o Sub01. Os demais, aparecem os títulos mas ficam em branco.

Os dados eu estou buscando da minha view, de alguns objetos JTable. Não utilizo conexão com BD, pois recebo os dados a partir de uma operação webservice.

Vejam meu código:

private void abreRelatorioGeral() throws JRException, Exception {
        try {
            InputStream pathRelGeral = getClass().getClassLoader().getResourceAsStream("RelatorioGeral.jasper");
            InputStream pathRelTempLivre = getClass().getClassLoader().getResourceAsStream("RelatorioGeral_subreportTempoLivre.jasper");

            // TEMPO LIVRE (Terceiro e último subrelatorio)
            // Este relatorio diferentemente dos outros não recebe os dados de uma tabela
            Map<String, Object> paramsRelTempoLivre = new HashMap<String, Object>();
            paramsRelTempoLivre.put("TempoLivre", jLabelTempoDuracao.getText());
            paramsRelTempoLivre.put("Percent", jLabelTotalPercentual.getText());

            // PAUSA RESUMO (Segundo subrelatorio)
            Map<String, Object> paramsRelPausaRes = new HashMap<String, Object>();
            paramsRelPausaRes.put("relTempoLivre", pathRelTempLivre);
                                    
            // PAUSA DETALHE (Primeiro subrelatorio)
            PausaDetalheTableModel tmPausaDetalhe = (PausaDetalheTableModel) jXTablePausasDetalhe.getModel();  
            tmPausaDetalhe.setColumnName(0,"Motivo");
            tmPausaDetalhe.setColumnName(1,"DataI");
            tmPausaDetalhe.setColumnName(2,"HoraI");
            tmPausaDetalhe.setColumnName(3,"DataT");
            tmPausaDetalhe.setColumnName(4,"HoraT");
            tmPausaDetalhe.setColumnName(5,"Duracao");
            Map<String, Object> paramsRelPausaDet = new HashMap<String, Object>();
            paramsRelPausaDet.put("relPausaResumo", new JRTableModelDataSource(jXTablePausasResumo.getModel()));

            // LOGIN/LOGOUT (Relatório Principal)
            AgentesLoginLogoutTableModel tmLoginLogout = (AgentesLoginLogoutTableModel) jXTableLoginLogout.getModel();  
            tmLoginLogout.setColumnName(0,"Data1");
            tmLoginLogout.setColumnName(1,"Hora1");
            tmLoginLogout.setColumnName(2,"Data2");
            tmLoginLogout.setColumnName(3,"Hora2");
            tmLoginLogout.setColumnName(4,"Duração");
            Map<String, Object> paramsRelGeral = new HashMap<String, Object>();
            paramsRelGeral.put("agente", jComboBoxAgente.getSelectedItem().toString());
            paramsRelGeral.put("dataini", dataini);
            paramsRelGeral.put("datafim", datafim);        
            paramsRelGeral.put("relPausaDet", new JRTableModelDataSource(jXTablePausasDetalhe.getModel()));   
            
            try {
                JasperPrint jasperPrintRelGeral = JasperFillManager.fillReport(pathRelGeral, paramsRelGeral, new JRTableModelDataSource(jXTableLoginLogout.getModel()));

                JasperViewer.viewReport(jasperPrintRelGeral, false);
            } catch (JRException ex) {
                ex.printStackTrace();
            }
        } catch (Exception ex) {
            ex.printStackTrace();
        }
    }

Segue em anexo os jrxml dos relatórios. O último não deu para enviar pois o GUJ só permite anexar 3 arquivos. Mas de qualquer forma, se alguém puder ajudar, ficarei imensamente grato.

Obrigado!

Vc está passando os datasources por parametro corretamente?

Nao li o topico, mas, qnd vejo subrelatorios, sempre vale ressaltar “antes de ver a necessidade dos subrelatorios, veja se não da para aplicar agrupamento”

Sim, na aba Subrelatório em “Expressão de Conexão/Fonte de Dados” selecionei “Usar um datasource” e lá coloco o parâmetro.

Engraçado que o mesmo procedimento que fiz para o Relatório Principal e para o Primeiro subrelatorio (que funcionam), fiz para os outros 2 que não funcionam.

Bem estranho. Lembre que vc tem que declarar os parametros antes de usa-los nos subrelatorios. Mas, provavelmente vc já fez isso…

Bom, lembre-se que vc tem que repassar o parametro que chega no primeiro sub relatorio, para o segundo e assim por diante.

Como é que é? Sendo assim, o último subrelatorio teria como parâmetro todos os parâmetros dos relatórios de cima? Esquisito isso! Pode explicar melhor por favor?

Não cara, só o que vc vai usar.

Já está assim então :cry: Alguma outra sugestão?

Tem que funcionar, deve ter algo que vc fez no primeiro sub que não fez no segundo, alguma configuração.

Vc pode fazer um teste cara, crie novamente o segundo sub usando o primeiro como modelo, já que este funciona.

Cara, pior que nem assim funciona. Fiz o que vc sugeriu, e tbém já refiz tudo. Deve ter algum detalhe para casos de relatório com mais de um subrelatório.

Alguém teria algum exemplo que pudesse disponibilizá-lo?

Agradecido.

Galera,

Alguém poderia me dar uma força extra e dar uma olhada nos meus relatórios? Tô incluindo o último. Os demais estão no primeiro post.

Me ajudem a descobrir onde estou dando cabeçada :cry:

Valeusss :wink:

Poxa… pior q eu estou com um problema que provavelmente será igual ao que vc tah passando… O erro simplesmente é que no viewer do ireports funciona normal… no sistema web é que não rola de jeito nenhum… pelo que vi por algum motivo o reports principal não passa o valor do parâmetro para os subreports… ai como uso um valor de um field do report principal como parametro nas querys dos subreports eles nao retornam nada…

Bem vindo ao clube dos encalhados no iReport…

Galera,

Detesto ficar pedindo favor, mas será que alguém poderia me ajudar nessa batalha sem fim? Ou postanto um exemplinho de um relatório com vários subrelatórios ou dando uma olhada nos meus relatórios?

Valeu!!!