2014-01-08 28 views
1

我有一个使用如下查询的BIRT报告。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'?

非常感谢您的帮助。

预先感谢您。

+1

您是否曾尝试将'CUST_ID'参数添加到刷新报表时所用URL的末尾?它看起来像这样; http://reports.com/run?__report=YourReport.rptdesign&CUST_ID=Value –

+0

谢谢@JamesJenkins的评论。这里的事情是我没有任何控制请求的URL。在'刷新'链接我只是使用链接属性,并给出了相同的报告。我看到我可以通过数据源'beforeOpen'方法中的'this.queryText'获取查询文本。仍然不确定我在做什么是正确的,因为我是新来的BIRT。再次感谢您的回头。如果你有什么请告诉我。 – Sam

+0

我还没有做到这一点,但我已经在http://developer.actuate.com/community/forum/上的几篇文章中读到过了。我想你要做的就是重做你的刷新按钮,这样你就可以控制url并且能够在报告运行时用用户输入的值作为参数来创建它。我有几个报告,默认情况下运行为html,并包含一个链接来运行xls,我一直在考虑添加carry over参数功能给他们,但其他优先事项...如果你可以把一个'如何'答案我想阅读它。 –

回答

3

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

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

2.如上面詹姆斯提到的那样,将我的参数添加到请求的末尾。谢谢詹姆斯。

3.取消新创建的网址link.href=url;这将刷新我在输入框中输入的值的报告。

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

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

​​