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?
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.
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.