如何使用birt报告发送多个变量?

时间:2016-04-20 14:46:37

标签: eclipse db2 report birt maximo

在db2中使用以下查询:

select * from table where num in ('1a2334','1a43432','1a34243','1b34325','1b4545')

现在每当我收到要报告的数据时,我都会收到来自用户的行:

1a23344
1a43432
1a34243
1b34325
1b45454

然后我使用notepad ++将 rf 替换为',,使其变为

'1a2334','1a43432','1a34243','1b34325','1b4545'

我可以选择创建一个容易接受普通用户输入的报告吗?

此特定用户有一个包含多列的Excel工作表,我只使用第一列(上面提到的示例是第一列中的行)。

@Simulant提供了一个很好的解决方案,但我需要这个来从excel文件中获取值(最好是通过复制粘贴)。我注意到他/她的解决方案使用静态值,所以我认为我需要动态值。 为了记录,我使用脚本得到以下错误:

  

评估Javascript表达式时出错。脚本引擎错误:   TypeError:无法调用null的方法“replace”   (/报告/数据集/脚本数据集[@ ID = “12”] /方法[@名称= “beforeOpen”]#3)   脚本来源:   /报告/数据集/脚本数据集[@ ID = “12”] /方法[@名称= “beforeOpen”],   行:0,文字:   __bm_beforeOpen()。 (元素ID:1)Error.ScriptEvaluationError(1次(s))detail:org.eclipse.birt.report.engine.api.EngineException:   评估脚本“var parameters =时有错误   。PARAMS [ “multiSelectParameter”]值; var replacesPart =“'”+   parameters.join(“','”)+“'”; this.queryText =   this.queryText.replace(“replaceMe”,replacecesPart);“:

1 个答案:

答案 0 :(得分:2)

使用多选参数创建报告。创建列表框参数并允许多个值。您可以添加静态值或选择dynamic并显示另一个查询的结果。

enter image description here

将您的查询编写为以下SQL-Statement:

select * from table where num in (replaceMe);

选择您的数据集,然后选择script标签。输入beforeOpen以下脚本。这会将SQL-Statement中的占位符replaceMe替换为用单引号'括起来的多选参数的多重值,并根据需要用逗号,分隔:

var parameters = params["multiSelectParameter"].value;
var replacesPart = "'" + parameters.join("', '") + "'";
this.queryText = this.queryText.replace("replaceMe", replacesPart);