【问题标题】:Wrap a SQL Reporting Matrix包装 SQL 报告矩阵
【发布时间】:2008-09-27 16:13:18
【问题描述】:

我在 SQL 报告中有一个矩阵,我希望它打印在 A4 页面上。如果矩阵的列少于 4 列,则它适合,但对于 4 列以上的列,我希望矩阵换行并每页仅显示 4 列。这可能吗?我在本地模式下使用 SQL Reporting 2005。

【问题讨论】:

    标签: sql-server sql-server-2005 reporting-services


    【解决方案1】:

    我找到了解决方法:

    1. 首先,我在数据源中添加了一个名为列计数的字段。因为数据源是在业务对象中构建的,所以我很容易知道有多少列数据。
    2. 接下来,我在报表上创建了一个列表,并将矩阵移到列表中。
    3. 我为列表创建了组表达式 =Ceiling(Fields!ColumnCount.Value/4)。

    简而言之,我告诉列表每 4 列断开一次。这会导致矩阵在 4 列后拆分。

    这并不适用于所有情况,并且可能会搞砸小计,但它适用于我的应用程序。

    免责声明:这不是我的主意...我改编自 Chris Hays's Sleezy Hacks

    【讨论】:

      【解决方案2】:

      没有办法在本质上包装列;上面 Mboy 的解决方案与我过去所做的非常相似,所以我不会在此重复他的步骤,尽管我会警告您:对于具有大量列的矩阵,您的报表中的页数将成倍增长。在您的情况下,这可能不是问题;但我们发现,在大多数情况下(就页面输出而言)不换行会更便宜。

      【讨论】:

        【解决方案3】:

        在 MBoy 的回答中,我想在一页上显示多个图表,但图表的数量会因数据而异。我想要的是在一行中显示两个图表,其中包含尽可能多的行。我做了如下:

        1. 按照 MBoy 的建议,我在数据中创建了一个名为 [ChartNumber] 的“计数”字段,每个图表增加一(因此,如果我有 7 个图表,行将编号为 1-7)。 为此,我使用 DENSE_RANK() SQL 函数在我的查询中创建了一个字段,例如 DENSE_RANK() OVER (ORDER BY [Data].[ItemtoCount]) AS [ChartNumber]。
          因此,如果我想为每个部门使用不同的图表,我可能会使用 DENSE_RANK() OVER (ORDER BY [Data].[Department]) AS [ChartNumber]

        2. 我在表单中添加了一个列表并绑定到我的数据集

        3. 然后我将行组设置为在 =Ceiling(Fields!ChartNumber.Value/2) 上分组

        4. 然后我在 =Ceiling(Fields!ChartNumber.Value Mod 2) 上添加了一个列组

        5. 在列表中创建一个图表并进行预览,您应该会在每一行看到两个并排的图表。

        我使用了图表,但您可以轻松地将矩阵或任何其他项目放入列表中。

        编辑:对于 n 列更通用的解决方案是 =Ceiling(Fields!ChartNumber.Value / n) 和 =Ceiling(n * Fields!ChartNumber.Value Mod n)

        【讨论】:

          【解决方案4】:

          我不这么认为。我发现导出到 excel 然后打印是我发现的最灵活的打印 SSRS 矩阵报告的方式 - 尤其是。因为我的大多数用户都非常了解 excel。

          【讨论】:

            【解决方案5】:

            根据MSDN,Tablix 数据区域水平分页的方式与表格垂直分页的方式大致相同,也就是说,您可以在组更改时指定分页符。还有另一篇 MSDN 文章建议使用分页表达式,但是 MBoy 已经解释了这种技术,所以我不会重复它,只是说它是一种认可的技术。

            【讨论】:

              猜你喜欢
              • 2010-11-17
              • 2010-10-15
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 2020-08-21
              相关资源
              最近更新 更多