Query dinâmica no IReport

Pessoal,
estou gerando uns relatórios para um projeto, e nos relatórios eu preciso passar diversos filtros e daí a nescessidade de criar essa query em runtime. Já dei umas pesquisadas e sei como fazer passando parâmetros. Porém há situações que eu preciso realmente modificar a query. Por exemplo, se o usuário optar por fazer um filtro por cliente, eu vou precisar adicionar uma string na query tipo : " AND CLIENTE = ‘joão’ ".
Alguém sabe como posso fazer isso?

Grato,
Thiago Melo.

Não é mais simples passar o ResultSet direto para o iReport?

Se não me engano, tu pode fazer expressões dentro do próprio IReport para tratar esse tipo de situação, porém achar referência para isso não é fácil. Mas lembro de ter visto algo no TheServerSide.com.

Eu sei que é possível utilizar parameters passados para a query utilizando a notação:

select * from table where id in( !$P{listaDeIdsSeparadaPorVirgula}

Atente ao ponto de exclamação antes do “$P” - isso faz com que o iReport “parseie” o parâmetro.

Mas não sei se funciona da maneira que precisa.

Obrigado pelas dicas galera. Lipe, vc tem algum código de exemplo de como posso passar o ResultSet para poder gerar o relatório?

Grato,
Thiago Melo.

ResultSet rs = // faz a coisa toda com a Connection e seus amiguinhos
JRResultSetDataSource jr = new JRResultSetDataSource( rs );
JasperReport jasperReport = JasperManager.loadReport( reportName );
JasperPrint jasperPrint = JasperFillManager.fillReport( jasperReport, parameters, jr );
JasperExportManager.exportReportToPdf( jasperPrint );

Isto é só um exemplo. Na aplicação trate exceções e feche os recursos do banco de dados - ResultSet, Statement, Connection - após gerar o relatório.

vlw mesmo LIPE!!

Ajudou aqui também!! Valeu…