Query dinâmica no Ireport

4 respostas
A

Olá a todos

eu crio um ficheiro .jrxml com o ireport que utilizo no meu código java.
A dúvida é que a minha query não é sempre a mesma, variando consoante a escolha do utilizador. Como faço para passar uma query dinamicamente do java para o ficheiro .jrxml?
É possivel?

Obrigado

4 Respostas

C

Como se define a escolha???

A

Olá Christielen

tipo: a minha query será algo do tipo:

Select * from table where semana='23';

ou seja, a semana será escolhida pelo utilizador.

Quando chamo o relatório:
JasperDesign jasperDesign = JRXmlLoader.load("C:\\teste.jrxml");  
JasperReport jasperReport = JasperCompileManager.compileReport(jasperDesign);

Map parameters = new HashMap();
parameters.put("titulo", "titulo");
    
JasperPrint jasperPrint = JasperFillManager.fillReport(jasperReport, parameters, getConnection());
JasperExportManager.exportReportToPdfFile(jasperPrint, "C:\\aiai.pdf");
queria passar a query dinamicamente, e não uma que já tivesse sido feita no ireport. Não sei se me fiz entender :roll:
C
public void geraRelatorio( ) throws JRException, Exception{
        
        ResultSet rs = null;
        Controle controle = new Controle();
        rs = controle.consultarContasPagarDiaria();
                                  
        JRResultSetDataSource jrRS = new JRResultSetDataSource(rs);
        Map parameters = new HashMap();

        String reportDest = "D://Programas//iReport-1.2.5//ContasPagarDiaria.pdf";

        JasperReport jr = JasperCompileManager.compileReport("D://Programas//iReport-1.2.5//ContasPagarDiaria.jrxml");
        JasperPrint jasperPrint = JasperFillManager.fillReport(jr, null,jrRS );

        JasperExportManager.exportReportToPdfFile(jasperPrint, reportDest);
        JasperViewer.viewReport(jasperPrint);                      
            
    }
rs = controle.consultarContasPagarDiaria();

Onde na chamada do método consultarContasPagasDiaria() na classe Controle retorna o resultSet da consulta específica

Você poderá fazer uma ação para cada tipo de relatorio esperado, sempre retornando o resultSet da consulta.

JRResultSetDataSource jrRS = new JRResultSetDataSource(rs);

Então você coloca o resultSet como acima.

Não sei se fui mto clara ou se fugi do escopo, qualquer coisa pergunte!!! :roll:

A

Christielen,
Testei e funcionou direitinho!

:lol: :razz:
Muito Obrigado!!!

Criado 18 de outubro de 2006
Ultima resposta 19 de out. de 2006
Respostas 4
Participantes 2