我正在使用Report Builder 3.0创建在SharePoint 2010中使用的报表.SQL Server 2008 R2是SharePoint集成模式下Reporting Services的后端。 Report Builder 3.0的一个很酷的功能是使用SharePoint列表作为数据源,其设置非常简单 - 只需将其作为连接字符串的SharePoint列表的URL,并且它可以正常工作。
我最终希望将此站点打包为包含其中的报告的站点模板,这意味着URL需要是相对的而不是绝对的。例如,而不是:
http://mainsite/subsite1/lists/mylist
......我需要指定类似的内容:
mylist
...因此,当我将其打包为站点模板并基于该模板创建新站点时,报告将使用新站点的列表,而不是指向原始站点的列表URL。我已经尝试了“mylist”,“lists / mylist”等等 - 所有这些都没有指定subsite1 / lists / mylist - 但是除了完整的URL之外没有任何工作。
是否可以使用相对URL或其他方法,以便每次基于此网站模板创建新网站时都不必在报告中手动更改连接字符串?
编辑:我误解了数据源连接字符串中需要的内容。它不是列表的网址,而是连接字符串中网站的网址。问题的概念仍然有效 - 需要动态设置指向SharePoint列表的数据源的连接字符串。
答案 0 :(得分:2)
在与一些同事进行头脑风暴后,我们发现了这一点。关键是使用表达式作为连接字符串。使用我的原始示例,目标是得到这个:
http://mainsite/subsite1/
...在连接字符串中但没有对其进行硬编码 - 根据报告的位置使其动态化,以便将报告与网站的其余部分一起打包为网站模板。我最终得到的表达是:
=Replace(Globals!ReportFolder, "Reports", "")
该报告位于名为“Reports”的库中,因此Globals!ReportFolder返回:
http://mainsite/subsite1/Reports
Replace()函数然后取出字符串的“Reports”部分,结果是我想要的连接字符串。
需要注意的事项: