Relatório + sub Relatório no iReport

8 respostas
fredsilva.sistemas

Olá galera!
Tem tempo que eu tô com um problema aqui para gerar um relatório que recebe uma query da minha aplicação e passa como parâmetro o número do pedido para a query do sub relatório.
Tá acontencendo o seguinte:
quando eu rodo a minha aplicação aparece a menssagem dizendo que o documento não contém página, mas acontece que a query que eu passo está correta, adicionei o parâmetro passando o field do relatório para o sub relatório (seu eu compilar só o sub relatório passando o parâmetro ele roda blz).
Vou passar o código da minha aplicação que monta o reltório principal e passa a consulta para o relatório.
Desde já agradeço!

public void geraRelatorioPedAgrupado(String unidade, Integer idUnidade, java.util.Date dataInicial, java.util.Date dataFinal) throws JRException, Exception
    {
            //Formatação de data p/ aparecer no período do relatório (mandado via parametro hashMap
            String dataInicialParm = new SimpleDateFormat("dd/MM/yyyy").format(dataInicial);
            String dataFinalParm = new SimpleDateFormat("dd/MM/yyyy").format(dataFinal);
            //Formatação de data p/ mandar pelo ResultSet para o relatório
            String dataInicialJrRs = new SimpleDateFormat("yyyy-MM-dd").format(dataInicial);
            String dataFinalJrRs = new SimpleDateFormat("yyyy-MM-dd").format(dataFinal);

            Connection con = getConnection( );
            Statement stm = con.createStatement( );
            String query = "SELECT DISTINCT\"PED_IDDOOBJETO\", \"UNI_DESCRICAO\", \"PED_DATA\", \"PED_TOTAL\", \"PES_NOME\" FROM \"PEDIDOS\", \"UNIDADES\", \"ITENSPEDIDO\", \"PESSOA\" WHERE \"PED_IDUNIDADE\" = "+idUnidade+" AND \"PED_DATA\" >= '"+dataInicial+"' AND \"PED_DATA\" <= '"+dataFinal+"' AND\"PED_IDDOOBJETO\" = \"ITEPED_IDPEDIDO\" AND \"PED_IDUNIDADE\" = \"UNI_IDDOOBJETO\" AND \"PED_IDUSUARIO\" = \"PES_IDDOOBJETO\";";
            ResultSet rs = stm.executeQuery( query );
            /* implementação da interface JRDataSource para DataSource ResultSet */
            JRResultSetDataSource jrRS = new JRResultSetDataSource( rs );
            /* HashMap de parametros utilizados no relatório. Sempre instanciados */
            Map parameters = new HashMap();

           
            parameters.put("unidade", unidade);
            parameters.put("dataInicial", dataInicialParm);
            parameters.put("dataFinal", dataFinalParm);
            /* Preenche o relatório com os dados.*/
            String jasperPrint = JasperFillManager.fillReportToFile( "Relatórios/PedidosAgrupados.jasper", parameters, jrRS );
            JasperViewer viewer = new JasperViewer(jasperPrint, false, false);
            viewer.setExtendedState(JasperViewer.MAXIMIZED_BOTH);
            viewer.setVisible(true);
    }

8 Respostas

fredsilva.sistemas

Consegui fazer o relatório comunicar com o sub relatório, mas quando eu executo a minha aplicação o sub relatório fica em branco.
Como eu faço para ele aparecer também?
T+

fredsilva.sistemas

Uma luz por favor! :cry: :cry:

furutani

Verifique se realmente está chegando dados para o sub-relatório.
Não vi no seu código o DataSource para o sub-relatório.

fredsilva.sistemas

furutani:
Verifique se realmente está chegando dados para o sub-relatório.
Não vi no seu código o DataSource para o sub-relatório.

Como eu poderia montar o DataSource para o sub-relatório?
Obrigado!
T+

furutani

Dá uma olhada aqui
http://www.furutani.com.br/2009/02/usando-o-jrbeancollectiondatasource/

Basicamente você precisa indicar no campo DataSource expression o campo ou connection que você quer que o sub-relatório utilize.

fredsilva.sistemas

Furutani,
na verdade eu acho que teria que passar algum parâmetro da minha aplicação para o sub-relatório para que ele possa abrir junto, pois eu utilizo uma query no sub-relatório que recebe na cláusula WHERE de um field do relatório principal. E tá funcionando blz quando eu testo no iReport, mas quando executo pela aplicação, conforme o código do primeiro post, ele só me mostra o código do relatório principal.
Vc sabe o que eu preciso fazer no código da minha aplicação para que o sub-relatório seja gerado junto?

OBS: Olhei o link que vc me passou, mas não é o meu caso, pois estou utilizando resultSet’s para o relatório e o sub e não JRBeanColletion.
T+

itscefet03

Provavelmente é a propriedade “When no data” do subrelatório que faz isso ocorrer.

fredsilva.sistemas

Como eu deveria configura-la?
Obrigado!
T+

Criado 10 de setembro de 2009
Ultima resposta 10 de out. de 2009
Respostas 8
Participantes 3