iReport com List [RESOLVIDO]

4 respostas
java
A

Pessoal, boa tarde!

Minha aplicação é em swing e estou aprendendo a usar o iReports, e logo de cara ele já pede uma conexão. O problema é que eu não quero abrir mais uma conexão no meu projeto, apenas uma. E já tenho o conteúdo que quero emitir o relatório numa tabela já filtrada pela pesquisa.

Este filtro foi feito numa lista, e gostaria de pegar essa lista e enviar para um relatório, só que nem o layout eu consigo fazer sem criar uma conexão.

Alguem poderia dar um exemplo, ou disponibilizar algum link com o material referente a esse assunto em específico? Porque estou tendo dificuldades em encontrar na web.

Obrigado e abraços,

Alessandro.

4 Respostas

L

`dá uma olhada nesses links

`

A

Então, eu já tinha visto esse video no youtube, mas nao é bem isso que preciso e se é não entendi como implementar.

Na prática eu tenho um método de geração de relatórios como segue abaixo, eu so queria trocar de conexão com o postgre para uma lista simples(java.util.List;).
Vi conforme este post também e não funcionou: http://stackoverflow.com/questions/3958231/java-jasper-reports-list-as-data-source

public void geraRelatorio() throws SQLException, ClassNotFoundException, JRException {
    Connection conn = null;
    PreparedStatement stmt = null;
    ResultSet rs = null;  

    conn = Conectabd.conectabd();
    String sql = "select * from usuarios";
    stmt = conn.prepareStatement(sql);
    rs = stmt.executeQuery();
    JRResultSetDataSource relatResul = new JRResultSetDataSource(rs);
    JasperPrint jpPrint = JasperFillManager.fillReport("src/RELATORIOS/CadUsuarios.jasper", new HashMap(), relatResul);
    JasperViewer jv = new JasperViewer(jpPrint,false);
    jv.setVisible(true);
    jv.toFront();

    
    if (rs != null) {
        rs.close();
    }
    if (stmt != null) {
        stmt.close();
    }
    if (conn != null) {
        try {
            conn.close();
        } catch (SQLException ex) {
            Logger.getLogger(FrmRelatorio.class.getName()).log(Level.SEVERE, null, ex);
        }
    }  

}
T

Substitui o seu “relatResul” por um new JRBeanCollectionDataSource(listaDeObjetos));

Ficaria assim:
JasperFillManager.fillReport("xxx.jasper", parameters, new JRBeanCollectionDataSource(listaDeObjetos));

É isso que vc queria fazer?

A

Isso ai amigo, muito obrigado!
Já está implementado e funcionando redondo. E menos uma conexão na minha aplicação.

Criado 3 de fevereiro de 2016
Ultima resposta 4 de fev. de 2016
Respostas 4
Participantes 3