Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/api/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sharepoint 2010 报表生成器3.0,使用SharePoint列表的相对URL作为数据源_Sharepoint 2010_Reportbuilder - Fatal编程技术网

Sharepoint 2010 报表生成器3.0,使用SharePoint列表的相对URL作为数据源

Sharepoint 2010 报表生成器3.0,使用SharePoint列表的相对URL作为数据源,sharepoint-2010,reportbuilder,Sharepoint 2010,Reportbuilder,我正在使用报表生成器3.0创建一个报表,以在SharePoint 2010中使用。SQL Server 2008 R2是SharePoint集成模式下Reporting Services的后端。Report Builder 3.0的一个很酷的功能是使用SharePoint列表作为数据源,其设置非常简单——只要将SharePoint列表的URL作为连接字符串提供给它,它就会工作 我最终想把这个网站打包成一个网站模板,包括存在其中的报告,这意味着URL需要是相对的,而不是绝对的。因此,例如,与此相反

我正在使用报表生成器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或其他方法,以便在每次基于此网站模板创建新网站时,不必在报告中手动更改连接字符串


编辑:我误解了数据源的连接字符串中需要包含的内容。连接字符串中出现的不是列表的URL,而是站点的URL。这个问题的概念仍然有效——需要动态设置指向SharePoint列表的数据源的连接字符串。

在与一些同事进行头脑风暴后,我们找到了答案。关键是使用连接字符串的表达式。使用我最初的示例,目标是:

http://mainsite/subsite1/
。。。在连接字符串中,但不进行硬编码——根据报表所在位置使其动态化,以便报表可以与站点的其余部分一起打包为站点模板。我最后的表达是:

=Replace(Globals!ReportFolder, "Reports", "")
该报告位于一个名为“报告”的库中,所以是Globals!ReportFolder返回:

http://mainsite/subsite1/Reports
然后,Replace()函数取出字符串的“Reports”部分,结果就是我想要的连接字符串

注意事项:

  • 无法在生成报表时测试表达式。我必须将站点URL硬编码到连接字符串中,以便设计师在基于该数据源创建数据集时可以填充列表列表。否则它不会显示可用列表,您必须手动键入所有内容。在设计报告之后,我将连接字符串更改为表达式,并且在部署时它可以工作
  • 测试时,请确保刷新浏览器视图,而不是报告任务栏中的小刷新图标。似乎报表的内置刷新只会获取新数据,但会使用现有的rdl文件,而刷新浏览器会强制它获取rdl的最新副本以及最新数据。这可能是不言自明的,但它在几分钟内给我带来了一些困惑,当时我的设计更改似乎没有带来任何不同,所以希望这能帮助其他人避免同样的困惑