Parametros no Ireports

bom dia !

bom… eu tenho usado alguns relatorio no ireports e tem funcionado tudo ok ! beleza !

eu ultilizo parametros em minha query no Ireport… como o exemplo a seguir :

SELECT a.NOME, t.MATRICULA, f.FALTA01
FROM SESPA_01_2007.dbo.TURMALU t LEFT OUTER JOIN
ALUNOSS a ON a.MATRICULA = t.MATRICULA INNER JOIN
FICHALU f ON f.TURMA = t.TURMA AND f.MATRICULA = t.MATRICULA
WHERE (f.COD_DISC = $P{COD_DISC}) AND (t.TURMA = $P{COD_TURMA})
ORDER BY a.NOME

beleza… dai o que tem que ser feito… tem que criar os parametros no ireports e colocar o tipo dele ex:

COD_TURMA = java.lang.Integer
COD_DISC = java.lang.Integer

… o que preciso !
eu preciso de um parametro do tipo que ele pegua a base de dados… dai ficaria assim

SELECT a.NOME, t.MATRICULA, f.FALTA01
FROM $P(NOME DA BASE)[size=18] [/size].dbo.TURMALU t LEFT OUTER JOIN
ALUNOSS a ON a.MATRICULA = t.MATRICULA INNER JOIN
FICHALU f ON f.TURMA = t.TURMA AND f.MATRICULA = t.MATRICULA
WHERE (f.COD_DISC = $P{COD_DISC}) AND (t.TURMA = $P{COD_TURMA})
ORDER BY a.NOME

alguem sabe se tem como fazer isto ??? pois este relatorio é para um sistema de notas de alunos… .e dai cada periodo é uma base de dados com as mesmas tabelas…

att
Breno

Olá Breno,

Bom, não é possível utilizar este tipo de consulta dentro do Ireports… bom a solução e executar a consulta fora do relatório e passar o resultado na forma de ResultSet ou Lista para o relatório.

Bom depois de executar a consulta usando JDBC que você já tiver o ResultSet use o código abaixo:

JasperReport jasperReport = (JasperReport) JRLoader.loadObject (urlRelatorio); jasperPrint = JasperFillManager.fillReport(jasperReport, parameters, new JRResultSetDataSource(resultSet)); OutputStream outputStream = servletResponse.getOutputStream(); ByteArrayOutputStream baos = new ByteArrayOutputStream(); JRPdfExporter exporter = new JRPdfExporter(); exporter.setParameter(JRExporterParameter.JASPER_PRINT, jasperPrint); exporter.setParameter(JRExporterParameter.OUTPUT_STREAM, baos); exporter.exportReport(); byteStream = baos.toByteArray(); outputStream.write(byteStream); outputStream.flush(); outputStream.close()

:wink:

Olá Marcos !!

Blz, obrigado pela dica !! vou ver se dá certo !!

thanks !!