【问题标题】:BIRT reports - add parameter through scriptBIRT 报告 - 通过脚本添加参数
【发布时间】:2014-01-08 10:07:23
【问题描述】:

我有一个使用如下查询的 BIRT 报告。

select Dealer, Name from customerA where id = ? union all select Code as Dealer, last_name as Name from customerB where id = ? union all select Num as Dealer, owner as Name from customerC where id = ?

我在报告本身中有一个输入文本框和一个用于重新加载报告的刷新按钮。 我的报告也有名为“CUST_ID”的参数,我在数据集中绑定为 param_1、param_2 和 param_3 以替换为“?”执行时标记。

如果我在参数弹出屏幕报告上输入参数可以正常工作,但我需要在文本框中输入 id 并且一旦我按下刷新链接重新加载报告。

如何添加输入文本值(我知道我可以从脚本中获取它)并将其设置为报告参数“CUST_ID”?

非常感谢您的帮助。

提前谢谢你。

【问题讨论】:

  • 您是否尝试将“CUST_ID”参数添加到刷新报告时使用的 URL 的末尾?它看起来像这样; reports.com/run?__report=YourReport.rptdesign&CUST_ID=Value
  • 感谢 @JamesJenkins 的 cmets。问题是我对请求 URL 没有任何控制权。在“刷新”链接中,我只是使用属性链接并给出了相同的报告。我看到我可以通过数据源“beforeOpen”方法上的“this.queryText”获取查询文本。仍然不确定我所做的是否正确,因为我是 BIRT 的新手。再次感谢您的回头。如果您有任何事情请告诉我。
  • 我还没有这样做,但我在developer.actuate.com/community/forum 的几篇文章中读到过,我认为您想要做的是重新设计您的刷新按钮,以便您控制 url 并能够在报表运行时使用用户输入的值作为参数创建它。我有几个默认情况下以 html 运行的报告,并包含一个以 xls 运行的链接,我一直在考虑向它们添加结转参数功能,但其他优先级......如果你可以整理一个“如何”的答案我想读。
  • 谢谢詹姆斯。就我而言,问题是我在自定义应用程序之上构建此报告,并且该应用程序在内部处理请求和响应。所以除了我可以使用的一些定义的参数外,我没有任何控制权。 :(

标签: javascript reporting-services birt


【解决方案1】:

我能够通过在 BIRT 中使用脚本来解决这个问题。下面我列出了我遵循的步骤。

1.添加一个脚本,该脚本将在页面加载时启动请求参数。 报告 url 我可以通过在普通 javascript 函数中使用 var link=this; 访问。

2.将我的参数附加到上面詹姆斯提到的请求的末尾。谢谢詹姆斯。

3.替换新创建的urllink.href=url;这将使用我在输入框中输入的值刷新报告。

4.在数据集中,我将查询修改为'Select name from customerA',没有任何where子句。

5.dataset beforeOpen 脚本我添加了这些行并相应地过滤记录。

this.queryText += "where id ="+reportContext.getParameterValue("cust_id");
reportContext.setParameterValue("debug", this.queryText);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-05-31
    • 2017-03-08
    • 1970-01-01
    • 2011-10-17
    • 1970-01-01
    相关资源
    最近更新 更多