动态SSRS报告

时间:2011-01-17 23:19:23

标签: dynamic reporting-services

我在SSRS中创建动态报表时遇到问题。我的问题是:

在表中,我使用SQLScripts列存储了SQL脚本。如果执行这些SQL脚本,则每个脚本都会得到不同数量的列。

我的问题是,我有一个带有这些脚本按钮的报告,例如test1,test2 ......就像那样。如果按下test1按钮,则应该测试一个SQL脚本,并且应该在该sqlscripts中显示包含适当列的报告。

我不能为每个测试报告创建单独的报告,它们很多。我有什么选择来解决这个问题...

3 个答案:

答案 0 :(得分:2)

我能够让这个工作的唯一方法是:

每个报告都有2个数据集。

  1. ReportData
  2. DataHeaders
  3. “DataHeaders”需要在“ReportData”中具有正确的数据字段名称。请注意,因为SSRS用“_”替换空格和特殊字符

    现在,创建一个表(或矩阵)并将DataHeaders拖动为报表的列。 (这应该是分组列)。如果此时运行它,您将看到没有任何数据的所有列。现在来了魔术:

    创建另一个带有“DataField”参数的报表。在此报表中创建另一个表或矩阵,并将其数据集属性设置为“ReportData”。在表格的DATA单元格中,将其设置为表达式 = Fields(Parameters!DataField.Value).Value

    现在回到你的第一份报告。右键单击并插入子报表。右键单击子报表,然后选择“子报表属性”。通常,选择您创建的第二个报表以用作子报表。在参数下,选择DataField参数并将其值设置为 = Fields!DataField.Value

    在我的情况下,我在这个表达式中做了一些格式化以修复上面提到的空格和特殊字符的问题,因为我的存储过程最初是在ASP.NET中使用的,这只是一个概念证明。

    另外根据我的经验,表现并不好。实际上它有点慢,虽然我没有机会将其切换为使用共享数据集,我怀疑它会有所帮助。如果您找到更好的解决方案,请告诉我。

答案 1 :(得分:0)

我还没有找到一种完全动态完成此操作的方法。这是一个类似的问题和一些可能的解决方案: How do i represent an unknown number of columns in SSRS?

答案 2 :(得分:0)

您基本上需要从其他基于大量SQL脚本的数据集创建“主数据集”。主数据集应包含要以最简单的形式呈现的数据,即以简单的列表格式。 最后,转到SSRS中的工具栏并将“矩阵”拖到报表中。 Matrix表的作用类似于Excel中的数据透视表或Access中的CrossTab查询,它将显示数据集中的任何内容。