[Resolvido]Agrupar dois relatorios no IReports

Boa tarde, colegas....estou com uma dúvida : 
Tenho dois reports, alimentados por 2 ArrayLists. Gostaria de saber como faço para
converte-los em um só. Um será como cabeçalho e o outro contendo uma tabela com
os dados. Meu código está assim: 
RelSaidaDoc rel = new RelSaidaDoc();

rel.testeChamada(dadosRel);

// Subrelatorio

RelSaidaDoc subrel = new RelSaidaDoc();
subrel.auxiliar(result, entid, tpdoc);

public void testeChamada(String[] dadosRel){

    try{
    List<LoteEnviado> loteenviado = new ArrayList<LoteEnviado>();	
    LoteEnviado loteenviado1 = new LoteEnviado();
    loteenviado1.setDoc(dadosRel[0]);
    loteenviado1.setEntidade(dadosRel[1]);
    loteenviado1.setDtInicial(dadosRel[2]);
    loteenviado1.setDtFinal(dadosRel[3]);
    loteenviado1.setTotalLotes(dadosRel[4]);
    loteenviado1.setQtdeDoc(dadosRel[5]);
    loteenviado.add(loteenviado1);
    DocSaidaREL relatorio = new DocSaidaREL();
    relatorio.imprimir(loteenviado);			
}catch(Exception e){
    System.out.println(e.getMessage());
}
	
}

public void imprimir(List<LoteEnviado> loteenviado) throws Exception {
    JasperReport report = JasperCompileManager.compileReport("c:/Users/Silvio/workspace/Sisprot/src/br/com/sms/sisprot/recibos/jasper/rellotesenviados.jrxml");
JasperPrint print = new JasperPrint();
print = JasperFillManager.fillReport(report,null, new JRBeanCollectionDataSource(loteenviado));
JasperExportManager.exportReportToPdfFile(print, "c:/Users/Silvio/workspace/Sisprot/src/br/com/sms/sisprot/recibos/jasper/rellotesenviados.pdf");
}

public void auxiliar(List<String[]>result,String entid, String tpdoc){
    	
    try{
        List<LoteEnviado> loteenviado = new ArrayList<LoteEnviado>();
        String[] registro = new String[6];
        int qtdetotal = 0;
        int k=0;
        while(k<=result.size()-1){
        registro = result.get(k);
        LoteEnviado loteenviado1 = new LoteEnviado();
        loteenviado1.setDtEnvio(registro[2]);
        loteenviado1.setNumInicialLote(registro[0]);
        loteenviado1.setNumFinalLote(calcularNumFinal(registro[0],registro[5]));
        loteenviado1.setNumLote(registro[3]);
        loteenviado1.setQtdeDoc(registro[5]);
        qtdetotal = qtdetotal + Integer.parseInt(registro[5]);
        if(k == result.size()-1){loteenviado1.setTotalGeral(String.valueOf(qtdetotal));}
            loteenviado.add(loteenviado1);
    	k = k + 1;
        }
        DocSaidaREL subrelatorio = new DocSaidaREL();
        subrelatorio.imprimirSubRel(loteenviado);
    }catch(Exception e){
        System.out.println(e.getMessage());
    }
    	
}

public void imprimirSubRel(List<LoteEnviado> lotes) throws Exception{
    JasperReport report = JasperCompileManager.compileReport("c:/Users/Silvio/workspace/Sisprot/src/br/com/sms/sisprot/recibos/jasper/subrellotesenviados.jrxml");
JasperPrint print = new JasperPrint();
print = JasperFillManager.fillReport(report,null, new JRBeanCollectionDataSource(lotes));
JasperExportManager.exportReportToPdfFile(print, "c:/Users/Silvio/workspace/Sisprot/src/br/com/sms/sisprot/recibos/jasper/subrellotesenviados.pdf");
}

 Li que precisa ser através de subrelatorio, mas não consegui encadear, podem me ajudar ?

Para a parte da tabela, passe o arraylist como sendo o datasource e para o header, insira no mapa de propriedades.

Então não é necessario subreport ? E esse mapa de propriedades para o header, recebe os campos sem necessidade de datasource ?

Se é para isso, não.

Cara, todos os métodos que preenchem o relatório (fillReport, se não me engano) recebem um map de propriedades (que você acessa via $P{nomeDoParametro}).
O datasource será necessário para o conteúdo da band details.Porém, você pode colocar tudo oque quer no header neste mapa.

Preencher o conteudo da details já consegui, mas pode me mostrar como passo esses parametros ?

A ideia básica é essa

Se fizer isso, você só precisa trocar o lugar onde vai utilizar os parâmetros.

Consegui assim:
HashMap<String,Object> map = new HashMap<String,Object>();
map.put(“doc”,tpdoc);
map.put(“entid”,entid);
map.put(“dtInicial”,dtInicial);
map.put(“dtFinal”,dtFinal);
map.put(“totalLotes”,totalLotes);
map.put(“qtdeDoc”,qtdeDoc);

JasperPrint print = new JasperPrint();
print = JasperFillManager.fillReport(report,map,new JRBeanCollectionDataSource(lotes));

Grato…:slightly_smiling_face:

Era exatamente isso que eu estava te falando.