Gerando múltiplos relatórios no iReport e juntando em um

2 respostas
Ziguifrid

Tenho o código abaixo que gera um arquivo a cada vez que o for completa o ciclo.

Tem jeito de ao invés de gerar o arquivo toda vez, juntar todos em um mesmo arquivo?

public void mostrar_folha_de_chamada_lista(String professor, List<Aula> aula){

    try {
JasperPrint print = null;
for(int i=0;aula.size()>i;i++){   

 sql = "SELECT aluno.idade_aluno, cadastrar_aluno_aula.matricula_cadastrar_aluno_aula, cadastrar_aluno_aula.aluno_cadastrar_aluno_aula, "
         + "aluno.exame_medico_proximo_aluno, aluno.telresidencial1_aluno, "
         + "aluno.telcelular9_aluno, "
         + "cadastrar_aluno_aula.professor_cadastrar_aluno_aula, "
         + "cadastrar_aluno_aula.local_aula_cadastrar_aluno_aula, "
         + "cadastrar_aluno_aula.modalidade_cadastrar_aluno_aula, "
         + "cadastrar_aluno_aula.semana_cadastrar_aluno_aula, "
         + "cadastrar_aluno_aula.hora_cadastrar_aluno_aula, "
         + "cadastrar_aluno_aula.idade_cadastrar_aluno_aula, "
         + "cadastrar_aluno_aula.sexo_cadastrar_aluno_aula, "
         + "cadastrar_aluno_aula.nivel_cadastrar_aluno_aula "
         + "FROM `cadastrar_aluno_aula` "
         + "Inner join aluno on cadastrar_aluno_aula.matricula_cadastrar_aluno_aula = aluno.matricula_aluno "  
         + "where "
         + "professor_cadastrar_aluno_aula ='"+professor +"' and "
         + "local_aula_cadastrar_aluno_aula ='"+aula.get(i).getLocal_aula()+"' and "
         + "modalidade_cadastrar_aluno_aula ='"+aula.get(i).getModalidade()+"' and "
         + "semana_cadastrar_aluno_aula ='"+aula.get(i).getDias_semana()+"' and "
         + "hora_cadastrar_aluno_aula ='"+aula.get(i).getHorario_aula()+"' and "
         + "idade_cadastrar_aluno_aula ='"+aula.get(i).getFaixa_etaria()+"' and "
         + "sexo_cadastrar_aluno_aula ='"+aula.get(i).getSexo()+"' and "
         + "nivel_cadastrar_aluno_aula ='"+aula.get(i).getNivel()+"' order by aluno_cadastrar_aluno_aula asc";       
 
PreparedStatement ps = con.prepareStatement(sql);
rs = ps.executeQuery();
        
        JRResultSetDataSource jrRS = new 
JRResultSetDataSource(rs) ;
        
        JasperReport report = JasperCompileManager.compileReport(System.getProperty("user.dir")+""
                + "/src/FolhaChamada/FC1.jrxml");       
         
        Map parametro = new HashMap();
        parametro.put("professor_aula", professor);
        parametro.put("local_aula_aula", aula.get(i).getLocal_aula());
        parametro.put("modalidade_aula", aula.get(i).getModalidade());
        parametro.put("semana_aula", aula.get(i).getDias_semana());
        parametro.put("hora_aula", aula.get(i).getHorario_aula());
        parametro.put("faixa_etaria_aula", aula.get(i).getFaixa_etaria());
        parametro.put("sexo_aula", aula.get(i).getSexo());
        parametro.put("nivel_aula", aula.get(i).getNivel());
        
        print = JasperFillManager.fillReport(report, parametro, jrRS);
        

        JasperViewer view = new JasperViewer(print, false);
        
        view.setTitle("Folha de Chamada");
        view.setExtendedState(Frame.MAXIMIZED_BOTH);
        view.setVisible(true);
        
        
        
}//fim do for        
    } catch (SQLException | JRException e) {
        System.out.println("e "+e.getMessage());
    }


}

2 Respostas

G

Cara, não entendi bem a sua dúvida mas me parece que vc quer escrever em um arquivo já existente e com dados. Se for isso, tem como sim. Não sei te dizer, mas se procurar na internet sobre manipulação de arquivos vc com ctz acha.

Mas, eu queria só te dar uma dica. Pq, ao invés desse select gigante, vc não cria uma view no banco e seleciona os dados dessa view? Sendo assim, vc poderia fazer :

Select * from "Sua_View"
Where
//aqui os filtros com base nos dados retornados pela view

Isso ia cortar metade dessa string ai

RodrigoKaos

JasperReport report = JasperCompileManager.compileReport(System.getProperty("user.dir")+"" + "/src/FolhaChamada/FC1.jrxml");

Acho que nessa parte do progrma é criado um arquivo com o caminho especificado, o user.dir provavelmente muda, então é criado um novo arquivo. se tu deixar um caminho fixo provavelmente resolveria teu problema.

Criado 2 de setembro de 2013
Ultima resposta 2 de set. de 2013
Respostas 2
Participantes 3