1

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

4

5 回答 5

4

我找到了解决方法:

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

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

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

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

于 2008-09-29T11:15:54.480 回答
1

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

于 2008-09-29T11:31:34.287 回答
1

除了 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)

于 2011-05-24T08:06:32.087 回答
0

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

于 2008-09-27T16:18:16.703 回答
0

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

于 2008-10-01T04:00:49.533 回答