2008-09-27 62 views
1

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

回答

4

我发现周围的工作:

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

总之,我告诉列表打破每4列。这会导致矩阵在4列之后分裂。

这不适用于所有情况,可能会导致小计,但它适用于我的应用程序。

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

0

我不这么认为。我发现输出到excel然后打印是打印我发现的SSRS矩阵报告的最灵活的方式 - 尤其是,因为我的大部分用户都非常熟悉。

1

没有办法内在地包装列;上面的Mboy的解决方案与我过去所做的非常相似,所以我不会在这里重复他的步骤,但我会警告您:对于具有大量列的矩阵,您将按指数方式增加报告中的页数。在你的情况下,这可能不成问题;但是我们发现,在大多数情况下,它更便宜(根据页面输出)而不是换行。

0

根据MSDN,Tablix数据区域以垂直方式进行水平分页,就好像您可以在组更改中指定分页符一样。还有另外一篇MSDN文章建议使用分页表达式,但这种技术已经由MBoy解释过,所以我不会重复它,除非说它是一种认可的技术。

1

除了MBoy的回答,我想在一个页面上显示多个图表,但图表数量因数据而异。我想要的是根据需要在行上显示两排图表。我并如下:

  1. 如MBoy建议的,我创建了一个“计数”字段称为[图表NUMBER]中,通过一个用于每个图表增加(因此,如果我有7个图表,行将被编号的数据1-7)。
    为了实现这一点,我使用了DENSE_RANK()SQL函数在我的查询中创建一个字段,例如DENSE_RANK()OVER(ORDER BY [Data]。[ItemtoCount])AS [ChartNumber]。
    所以,如果我想为每个部门我可能会使用DENSE_RANK()在不同的图表(ORDER BY [数据] [系])AS [图表NUMBER]

  2. 我添加了一个列表的形式,并绑定到我的数据集

  3. 然后将行组设置为= Ceiling(Fields!ChartNumber。价值/ 2)

  4. 然后我加了科拉姆组=天花板(领域!ChartNumber.Value国防部2)

  5. 创建列表和预览里面的图表,你会看到两个图表并排在每一排上。

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

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