birt动态范围参数

时间:2012-11-14 11:53:00

标签: parameters crystal-reports range birt multivalue

我是Birt的新手,我想开发一个接受“多重动态范围参数”的报告。 在这里,您可以更好地解释问题:

数据集: :客户 :idCustomer,名称

我希望该用户能够插入多个范围的idCustomer来检索名称 例如:用户可能希望客户的ID介于205和300之间,ID介于501和670之间,ID介于800和920之间...

我通常在BO Crystal Report设置“允许多值”和“允许范围值”对输入参数执行相同的操作。在Birt上是否存在类似内容?

我在此处上传图像:http://i.stack.imgur.com/uvz7F.jpg。它是输入参数的BO屏幕截图,带有“允许多值”和“允许范围值”。
由于
GG

1 个答案:

答案 0 :(得分:1)

简答:不。

更长的回答:BIRT没有选项来启用单个参数来获取一系列值。

它有一个选项允许单个参数获取多个值,但仅限于ListBox参数。此外,您只能将单个报表参数值绑定到给定的数据集参数,这意味着您无法在数据集查询中选择多个参数值(假设您使用的是关系数据源);相反,您需要在“编辑数据集”对话框的“过滤器”选项卡中根据参数值向数据集添加过滤器。 (这仍然只允许您指定参数的多个单独值,而不是多个值范围。)

(或者,您可以为数据集编写一个beforeOpen事件脚本,该脚本可以直接将参数的多个值插入到数据集的查询文本中,而不是将报表参数绑定到数据集参数;但是,这会打开您的报表SQL注入攻击的风险。或者,你可以为BIRT添加一个插件来为你绑定多个参数值。)

因此,您的选择是:

  1. 设置单个ListBox参数,启用多个值,允许用户选择他们想要的所有单个值,并根据参数值过滤数据集(或使用beforeOpen事件脚本或BIRT插件)
  2. 设置两个参数(范围的开始和结束),以允许用户指定要选择的单个值范围,并将报告参数绑定到查询中的等效数据集参数对。
  3. 设置 n 对参数,以允许用户指定最多 n 的值范围(例如,设置10个参数以使用户能够最多指定5个值范围),并将报告参数绑定到查询中的等效数据集参数。
  4. 设置单个文本框参数以允许用户输入自由格式范围(例如,格式为[205..300],[501..607]),然后为数据集编写beforeOpen事件脚本以解析所需范围的输入参数值并相应地修改查询文本。
  5. 请注意,最后一个选项已被强烈弃用,因为它需要更多工作,删除了指定有效值的选项,并将报告打开为SQL injection attacks的风险。