IReport - preencher subrelatorio com hashmap

6 respostas
PatricMaffi

aee gente estou com problemas para preencher um subrelatorio com hashmap
ele simplismente não preenche o campo que eu criei
vou postar o codigo

JRMapArrayDataSource mapArrayDataSource;
        try
        {
            String reportFileName = "C:\\testejasper\\Plano_Projeto.jasper";
            parameters = new HashMap();
            //
            parameters.put("SUBREPORT_DIR", "C:\\testejasper\\");
            parameters.put("nome_cliente", "CLIENTE");
            
            HashMap[] pLojas = new HashMap[3];
            for(int i = 0; i < 2; i++)
            {
                HashMap<Object,Object> hm = new HashMap<Object,Object>();
                hm.put("SUBREPORT_DIR", "C:\\testejasper\\");
                hm.put("razao_social", "razao_social" + i);
                pLojas[i] = hm;
            }
            mapArrayDataSource = new JRMapArrayDataSource(pLojas);
            
            impressao = JasperFillManager.fillReport(reportFileName, parameters, mapArrayDataSource); 

            JasperExportManager.exportReportToPdfFile(impressao, "c:\\RelatorioLivros.pdf");

campo no detail do subrelatorio

$V{razao_social}

6 Respostas

PatricMaffi

alguem???

CarlosEduardoDantas

voce está tentando passar valores para o subrelatorio através do seu codigo fonte

existe uma escadinha chamada:

codigo fonte -> relatorio -> subrelatorio

ou seja… pelos nomes estou aqui imaginando que vc queira mostrar os livros agrupados por um cliente… entao o relatorio principal contem dados de cliente e o subrelatorio os livros por cliente

a solucao é … na aplicacao vc passa os parametros de cliente e subreport dir… e o parametro do cliente para alimentar o subrelatorio virá do relatorio principal e nao do seu codigo fonte.

pq usando sua solucao acima… se a aplicacao consegue sozinha alimentar o relatorio mestre e o subrelatorio, nao existiria necessidade de se ter subrelatorio… poderia fazer agrupamento simples :wink:

PatricMaffi

teria um exemplo de como passar os dados para o ralatório
e depois para o subrelatório??

CarlosEduardoDantas

PatricMaffi:
teria um exemplo de como passar os dados para o ralatório
e depois para o subrelatório??

me mostra as 2 queries… do relatorio e do subrelatorio… e quais devem ser os parametros.

PatricMaffi

consegui resolver, vou postar o tutorial que eu usei como exemplo para resolver o problema e o codigo como ficou

JRMapArrayDataSource mapArrayDataSource;
        
            String reportFileName = "C:\\Plano_Projeto.jasper";    

            parameters = new HashMap();
            //
            parameters.put("nome_cliente", "CLIENTE");
            parameters.put("nome_gerente_projetos", "GERENTE");
            parameters.put("SUBREPORT_DIR", "C:\\Plano_ProjetoSubRel.jasper");
            HashMap[] pLojas = new HashMap[2];
            
            for(int i = 0; i < 2; i++)
            {
                HashMap<Object,Object> hm = new HashMap<Object,Object>();
                hm.put("SUBREPORT_DIR", "C:\\");
                hm.put("razao_social", "razao_social" + i);
                pLojas[i] = hm;
            }
            mapArrayDataSource = new JRMapArrayDataSource(pLojas);
            parameters.put("deps", mapArrayDataSource);

            impressao = JasperFillManager.fillReport(reportFileName, parameters); 

            JasperExportManager.exportReportToPdfFile(impressao, "c:\\arquivo.pdf");
marthian_2

O meu continua com valores nulos…

Criado 13 de novembro de 2008
Ultima resposta 12 de ago. de 2009
Respostas 6
Participantes 3