发新话题
移动帖子 加入精华 加入置顶 加入收藏 关注此帖

关于jasperreport传动态参数的问题,传整条SQL语句



关于jasperreport传动态参数的问题,传整条SQL语句

http://topic.csdn.net/u/20080403/01/d3b3831a-ae7f-4d43-adb5-b56f1bb97750.html

jasperreport可以传整条sql语句吗?
如:select * from table1 where $P{parm}

在传$P{parm}的时候,直接传 table1.column='1234' 这个语句,可以这样实现吗?如果可以实现请告诉思路,我是用Ireport形成的Jasperreport报表的

我建了个参数:$P{sql},类型:java.util.String 设置了这个参数$P{sql}的默认值为一条sql语句:"select * from table1"
但是运行jrviewer的预览,则提示了错误:无效的sql类型
Error filling print... Error executing SQL statement for : sgcom_bofu_report
net.sf.jasperreports.engine.JRException: Error executing SQL statement for : sgcom_bofu_report at net.sf.jasperreports.engine.query.JRJdbcQueryExecuter.createDatasource(JRJdbcQueryExecuter.java:141) at net.sf.jasperreports.engine.fill.JRFillDataset.createQueryDatasource(JRFillDataset.java:682) at net.sf.jasperreports.engine.fill.JRFillDataset.initDatasource(JRFillDataset.java:614) at net.sf.jasperreports.engine.fill.JRBaseFiller.setParameters(JRBaseFiller.java:892) at net.sf.jasperreports.engine.fill.JRBaseFiller.fill(JRBaseFiller.java:716) at net.sf.jasperreports.engine.fill.JRBaseFiller.fill(JRBaseFiller.java:669) 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:942) at java.lang.Thread.run(Unknown Source) Caused by: java.sql.SQLException: 无效的 SQL 类型 at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:112) at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:146) at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:208) at oracle.jdbc.driver.T4CPreparedStatement.doOall8(T4CPreparedStatement.java:76) at oracle.jdbc.driver.T4CPreparedStatement.executeForRows(T4CPreparedStatement.java:955) at oracle.jdbc.driver.OracleStatement.doExecuteWithTimeout(OracleStatement.java:1168) at oracle.jdbc.driver.OraclePreparedStatement.executeInternal(OraclePreparedStatement.java:3285) at oracle.jdbc.driver.OraclePreparedStatement.executeQuery(OraclePreparedStatement.java:3329) at net.sf.jasperreports.engine.query.JRJdbcQueryExecuter.createDatasource(JRJdbcQueryExecuter.java:135) ... 10 more
Print was not filled. Try using an EmptyDataSource...


楼主自己解决了
问题已经解决,谢谢上面那位同志,虽然没有给我提示性的东西,但是挺热心的。
在jasperreport中如果参数是$P{parm}则只能用于PreparedStatement参数绑定,
而$P!{parm}则可以替换sql的任何部分,所以要传整个sql就必须用$P!{parm}这种形式。
快乐渡过每一天,减肥坚持每一天
编辑 回复 快速回复 TOP

Re:关于jasperreport传动态参数的问题,传整条SQL语句

学习学习
编辑 回复 快速回复 TOP
发新话题