【问题标题】:BIRT report parameter multiple selection value "All"BIRT报表参数多选值“全部”
【发布时间】:2014-11-06 07:10:57
【问题描述】:

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

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

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

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

在一个值的数据集中全部打开我有脚本

ii=0;

在获取中

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

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

【问题讨论】:

    标签: eclipse parameters birt


    【解决方案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中可选参数的实时示例。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多