SSRS报告在每页限制行数后,组无法正确显示

时间:2016-05-08 15:06:10

标签: reporting-services

我尝试制作SSRS交货单报告,其中详细信息需要按客户分组,并使用客户地址作为报告标题。一个数据集包含多个客户,每个客户可能有10多行项目详细信息。 但是,由于预先打印了交货单,因此每页的详细行数限制为10个。

因此,我按客户信息对所有详细信息进行分组,使用带有较小矩阵的大矩阵嵌套来显示客户信息(标题)和项目详细信息(详细信息)。

为了限制每页的详细行数,我使用' = Ceiling(RowNumber(Nothing)/ 10)'组中的命令。

然而,我注意到这样做后会产生很大的副作用。例如,客户A有15个明细行,而客户B有8个明细行,预期结果是:

  • 第1页:客户地址& 10项细节
  • 第2页:客户地址& 5项细节
  • 第3页:客户B地址& 8项细节

但实际结果是:

  • 第1页:客户地址& 10项细节
  • 第2页:客户地址& 5项细节
  • 第3页:客户B地址& 5项细节
  • 第4页:客户B地址& 3项细节

这是因为客户B详细信息的行号从16开始,因此在第一个客户B页面上只显示5行,这是意外的。有没有可能达到预期结果的方法?

Pic:Big matrix nest with small matrix

Pic:limit rows per page

1 个答案:

答案 0 :(得分:1)

问题是分组的第二个条件:

=Ceiling(Rownumber(Nothing)/10)

这种分组因此会触发每10行的分页符,无论客户是哪行。在您的示例中,客户C在其第一页上只有7行,因为到目前为止总共打印了23行,A为15行,B为8行。

希望您的数据集基于Sql,因为我们可以使用一些内置功能Row_NumberOverPartition来计算查询结果中的组页码:

SELECT Floor((Row_Number() OVER(partition by CustomerName ORDER BY CustomerName, ItemNumber)-1) / 10) AS GroupPageNumber, 
  CustomerName, ItemNumber
FROM Items 
ORDER BY CustomerName, ItemNumber

这会计算每页最多10个项目的群组页码,现在您只需将第二个分组表达式简化为=Fields!GroupPageNumber.Value