【问题标题】:JasperReports: How to create a parameter which takes multiple values as inputJasperReports:如何创建一个将多个值作为输入的参数
【发布时间】:2010-12-10 08:53:01
【问题描述】:

我有一份报告,其中可能为名为 Product_Type 的参数传递了多个值。 这样我的查询就变成了这样:

Select Id, name from temp where product_type IN ('prod1','prod2','prod3')

【问题讨论】:

    标签: jasper-reports


    【解决方案1】:

    您应该 Product_Type 将类型设置为 java.util.List

    在你的 SQL 中使用 IN 函数:

    Select Id, name from temp where $X{IN,product_type,Product_Type}
    
    • 第二个参数product_type对应表中的字段名
    • 第三个参数Product_Type对应你在报告中给出的名称

    如果您传递一个空列表,则 $X{IN,..,..} 评估为 SQL“TRUE”

    在 iReport 中,当您测试报告时,您会看到一个邀请框。类型:

    prod1,prod2,prod3

    【讨论】:

    • 此查询不起作用...给出错误 SELECT rownum,REPORTING_MON_YEAR,PROD_TYPE FROM temp_tst where $X{IN,PROD_TYPE,product} AND Upper(MONTH) Like Upper('$P! {month}%') AND Upper(YEAR) Like Upper('$P!{year}%')
    • 我不知道你的引擎是什么,但要小心,因为我认为它区分大小写。您在同一个表中有名为 rownum,REPORTING_MON_YEAR,PROD_TYPE 的字段?尝试找出它为什么不起作用...如果您的 SQL 引擎提供了一个监控控制台,请查看 iReport 发送的查询。您也可以尝试减少查询: 1) SELECT rownum,REPORTING_MON_YEAR,PROD_TYPE FROM temp_tst; 2) SELECT rownum,REPORTING_MON_YEAR,PROD_TYPE FROM temp_tst where $X{IN,PROD_TYPE,product}; (如果你有一个大集合,还添加 LIMIT 10)
    • 这不起作用。我已经尝试过 java.util.list 方法,但在查询中它仍然带有 [value]。 in 应该看起来像 ... in ('value1','value2')
    猜你喜欢
    • 2015-10-09
    • 1970-01-01
    • 2023-01-04
    • 2021-09-06
    • 2017-11-06
    • 1970-01-01
    • 2016-05-18
    • 2018-06-02
    相关资源
    最近更新 更多