我们做报表跳转的时候,父报表和子报表只能在一个窗口显示,跳到子报表再回到父报表只能通过后退的方式,不方便查看和使用。现在找到了一个可以以新窗口来展现子报表的方法,介绍给大家。
假设有两张报表(父报表report11,子报表report22)
涉及到的参数说明如下:
Server:TargetServerURL
Folder:TargetReportFolder
ReportName:子报表名称
Para1:子报表参数名称
parameter:参数值(父报表传过去的,需要调用第二个Function)
只要最后拼出的url符合要求,可以传递多个报表参数,每个参数可以为单值或多值。
Step1:
Report11中,工具栏 报表-------报表属性--------代码,自定义代码里添加如下代码,然后确定:
Public Shared Function GetUrl(ByVal Server As String, ByVal Folder As String, ByVal ReportName As String, ByVal Para1 As String, ByVal parameter As String) as String
Dim URL As String
Dim s As String
Dim a As String
Dim urlhead As String
Dim urlend As String
urlhead = "javascript:void window.open('"
urlend="','_blank','resizeable=1,toolbar=0,status=0,menu=0,top=20,left=20,width=740,height=730');"
URL =urlhead + Server + "?" + "%2f" + Folder + "%2f" + ReportName + "&" + "rs:Command=Render" + "&" + para1 +"=" +parameter + urlend
Return URL
End Function
Public function GetParaValue(ByVal para1 as String) as String
Dim s as string
s=“&”+para1+"="
return s
End function
Step2:
在要跳转的单元格,选择“文本框属性”---------操作---------启用为超链接 选择“转到URL” ,公式里填写如下内容:
=Code.GetUrl("http://localhost/ReportServer","SSRS1","Report22","ProductCategory",Join(Parameters!Category.Value,Code.GetParaValue("ProductCategory")))
确定。
Step3:
发布父、子报表到服务器,查看父报表,点击跳转的单元格即可实现单值或多值传递,并以新的窗口查看子报表详细信息。效果如下:
作者介绍:
朱玲燕,北京迈思奇BI开发工程师,计算机及应用专业学士。
主攻ETL、OLAP建模、多维分析、报表开发、数据挖掘、.net开发等技术领域,具有丰富的BI项目开发和实施经验。
|