代码之家  ›  专栏  ›  技术社区  ›  MBoy

包装SQL报告矩阵

  •  1
  • MBoy  · 技术社区  · 16 年前

    我有一个SQL报表矩阵,我希望它打印在A4纸上。如果矩阵有少于4列,那么它适合,但超过4列,我希望矩阵包装,每页仅显示4列。这可能吗?我正在本地模式下使用SQL Reporting 2005。

    5 回复  |  直到 16 年前
        1
  •  4
  •   MBoy    16 年前

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

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

    这不会在所有情况下都起作用,可能会搞砸分类计数,但它在我的应用程序中起作用。

    Chris Hays's Sleezy Hacks .

        2
  •  1
  •   Ris Adams    16 年前

        3
  •  1
  •   knuckles    13 年前

    对于MBoy的回答,我想在一页上显示多个图表,但图表的数量会因数据而异。我想要的是在一行上显示两个图表,并根据需要显示尽可能多的行。我做了如下工作:


    1. 为了实现这一点,我使用densite_RANK()SQL函数在查询中创建了一个字段,例如densite_RANK()OVER(ORDER BY[Data].[ItemtoCount])as[ChartNumber]。
      因此,如果我想为每个部门创建一个不同的图表,我可以使用densite_RANK()OVER(ORDER BY[Data].[department])作为[ChartNumber]

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

    3. 然后我在=天花板(Fields!ChartNumber.Value Mod 2)上添加了一个柱组

    4. 在列表中创建一个图表并预览,您应该可以在每行上看到两个并排的图表。

    编辑:n列的更通用的解决方案是=天花板(字段!ChartNumber.Value/n)和=天花板(n*字段!ChartNumber.Value Mod n)

        4
  •  0
  •   Booji Boy    16 年前

        5
  •  0
  •   Peter Wone    16 年前

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