【问题标题】:Dynamic SSRS report动态 SSRS 报告
【发布时间】:2013-03-22 20:01:07
【问题描述】:

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

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

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

我无法为每个测试报告创建单独的报告,它们已经很多了。我有什么办法可以解决这个问题...

【问题讨论】:

标签: dynamic reporting-services


【解决方案1】:

到目前为止,我能够让它工作的唯一方法是:

每个报告有 2 个数据集。

  1. 报告数据
  2. 数据头

“DataHeaders”需要具有“ReportData”中数据字段的正确名称。请小心,因为 SSRS 会用“_”替换空格和特殊字符

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

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

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

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

根据我的经验,性能也不是很好。实际上它有点慢,尽管我没有机会将其切换为使用共享数据集,我怀疑这会有所帮助。如果您找到更好的解决方案,请告诉我。

【讨论】:

    【解决方案2】:

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

    【讨论】:

      【解决方案3】:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多