Duvida JasperReports: alguem deve saber!

Seguinte, gerei um relatorio p minha app q mostra todos os sistemas cadastrados (select id, nome, descricao from sistema), fiz outro relatorio q vai mostrar os msm sistemas so q no ANO q eu determinar, dai, eu criei um parametro chamado ANO no relatorio e to tentando jogar esse parametro no query do relatorio (SELECT id, nome, descricao, FROM sistema WHERE data_inicio LIKE ‘%$P{ANO}%’), so q ta dando um pau ai q n resolvo, eh possivel jogar parametros/variaveis na query do relatorio??? Se n , como faco esse relatorio receber o parametro ANO e jogar na query? Vlw…

O erro q dar eh esse:

Error filling print... Error preparing statement for executing the report query :   SELECT id, nome, descricao, data_inicio, estado FROM sistema WHERE data_inicio LIKE '%?%';   
net.sf.jasperreports.engine.JRException: Error preparing statement for executing the report query :   SELECT id, nome, descricao, data_inicio, estado FROM sistema WHERE data_inicio LIKE '%?%';        at net.sf.jasperreports.engine.query.JRJdbcQueryExecuter.createStatement(JRJdbcQueryExecuter.java:164)      at net.sf.jasperreports.engine.query.JRJdbcQueryExecuter.createDatasource(JRJdbcQueryExecuter.java:103)      at net.sf.jasperreports.engine.fill.JRFillDataset.createQueryDatasource(JRFillDataset.java:673)      at net.sf.jasperreports.engine.fill.JRFillDataset.setDatasource(JRFillDataset.java:610)      at net.sf.jasperreports.engine.fill.JRFillDataset.setParameterValues(JRFillDataset.java:599)      at net.sf.jasperreports.engine.fill.JRBaseFiller.setParameters(JRBaseFiller.java:864)      at net.sf.jasperreports.engine.fill.JRBaseFiller.fill(JRBaseFiller.java:702)      at net.sf.jasperreports.engine.fill.JRBaseFiller.fill(JRBaseFiller.java:660)      at net.sf.jasperreports.engine.fill.JRFiller.fillReport(JRFiller.java:63)      at net.sf.jasperreports.engine.JasperFillManager.fillReport(JasperFillManager.java:402)      at net.sf.jasperreports.engine.JasperFillManager.fillReport(JasperFillManager.java:234)      at it.businesslogic.ireport.IReportCompiler.run(IReportCompiler.java:808)      at java.lang.Thread.run(Unknown Source)  Caused by: org.postgresql.util.PSQLException: O índice da coluna está fora do intervalo: 1, número de colunas: 0.      at org.postgresql.core.v3.SimpleParameterList.bind(SimpleParameterList.java:57)      at org.postgresql.core.v3.SimpleParameterList.setStringParameter(SimpleParameterList.java:121)      at org.postgresql.jdbc2.AbstractJdbc2Statement.bindString(AbstractJdbc2Statement.java:2112)      at org.postgresql.jdbc2.AbstractJdbc2Statement.setString(AbstractJdbc2Statement.java:1238)      at org.postgresql.jdbc2.AbstractJdbc2Statement.setString(AbstractJdbc2Statement.java:1224)      at net.sf.jasperreports.engine.query.JRJdbcQueryExecuter.setStatementParameter(JRJdbcQueryExecuter.java:288)      at net.sf.jasperreports.engine.query.JRJdbcQueryExecuter.createStatement(JRJdbcQueryExecuter.java:158)      ... 12 more  
Print was not filled. Try using an EmptyDataSource...

n tem como usar PARAMETROS na query de relatorio? como faco? upa ai…

ng?

tem sim…dá uma lida nos tutoriais do ireport…

Vc esta tentando rodar o relatorio do proprio iReport certo?

Veja se setou um valor padrao para o parametro? Marcar como is for prompt tb pode resolver seu problema…

[]s

[quote=hlds]Seguinte, gerei um relatorio p minha app q mostra todos os sistemas cadastrados (select id, nome, descricao from sistema), fiz outro relatorio q vai mostrar os msm sistemas so q no ANO q eu determinar, dai, eu criei um parametro chamado ANO no relatorio e to tentando jogar esse parametro no query do relatorio (SELECT id, nome, descricao, FROM sistema WHERE data_inicio LIKE ‘%$P{ANO}%’), so q ta dando um pau ai q n resolvo, eh possivel jogar parametros/variaveis na query do relatorio??? Se n , como faco esse relatorio receber o parametro ANO e jogar na query? Vlw…

O erro q dar eh esse:

Error filling print... Error preparing statement for executing the report query : SELECT id, nome, descricao, data_inicio, estado FROM sistema WHERE data_inicio LIKE '%?%'; net.sf.jasperreports.engine.JRException: Error preparing statement for executing the report query : SELECT id, nome, descricao, data_inicio, estado FROM sistema WHERE data_inicio LIKE '%?%'; at net.sf.jasperreports.engine.query.JRJdbcQueryExecuter.createStatement(JRJdbcQueryExecuter.java:164) at net.sf.jasperreports.engine.query.JRJdbcQueryExecuter.createDatasource(JRJdbcQueryExecuter.java:103) at net.sf.jasperreports.engine.fill.JRFillDataset.createQueryDatasource(JRFillDataset.java:673) at net.sf.jasperreports.engine.fill.JRFillDataset.setDatasource(JRFillDataset.java:610) at net.sf.jasperreports.engine.fill.JRFillDataset.setParameterValues(JRFillDataset.java:599) at net.sf.jasperreports.engine.fill.JRBaseFiller.setParameters(JRBaseFiller.java:864) at net.sf.jasperreports.engine.fill.JRBaseFiller.fill(JRBaseFiller.java:702) at net.sf.jasperreports.engine.fill.JRBaseFiller.fill(JRBaseFiller.java:660) at net.sf.jasperreports.engine.fill.JRFiller.fillReport(JRFiller.java:63) at net.sf.jasperreports.engine.JasperFillManager.fillReport(JasperFillManager.java:402) at net.sf.jasperreports.engine.JasperFillManager.fillReport(JasperFillManager.java:234) at it.businesslogic.ireport.IReportCompiler.run(IReportCompiler.java:808) at java.lang.Thread.run(Unknown Source) Caused by: org.postgresql.util.PSQLException: O índice da coluna está fora do intervalo: 1, número de colunas: 0. at org.postgresql.core.v3.SimpleParameterList.bind(SimpleParameterList.java:57) at org.postgresql.core.v3.SimpleParameterList.setStringParameter(SimpleParameterList.java:121) at org.postgresql.jdbc2.AbstractJdbc2Statement.bindString(AbstractJdbc2Statement.java:2112) at org.postgresql.jdbc2.AbstractJdbc2Statement.setString(AbstractJdbc2Statement.java:1238) at org.postgresql.jdbc2.AbstractJdbc2Statement.setString(AbstractJdbc2Statement.java:1224) at net.sf.jasperreports.engine.query.JRJdbcQueryExecuter.setStatementParameter(JRJdbcQueryExecuter.java:288) at net.sf.jasperreports.engine.query.JRJdbcQueryExecuter.createStatement(JRJdbcQueryExecuter.java:158) ... 12 more Print was not filled. Try using an EmptyDataSource... [/quote]

Eu tive esse problema desenvolvendo pra desktop, eu descobri que não se pode fazer assim LIKE ‘?%’

vc tem que passar o parâmetro com o %.

ps = conn.prepareStatement("SELECT codigo FROM tipo_onibus where codigo LIKE ?");
        ps.setString(1, codigo+"%");