我尝试制作SSRS交货单报告,其中详细信息需要按客户分组,并使用客户地址作为报告标题。一个数据集包含多个客户,每个客户可能有10多行项目详细信息。 但是,由于预先打印了交货单,因此每页的详细行数限制为10个。
因此,我按客户信息对所有详细信息进行分组,使用带有较小矩阵的大矩阵嵌套来显示客户信息(标题)和项目详细信息(详细信息)。
为了限制每页的详细行数,我使用' = Ceiling(RowNumber(Nothing)/ 10)'组中的命令。
然而,我注意到这样做后会产生很大的副作用。例如,客户A有15个明细行,而客户B有8个明细行,预期结果是:
但实际结果是:
这是因为客户B详细信息的行号从16开始,因此在第一个客户B页面上只显示5行,这是意外的。有没有可能达到预期结果的方法?
答案 0 :(得分:1)
问题是分组的第二个条件:
=Ceiling(Rownumber(Nothing)/10)
这种分组因此会触发每10行的分页符,无论客户是哪行。在您的示例中,客户C在其第一页上只有7行,因为到目前为止总共打印了23行,A为15行,B为8行。
希望您的数据集基于Sql,因为我们可以使用一些内置功能Row_Number
,Over
和Partition
来计算查询结果中的组页码:
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
。