Parameters 动态范围参数

Parameters 动态范围参数,parameters,crystal-reports,range,birt,multivalue,Parameters,Crystal Reports,Range,Birt,Multivalue,我是Birt的新手,我想开发一个接受“多重动态范围参数”的报告。 下面是一个更好地解释问题的示例: 数据集: 表:客户 列:idCustomer,名称 我希望该用户能够插入多个idCustomer范围以检索名称。 例如:用户可能需要id介于205和300之间、id介于501和670之间以及id介于800和920之间的客户… 我通常对BO Crystal Report执行相同的操作,将“允许多值”和“允许范围值”设置为输入参数。Birt上是否存在类似的内容?我在这里上传了一个图像:。这是一个输入参

我是Birt的新手,我想开发一个接受“多重动态范围参数”的报告。 下面是一个更好地解释问题的示例:

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

我希望该用户能够插入多个idCustomer范围以检索名称。
例如:用户可能需要id介于205和300之间、id介于501和670之间以及id介于800和920之间的客户…

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

我在这里上传了一个图像:。这是一个输入参数的BO屏幕截图,带有“允许多值”和“允许范围值”。
谢谢
GG

简短回答:不

更详细的回答:BIRT没有允许单个参数取值范围的选项

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

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

因此,你的选择是:

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

  • 请注意,最后一个选项被强烈反对,因为它需要更多的工作,删除了指定有效值的选项,并打开了您的报告。谢谢您详尽的回答。顺便说一句,第一个对我不好,因为我有数千个客户。第二个是最简单的方法,但限制了用户。在第三个是我可以知道用户需要多少范围,然后我也会管理空范围。第四个是一个很好的折衷方案,但正如您在上面所写的,它被强烈反对,并引入SQL注入攻击。