1

我应该使用多选列表框(动态之一),用户可以在其中选择多个值(通过按住 Ctrl 键)来查看报告。

因此,在实现时,我尝试在BeforeOpen方法中获取参数值并将其传递给 DataSet ,然后使用 IN 运算符将其附加到 where 子句。我在屏幕上出现 SQL 错误。因此,当我打印参数值时,它类似于[Ljava.lang.Object;@26ba26ba]导致查询错误。我以为我无法在脚本中处理该多选参数值并将其传递给查询。所以放弃了这个想法。

现在我在 Data set 中使用 BIRT 的内置过滤器功能。我在Beforeopen 方法中使用脚本在 SQL 中做的事情现在我在数据集过滤器中做同样的事情。我使用了 row["dataColumn"]IN param["param"].value,它工作正常。我可以从过滤屏幕中选择一个或多个值,执行报告并获得正确的结果。

现在我需要实现的另一件事是过滤器列表框中应该有全选,这样用户就可以选择全选并为所有数据带来报告,而不是选择任何其他值。我正在通过“%”反对全选。由于我使用的是 IN 运算符,因此我无法在 Report 上获取任何数据。

我想提供全选功能以及多选功能,但由于上述限制无法做到这一点。或者,我可以使用 Ctrl+A 来全选并且它正在工作我也可以这样做,但这是根据我需要实现的要求。

我正在使用BIRT 版本="3.2.17"

任何想法都会受到赞赏..提前谢谢..:)

4

1 回答 1

1

您是否可以在参数选择中添加“全选”选项?我已经使用与我的参数查询的联合来完成此操作,并且只是将“全选”添加到我的查询结果中。

通常我要做的是在我的查询中添加一些东西,让我可以轻松地替换参数。就像是:

SELECT myStuff
FROM myTables
/**where**/

然后,您可以在 beforeOpen 语句中修改 DataSet 查询。

类似于以下内容:

if(params["myParam"]!='Select All'){
    this.queryText=this.queryText.replace("/**where**/","WHERE myStuff IN ('" + params["myParams"].join("','") + "')");
} 

这显然非常简化,但是您应该能够使用某种形式来允许您提出要求。

于 2013-04-13T16:21:21.090 回答