BIRT报告参数多选值“全部”

时间:2014-09-12 07:06:02

标签: eclipse parameters birt

我在为级联参数组最后一个参数创建“所有值”的默认值时遇到问题。实际上我并不需要将该值作为默认值,但这是更可取的。

我已经尝试过在哪里创建具有所需值的附加数据集和附加数据集,其中值All使用不同的脚本数据源,另一个数据集使用带有完全外部联接的计算列,该列使用此代码

if(row["userName"]==null ){
row["All"];
}else{
row["userName"];
}

并且在我需要的最后一个级联参数JDSuser中,我已经添加了所有值的默认值(所有用户)。

在具有一个值All in open的数据集中,我有脚本

ii=0;

in fetch

if( ii > 0 ){
return false;
}else{
row["All"] = "(All Users)";
ii++
return true;
}

并在查询数据集中,在if语句中的beforeOpen脚本中我有

if( params["JDSuser"].value!=null && params["JDSuser"].value[0] != "(All Users)" ){

如果我没有选择所有用户值,则会使用此功能,但是如果我选择了所有用户,它将检索我没有数据。

我是从这个源示例actuate link for example rptdesign download

创建的

如果有人能给我一些帮助,我将非常感激。

1 个答案:

答案 0 :(得分:1)

你在选择列表中生成“(所有值)”项的方式在我看来过于复杂但是如果我理解你的情况这部分工作正常,问题不在于级联参数的定义而是方式它用在报告的主数据集中。

此外,我们必须假设我们谈论相同的查询&在this topic中涉及的beforeOpen脚本。没有返回数据,因为如果我们在选择“所有值”项时没有做任何特殊操作,那么这些过滤器仍处于活动状态:

and role.name in ( 'sample grupa' )
and userbase.userName in ( 'sample' )

有几种方法可以解决这个问题。一个优雅的方法是声明链接到您的报告参数“JDSuser”的数据集参数,并使用“OR”这样的子句:

and role.name in ( 'sample grupa' )
and (?='(All users)' OR userbase.userName in ( 'sample' ))

请注意此问号,它代表查询中的数据集参数。它不具有侵入性:不必更改beforeOpen脚本。您可能需要执行与其他过滤器role.name类似的操作,但是您不提供与此相关的任何信息。还有一件事,为了避免不好的惊喜,你应该选择更简单的价值而没有括号如“_allitems”,并将“(所有项目)”设置为标签。

有关处理可选参数的更多信息,请参阅this topic。请参阅级联组here中的可选参数的实例。