包装SQL报告矩阵

时间:2008-09-27 16:13:18

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

我在SQL报告中有一个矩阵,我希望它能在A4页面上打印。如果矩阵少于4列,那么它适合但是对于超过4列我希望矩阵包装并且每页只显示4列。这可能吗?我在localmode中使用SQL Reporting 2005。

5 个答案:

答案 0 :(得分:4)

我找到了一个解决方法:

  1. 首先,我在数据源中添加了一个名为列计数的字段。因为数据源是在业务对象中构建的,所以我很容易告诉它有多少列数据。
  2. 接下来,我在报告中创建了一个列表,并将我的矩阵移到列表中。
  3. 我为列表创建了group expression = Ceiling(Fields!ColumnCount.Value / 4)。
  4. 简而言之,我告诉列表要打破每4列。这导致矩阵在4列之后被分割。

    这在所有情况下都不起作用,可能会搞乱小计,但它适用于我的应用程序。

    免责声明:这不是我的想法......我从Chris Hays's Sleezy Hacks改编了它。

答案 1 :(得分:1)

没有办法固有地包装列;上面的Mboy解决方案与我过去做的非常类似,所以我不会在这里重复他的步骤,虽然我会警告你:对于包含大量列的矩阵,你会以指数方式增加报表中的页数。在你的情况下,这可能不是一个问题;但我们发现在大多数情况下,不包括列更便宜(就页面输出而言)。

答案 2 :(得分:1)

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

  1. 正如MBoy所建议的那样,我在数据中创建了一个名为[ChartNumber]的'Count'字段,每个图表增加一个(所以如果我有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. 然后我将行组设置为on on = Ceiling(Fields!ChartNumber.Value / 2)

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

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

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

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

答案 3 :(得分:0)

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

答案 4 :(得分:0)

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