首页 新闻 论坛 群组 Blog 文档 下载 读书 Tag 网摘 搜索 .NET Java 游戏 视频 人才 外包 培训 数据库 书店 程序员
中国软件网
欢迎您:游客 | 登录 注册 帮助
  • 关于jasperreport传动态参数的问题,传整条SQL语句 [无满意答案结帖,结帖人:superreset]
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • superreset
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    • 结帖率:
    发表于:2008-04-03 01:15:46 楼主
    jasperreport可以传整条sql语句吗?
    如:select * from table1 where $P{parm}

    在传$P{parm}的时候,直接传 table1.column='1234' 这个语句,可以这样实现吗?如果可以实现请告诉思路,我是用Ireport形成的Jasperreport报表的
    50  修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • superreset
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-04-03 01:44:311楼 得分:0
    有人回答这个问题吗?
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • java2000_net
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    • 2

      2

      9

    发表于:2008-04-03 04:45:392楼 得分:0
    1 根据我的经验,你可以传整个SQL过去!
    2 这种事情,你只需要1分钟就可以测试出答案,你非得花10分钟来CSDN问!?
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • superreset
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-04-03 10:24:383楼 得分:0
    我已经测试过了,把$P{parm}设为java.lang.String 类型,然后设置$P{parm}的默认值为sql语句,但是没有用。。。。
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • java2000_net
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    • 2

      2

      9

    发表于:2008-04-03 10:39:044楼 得分:0
    那异常呢?如果你的程序执行了,总会有一些东西反馈的!

    不能说没用就完了!
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • superreset
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-04-03 12:46:035楼 得分:0
    首先谢谢你的指导,
    我建了个参数:$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...
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • superreset
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-04-03 22:19:546楼 得分:0
    问题已经解决,谢谢上面那位同志,虽然没有给我提示性的东西,但是挺热心的。
    在jasperreport中如果参数是$P{parm}则只能用于PreparedStatement参数绑定,
    而$P!{parm}则可以替换sql的任何部分,所以要传整个sql就必须用$P!{parm}这种形式。

    修改 删除 举报 引用 回复