【问题标题】:How to send multiple variables using birt report?如何使用 birt 报告发送多个变量?
【发布时间】:2016-04-20 14:46:37
【问题描述】:

在 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 的“替换”方法 (/report/data-sets/script-data-set[@id="12"]/method[@name="beforeOpen"]#3) 脚本来源: /report/data-sets/script-data-set[@id="12"]/method[@name="beforeOpen"], 行:0,文本: __bm_beforeOpen()。 (元素 ID:1)Error.ScriptEvaluationError(1 次)详细信息:org.eclipse.birt.report.engine.api.EngineException: 评估脚本“var 参数 = 参数["multiSelectParameter"].value; var replacesPart = "'" + 参数.join("', '") + "'"; this.queryText = this.queryText.replace("replaceMe", replacesPart);":

【问题讨论】:

    标签: eclipse db2 report birt maximo


    【解决方案1】:

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

    将查询编写为以下 SQL 语句:

    select * from table where num in (replaceMe);
    

    选择您的数据集并选择script 选项卡。为beforeOpen 输入以下脚本。这会将 SQL 语句中的占位符 replaceMe 替换为多选参数的连接值,该参数用单引号 ' 括起来,并根据需要用逗号分隔 ,

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

    【讨论】:

    • 这看起来是一个很好的解决方案,但它并没有像我预期的那样工作,用户将有一个包含值的列表(我以前没有,也不应该更新所有内容)。我需要一些东西,以便用户可以选择一个 Excel 行并将其复制粘贴到此报告中,无需我的帮助。
    猜你喜欢
    • 2010-09-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多