[RESOLVIDO] Repassando consulta pro iReport

5 respostas
Bambatera

Galera já procurei na net mas não encontrei o que eu queria; a questão é a seguinte, estou desenvolvendo uma aplicação swing que gera automaticamente minhas consultas ao banco quando necessário, até aí tudo funciona perfeitamente, mas quando eu quero criar um relatório, aí já complica um pouco, procurei na net mas eu somente encontro a criação de relatórios pelo wizard do iReport, porém, eu quero que o relatório que eu montei apresente os dados que eu puxar na minha tela swing, sem eu ter que criar um relatório pra cada select que eu fizer.

Alguém tem alguma dica de como posso enviar a query montada automaticamente pro relatório que eu criei?

Desde já agradeço a ajuda.

5 Respostas

jurunaloco

olha… passar a query é facil… vc cria um parametro String e passa…
no campo do sql vc poe: $P!{query} (nao esqueça do ponto de interrogação nesse caso)

agora o problema são os campos do relatório… que terao que ser modificados…
tem como vc montar um relatorio jasper todo via programação… porém é meio trabalhoso.

erico_kl

Você consegue isso passando um DataSource para o relatório… Este pode vir através do retorno de uma uma consulta sua (JRResultSetDataSource), ou, da forma mais OO, através de um JRBeanCollectionDataSource, onde você passa a sua lista de objetos…

Bambatera

Erico, onde tem um passo-a-passo pra passar o DataSource, pois é exatamente isso que eu quero, passar o ResultSet pro relatório, pra que seja apresentado com os filtros aplicados à consulta em tempo de execução.

erico_kl

Na verdade você pode passar o seu ResultSet no construtor de JRResultSetDataSource e aí passar este objeto para o fillReport com o JasperFillManager. Não tem muito segredo, dê uma olhada nessas classes e veja se você consegue implementar o que precisa. Qualquer coisa poste aqui conforme você for fazendo…

Bambatera

Erico, valeu pela ajuda, consegui resolver aqui, realmente é bem simples. Segue parte do código:

HashMap hmParam = new HashMap();
        objRs = objQuery.executaQuery();
        jrRs = new JRResultSetDataSource(objRs);
        objRel = JasperFillManager.fillReport(strRelatorio, hmParam, jrRs);
Criado 18 de outubro de 2012
Ultima resposta 23 de out. de 2012
Respostas 5
Participantes 3