Visual Studio for SSRS 2008 - 如何在解决方案资源管理器中将报表组织到子文件夹中?

29

现在我有一个名为reports的项目,其中包含多个报告。在解决方案资源管理器中,它看起来像这样:

Shared Data Sources
 -- DEV
Reports
 -- Report1
 -- Report2
 -- Report3
我想让它看起来像这样,并且在我点击部署时,同样的结构能够传递到报表管理网站。
Shared Data Sources
 -- DEV
Folder A
 -- Report1
Folder B
 -- Report2
 -- Report3

有人知道怎么做吗?


2
微软连接请求此缺失功能:https://connect.microsoft.com/SQLServer/feedback/details/487106/allow-sub-folders-in-ssrs-projects - Tim Abell
7个回答

31

我正在使用SSRS 2005 - 我认为它的这个部分与2008版本的工作方式相同。

据我所知,您不能在项目中创建文件夹,但是您可以在解决方案中拥有多个项目。

要创建新文件夹,请右键单击“解决方案资源管理器”中的解决方案,然后选择“添加>新建项目...”

输入您的新项目名称(例如MyProject),并从Visual Studio安装模板列表中选择“报表服务器项目”。单击“确定”,您的新项目应出现在“解决方案资源管理器”中项目列表的末尾。

(还有其他设置新报告项目的方法,但这似乎是最快的方法。)

如果您现在右键单击新的报告项目并选择“属性”,则可以查看TargetReportFolder,它将默认为您的新项目名称(例如MyProject)。当您从SSRS部署报告时,它们将部署到此位置。(如果您愿意,可以更改位置-我发现使用项目名称更容易跟踪每个报告的位置。)

您需要将每个项目中要使用的任何数据源复制到使用该数据源的所有项目的数据源文件夹中。默认情况下,OverwriteDataSources设置为false,因此当您部署新报告时,它将使用已部署到Report Manager环境中的数据源。

因此,要获得您想要查看的Report Manager结构:

  • 创建名为Folder A和Folder B的项目
  • 将Report1移动/复制到Project Folder A中的Reports文件夹中
  • 将Report2和Report3移动/复制到Project Folder B中的Reports文件夹中
  • 将数据源DEV移动/复制到Projects Folder A和Folder B中的共享数据源文件夹中
  • 部署您的报告

不要忘记将更改检入源代码控制。


这是满足上述要求的正确方式。这也帮了我很多。我还需要一个帮助,如果在 Report1 中点击一个字段,我需要打开/导航到 Report2。但是我无法通过将它们放置和创建在单独的文件夹/项目中来实现。你可以帮忙吗..? - Raaghav
1
马克,我遇到的问题是我的报告解决方案中有5个项目,但我无法在这些项目之间共享共享数据集或数据源。是否有人曾经想出过解决方案? - clockwiseq

4
我们使用SSRS中的Linked Reports来管理此内容。我们将报告部署到一个对用户隐藏的报告分发文件夹中,然后在Reporting Services Web UI中创建Linked Reports(每个报告的Manage部分中的一个选项)。您可以在任何文件夹中创建Linked Report,因此可以构建所需的文件夹结构并将Linked Reports放置在适当的位置。
您可以从VS将所有内容部署到单个分发文件夹中,并更新Linked Reports。这解决了子报告和数据源问题,因为所有报告都是从分发文件夹“运行”的。显然,需要进行大量的初始设置,创建新环境也很麻烦 - 这种情况发生得如此之少,以至于我们还没有尝试自动化处理。

这个选项在2016版中似乎不可用。 - Popsyjunior
2
在报表的管理页面上,顶部菜单栏仍然有“创建链接报表”选项。SQL 2016 SP2 13.0.5292.0。 - ErikZ

4
做法与其他海报类似,我有一个解决方案,其中包含多个项目(每个项目都有名称,并放置在我想要部署的相同文件夹名称下)。
然后我在RS中编写了一个脚本,它: - 创建所有报告使用的单个数据源,在我的情况下 - 循环遍历解决方案文件夹中的所有目录 -- 在RS服务器上创建相同的文件夹名称 -- 将此目录中的所有文件部署到RS服务器上的该文件夹中 -- 对每个报告使用rs.SetItemDataSources进行重定向,以将其重定向到我的主数据源
基本上就是这样。
注意事项是有时会上传一些您不想要的文件(例如已删除的报告,.RDL仍然挂在周围)。但是您可以围绕所有内容编写脚本,或者只需在RS中删除并重新上传即可。
通过这样做,我有一个脚本,但可以在许多不同的父文件夹下部署结构,每个文件夹都具有不同的数据源,并且所有报告都在一个文件夹中从不同的数据库中提取数据。这使我能够运行1x RS实例,但具有开发,测试,培训等领域。

4
请问您能否分享您的脚本? - Tim Abell

2
我正在SSRS2008中进行一个BI项目,大约有80个报告 - 这是我将报告部署到文件夹中的经验。这是我第一次在Reporting Services中开发,所以任何专家请指出我的错误。
最初,我使用源代码控制中的文件夹来按部门分离较小的报告,以帮助保持组织。当我最初开发报告时,这很有效,但是第一次将项目部署到报告服务器时,结构完全被压平了 - 因此我放弃了使用文件夹结构进行组织。
据我所知,在SSRS中创建文件夹结构的唯一方法是使用Report Manager UI并在Report Server上创建文件夹。我假设从那里您将修改Visual Studio中报告属性中的路径。要么就是在首次设置报告时定义路径。我没有测试过,因此可能会有所不同。
因此总之:不可能在BIDS中创建文件夹并利用IDE将报告部署到文件夹中。我希望在2008R2中解决这个问题,因为在解决方案资源管理器中混合所有这些报告有点麻烦。

1
你可以将文件放在磁盘/源代码控制的不同文件夹中,但在Visual Studio中它们会以平面和按字母顺序排序的方式列出。
我无法看到用于管理上述内容的用户界面,但如果您编辑项目文件(VS解决方案的单个项目文件),则可以指定每个报告文件的FullPath XML标记。

0
我创建了一个报告服务器类型的项目,但没有选项来添加另一个项目。相反,我编辑了SLN文件并添加了我的其他项目。最终,SLN文件的第一部分看起来像这样,以访问SLN文件子文件夹中的2个项目:
Microsoft Visual Studio Solution File, Format Version 10.00
Visual Studio 2008
Project("{F14B399A-7131-4C87-9E4B-1186C45EF12D}") = "RestOfWorld", "RestOfWorld\RestOfWorld.rptproj", "{D24D5EEA-88A4-4375-802B-7CA877202787}" EndProject
Project("{F14B399A-7131-4C87-9E4B-1186C45EF12D}") = "NorthAmerica", "NorthAmerica\NorthAmerica.rptproj", "{C64A3BDC-F526-4037-AD48-31799BECC3AD}" EndProject Global

不清楚这是否真正回答了OP的问题。您能否添加更多解释? - wookie919
这是一个有用的答案,解决了我遇到的问题。详细信息请参见我的单独回答。 - BobHy

0

@skiwii是正确的,在使用VS 2013社区版和SQL数据工具 - 商业智能时,您在VS解决方案资源管理器树的顶部不会看到解决方案节点,并且您必须修改.SLN文件才能显示它。

  1. 从源代码树中选择所需的主.sln文件和一个.rptproj文件。将其称为“parent”。
  2. 在新的子文件夹中创建一个全新的、空的报告服务.rptproj文件(位于包含.sln文件的文件夹下)。例如,项目名为“child1”。VS还将在该文件夹中提供一个child1.sln文件。
  3. 关闭所有VS窗口。
  4. 使用您喜欢的文本编辑器(teco!)
    1. 打开child1.sln。
    2. 复制顶部的两行;Project...和EndProject
    3. 打开parent1.sln
    4. 将这些行粘贴到现有的Project / EndProject下面。
  5. 现在在VS中打开parent1.sln。您将神奇地看到解决方案节点出现在解决方案资源管理器窗口的顶部。
如果你非常幸运的话,你也会看到一个名为child1的第二个项目。但如果没有,没关系。你可以右键单击解决方案并添加一个类型为报表服务的新项目。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接