SSRS 传递多值参数以在附加 window 中打开报告

SSRS passing multi-value parameters to open report in additional window

我们使用 Report Builder 创建了一份报告,并发布到报告服务器。报表1,主报表有6个参数; 3 个多值参数和 3 个单值参数。希望报告 2 从报告 1 打开,但在单独的 window 中并传递所有 6 个参数。在报告 2 中,它们也被构建为参数。参数: 邻里(多) 开始(单) 结束(单) 来源(多) Data_type(多个) Prov_type(单身)

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

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

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

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'))

有什么想法吗?谢谢!

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

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

您只能在 URL 中为每个参数设置一个值。

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

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

您可能 运行 遇到其他问题,例如 URL 长度限制,但这将解决眼前的问题。

好的,我已经弄清楚了语法并且相信它是有效的。我拿出了一些额外的符号。这是有效的代码:

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 错误。我收到错误消息,"report parameter 'START' is not valid for its type. (rsReportParameterTypeMismatch)" 在两个报告中它们都是 date/time 值。我已经通过更改系统日期时间格式来完成所有技巧,但无济于事。对这个有什么想法吗?谢谢