在 BIRT 中输入参数后更新数据集查询

Updating Data Set query after parameter input in BIRT

如何在 BIRT 报表设计中传递参数后更改或更新数据集的查询?

细节:

我有一个看起来像这样的查询:

WHERE ? 

那个参数标记可以保存不同的值,用户输入参数后,它看起来像这样例如:

WHERE column_name = 1

WHERE column_name = 2

甚至

WHERE column_name IN (1,2)

我为该数据集参数 (DSP) 创建了一个报告参数 (RP),尝试了几个小时后,我无法更改它。

我试过了:

谢谢

假设您使用的是 Oracle 数据库(其他系统的行为可能不同),您应该知道绑定变量(在 JDBC 语音中:问号)可以替换 标量仅值,例如字符串或数字。

但是您需要像 列表 这样的数字作为输入。 因此在这种情况下绑定变量对您没有帮助。

可能实现您想要的最简单方法是:

在您的查询中,写:

WHERE column_name in (1) -- $REPLACE_THIS$

请注意,我在查询中使用评论作为标记。 然后,在查询的 beforeOpen 事件中,像这样修改查询文本:

// construct a comma-separated string representation of your list
// based on your report parameter (exercise left to the reader)
// var replacement = my_to_sql_csv(params["my_report_parameter"].value);

// for demonstration use:
var replacement = "1,2";

// modify the `IN` expression inside the SQL
this.queryText = this.queryText.replaceAll("(1) -- $REPLACE_THIS$", "(" + replacement + ")";

就是这样。