gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-29 01:56:16 26 4
gpt4 key购买 nike

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

细节:

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

WHERE ? 

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

WHERE column_name = 1

WHERE column_name = 2

甚至

WHERE column_name IN (1,2)

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

我试过:

  • 在 RP 和 DSP 上创建各种 javascript 表达式
  • 创建一个将更改第一个 RP 的值并返回到上一步的 RP
  • 编辑属性绑定(bind),但我不知道应该如何完成。澄清一下,我正在设计一个报告,而不是将运行时集成到现有应用程序中。我希望这已经足够清楚了,我仍在编辑问题,所以如果您需要更多信息,请告诉我。

谢谢

最佳答案

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

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

可能是实现你想要的最简单的方法是这样的:

在您的查询中,写:

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 + ")";

就是这样。

关于javascript - 在 BIRT 中输入参数后更新数据集查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28070809/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com