【问题标题】:How to add a parameter to a SQL query?如何向 SQL 查询添加参数?
【发布时间】:2019-03-19 13:40:57
【问题描述】:

除了来自 Maximo 的 SQL 查询中的参数之外,我还想添加一个动态参数。

类似的东西:

select * 
from workorder a 
where params["where"] or a.parent = :Param

params["where"] 和 wonum='1234' 和 :Param = '1234'

Birt 是否有可能获得 wonum 值并将其也放入 :Param

或者其他方式?

谢谢

【问题讨论】:

  • 解决方案的原理参见stackoverflow.com/questions/28070809/…
  • 谢谢。我去看看!
  • 我尝试将日志添加到“beforeOpen”以在修改它之前查看我的查询,因为它已在链接中解释,但查询为空。正常吗?
  • this.queryText 包含 SQL 语句。显然你做错了什么。您可能应该发布您的 beforeOpen 脚本...

标签: birt maximo


【解决方案1】:

open 就是这样(查询比较复杂所以我简化了):

maximoDataSet = MXReportDataSetProvider.create(this.getDataSource().getName(), this.getName());
maximoDataSet.open();

var sqlText = new String();
sqlText = "select column1, column2 as woParent, etc... from workorder where  " + params["where"] + " or woParent=:param";

maximoDataSet.setQuery(sqlText);

beforeopen 就是这样(只是为了查看查询):

importPackage( Packages.java.io );
out = new PrintWriter( new FileWriter( "c:/birteaump.log", true ) );
out.println( "\nMy Query: " + this.queryText);
out.close();

我有一些代码可以操作 :param 以将其替换为 wonum,但 this.queryText 为空。 我是 birt 报告的新手,也许我必须换个思路来解决我的问题。

谢谢

【讨论】:

    【解决方案2】:

    我使用的是 Birt 3.7.1。我在视频中看到我们可以在数据集的对话框中添加查询。但是在我的报告中,当我使用“新数据集”按钮时,我只有“脚本数据集”。

    “beforeopen”中我的查询是否为空是否与此有关?

    如果我创建另一种数据源,我将有权访问另一种数据集?

    谢谢

    【讨论】:

      【解决方案3】:

      好的,我解决了我的问题。 我创建了一个 JDBC 数据源,并且可以访问一种新的数据集。 我可以将我的查询放在这个数据集中,我可以访问“beforeopen”并且我的查询不为空。

      谢谢

      【讨论】:

        猜你喜欢
        • 2016-01-19
        • 2011-05-30
        • 1970-01-01
        • 2011-09-12
        • 1970-01-01
        • 2020-04-13
        • 2010-12-31
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多