jasperreport可以传整条sql语句吗?
如:select * from table1 where $P{parm}在传$P{parm}的时候,直接传 table1.column='1234' 这个语句,可以这样实现吗?如果可以实现请告诉思路,我是用Ireport形成的Jasperreport报表的
如:select * from table1 where $P{parm}在传$P{parm}的时候,直接传 table1.column='1234' 这个语句,可以这样实现吗?如果可以实现请告诉思路,我是用Ireport形成的Jasperreport报表的
2 这种事情,你只需要1分钟就可以测试出答案,你非得花10分钟来CSDN问!?
我建了个参数:$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}这种形式。