我们已使用报表生成器创建了一个报表,该报表已发布到报表服务器。报告1,主要报告有6个参数; 3个多值参数和3个单值参数。希望报告2从报告1打开,但在单独的窗口中传递所有6个参数。在报告2中,它们也被构建为参数。参数: 邻里(多个) 开始(单身) 端(单) 来源(多) DATA_TYPE(多) Prov_type(单)
在报告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+"'))
我已经取代了" 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'))
有什么想法?谢谢!
答案 0 :(得分:0)
部分问题是您多次传递多值参数。例如,表达式的一部分将导致:
...&SOURCE=A&SOURCE=B&SOURCE=C...
您只能在网址中为每个参数设置一个值。
所以解决方法是用逗号分隔值并将它们作为单个字符串传递。然后,在子报表中,您需要再次解析它们。
"&SOURCE=" & join(Parameters!SOURCE.Value,",")
您可能会遇到其他问题,例如网址长度限制,但这会解决当前问题。
答案 1 :(得分: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)”在两个报告中,它们都是日期/时间值。我已经通过更改系统日期时间格式来完成所有技巧,但无济于事。对这个有什么想法吗?感谢