我在 SQL 报告中有一个矩阵,我希望它打印在 A4 页面上。如果矩阵的列少于 4 列,则它适合,但对于 4 列以上的列,我希望矩阵换行并每页仅显示 4 列。这可能吗?我在本地模式下使用 SQL Reporting 2005。
5 回答
我找到了解决方法:
- 首先,我在我的数据源中添加了一个名为列计数的字段。因为数据源是在业务对象中构建的,所以我很容易知道有多少列数据。
- 接下来,我在我的报告上创建了一个列表,并将我的矩阵移动到列表中。
- 我为列表创建了组表达式 =Ceiling(Fields!ColumnCount.Value/4)。
简而言之,我告诉列表每 4 列断开一次。这会导致矩阵在 4 列后拆分。
这不适用于所有情况,并且可能会搞砸小计,但它适用于我的应用程序。
免责声明:这不是我的主意……我改编自Chris Hays 的 Sleezy Hacks。
没有办法在本质上包装列;上面 Mboy 的解决方案与我过去所做的非常相似,因此我不会在此重复他的步骤,尽管我会警告您:对于具有大量列的矩阵,您的报告中的页数将成倍增长。在您的情况下,这可能不是问题;但我们发现,在大多数情况下(就页面输出而言)不换行会更便宜。
除了 MBoy 的回答,我想在一页上显示多个图表,但图表的数量会因数据而异。我想要的是在一行中显示两个图表,其中包含尽可能多的行。我做了如下:
正如 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]我在表单中添加了一个列表并绑定到我的数据集
然后我将行组设置为在 =Ceiling(Fields!ChartNumber.Value/2) 上分组
然后我在 =Ceiling(Fields!ChartNumber.Value Mod 2) 上添加了一个列组
在列表中创建一个图表并进行预览,您应该会在每行上并排看到两个图表。
我使用了图表,但您可以轻松地将矩阵或任何其他项目放入列表中。
编辑:n 列的更通用解决方案是 =Ceiling(Fields!ChartNumber.Value / n) 和 =Ceiling(n * Fields!ChartNumber.Value Mod n)
我不这么认为。我发现导出到 excel 然后打印是我发现的最灵活的打印 SSRS 矩阵报告的方式 - 尤其是。因为我的大多数用户都非常了解 excel。
根据MSDN,Tablix 数据区域水平分页的方式与表格垂直分页的方式大致相同,也就是说,您可以在组更改时指定分页符。还有另一篇 MSDN 文章建议使用分页表达式,但是 MBoy 已经解释了这种技术,所以我不会重复它,只是说它是一种认可的技术。