0

我们使用报表生成器创建了一个报表,并发布到报表服务器。报表1,主报表有6个参数;3 个多值参数和 3 个单值参数。希望报表 2 从报表 1 打开但在单独的窗口中并传递所有 6 个参数。在报告 2 中,它们也被构建为参数。参数: Neighborhood (multi) Start (single) End(single) Source (multi) Data_type(multi) Prov_type(single)

在报告 1 中,我们创建了一个文本框,其中包含打开 javascript 命令的操作。这是报告 1 中的当前调用,它打开了另一个窗口,但给出了一般错误“无效”

javascript:void(window.open('http://ourcompany/Reportserver/Pages/Report.aspx?%2fReports+in+Development%2funknown+provider+detail&rs:Command=Render&NEIGHBORHOOD="+join(Parameters!NEIGHBORHOOD.Value, "&NEIGHBORHOOD=")&"&SOURCE="+join(Parameters!SOURCE.Value,"&SOURCE=")&"&DATA_TYPE="+join(Parameters!DATA_TYPE.Value,"&DATA_TYPE=")&"&START="+Fields!START.Value+"&END="+Fields!END.Value+"&PROV_TYPE="+Fields!PROV_TYPE.Value+"'))

我已经用“参数”替换了“字段”,但它仍然不起作用。如果我通过静态字段创建它,它的工作方式如下所示;

javascript:void(window.open('http://ourcompany/Reportserver/Pages/Report.aspx?%2fReports+in+Development%2funknown+provider+detail&rs:Command=Render&rc:Parameters=true&NEIGHBORHOOD=Mesa&START=11/01/2016'))

有什么想法吗?谢谢!

4

2 回答 2

0

部分问题是您多次传入多值参数。例如,您的部分表达式将导致:

...&SOURCE=A&SOURCE=B&SOURCE=C...

URL 中的每个参数只能设置一个值。

因此,解决方案是用逗号分隔值并将它们作为单个字符串传递。然后,在子报表中,您需要再次解析它们。

"&SOURCE=" & join(Parameters!SOURCE.Value,",")

您可能会遇到其他问题,例如 URL 长度限制,但这将解决直接问题。

于 2017-02-01T16:45:58.823 回答
0

好的,所以我已经制定了语法并相信它是有效的。我拿出了几个额外的&符号在那里。这是代码工作:

javascript:void(window.open('http://ourcompany/Reportserver/Pages/Report.aspx?%2fReports+in+Development%2funknown+provider+detail&rs:Command=Render&NEIGHBORHOOD="+join(Parameters!NEIGHBORHOOD.Value, ",")"&SOURCE="+join(Parameters!SOURCE.Value,",")"&DATA_TYPE="+join(Parameters!DATA_TYPE.Value,",")"&START="+Parameters!START.Value+"&END="+Parameters!END.Value+"&PROV_TYPE="+Parameters!PROV_TYPE.Value+"'))

但是,我现在有一个完全不同的问题。看起来像一个 SSRS 错误。我收到错误消息,“报告参数'START'对其类型无效。(rsReportParameterTypeMismatch)”在两个报告中它们都是日期/时间值。我已经通过更改系统日期时间格式来完成所有技巧,但无济于事。对这个有什么想法吗?谢谢

于 2017-02-02T16:20:58.560 回答