0

I'm a newbye in Birt and I'd like to develop a report that accepts a "multiple and dynamic range parameter". Here you are an example to explain better the problem:

   Dataset:   table: Customer   columns: idCustomer, name

I'd like that user will be able to insert multiple range of idCustomer to retrieve names.
Ex: user may want customers for id between 205 and 300 and for id between 501 and 670 and for id between 800 and 920...

I usually do the same thing on BO Crystal Report setting "Allow multivalue" and "Allow range values" to the input parameter. Does exists something similar on Birt ?

I upload an image here: http://i.stack.imgur.com/uvz7F.jpg .It's a BO screenshot for input parameter with "Allow multivalue" and "Allow range values".
Thanks
    GG

4

1 回答 1

1

简短的回答:没有。

更长的答案:BIRT 没有选项可以让单个参数采用一系列值。

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

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

因此,您的选择是:

  1. 设置单个 ListBox 参数,启用多个值,允许用户选择他们想要的所有单个值,并根据参数值过滤数据集(或使用 beforeOpen 事件脚本或 BIRT 插件)。
  2. 设置两个参数(用于范围的开始和结束)以允许用户指定要选择的单个值范围,并将报表参数绑定到查询中的一对等效数据集参数。
  3. 设置n对参数,允许用户指定最多n个取值范围(如设置10个参数,用户最多可以指定5个取值范围),并将报表参数绑定到等价查询中的数据集参数。
  4. 设置单个文本框参数以允许用户输入自由格式的范围(例如格式[205..300],[501..607]),然后为数据集编写 beforeOpen 事件脚本以解析所需范围的输入参数值并相应地修改查询文本。

请注意,最后一个选项已被强烈弃用,因为它需要更多的工作,删除了指定有效值的选项,并打开您的报告以面临SQL 注入攻击的风险。

于 2012-11-15T19:59:59.180 回答