如何使用表格在每个页面的末尾打印页面总计

时间:2012-10-05 12:48:44

标签: vb.net reporting-services report reporting rdlc

我正在尝试制作一个包含每行价格的报告,我想打印每页底部打印在页面上的价格总和。至少就我的情况而言,我不觉得在每一页上打印总计是不明智的。

示例:

第一页

Name            | Price1 | Price2 | Price3 | Price4   -table header

Record 1        |   10   |   15   |   15   |   20

Record 2        |   15   |   15   |   15   |   15

Total 2 records |   25   |   30   |   30   |   35     -table footer for page 1

第二页

Name             | Price1 | Price2 | Price3 | Price4  -starting 2. page, table header

Record 3         |   20   |   30   |   30   |   30

Total 1 records  |   20   |   30   |   30   |   30    -end of the table

Grand T. (3 rec) |   45   |   60   |   60   |   65    -end of the table

我为第一页放了2条记录,为第二页放了1条,它只是为了展示我想要的东西。我尽力让它看起来很清楚。

1 个答案:

答案 0 :(得分:1)

我可以看到两种可能的方法。

因为你说每页有可预测的行数(比方说,为了便于构建一个例子,有25个),你可以做到以下几点:

在查询中,为每一行分配一个连续的序列号。你可以这样做:

WITH Cte
AS (
    SELECT Name,
           Price1,
           Price2,
           Price3,
           Price4,
           RecordNumber = Row_Number() OVER (ORDER BY [whatever])
    FROM   [tables]
)
SELECT    Name,
          Price1,
          [etc]
          RowGroup = Floor((RecordNumber * 1.0) / 25 )
FROM      Cte
ORDER BY  RecordNumber

然后,在您的报告中,按RowGroup分组,并对您的行进行小计。

如果您在报告中有其他更高级别的分组,则可能必须在每个更高级别的组之后开始一个新页面,否则它将为页面小计停止放置。

(您可能也可以使用SSRS中的RowNumber()函数执行此操作而无需修改基础查询,但是有很多关于您可以使用哪些函数的规则,我不知道是否会被允许。)

我能想到的另一个选项更复杂,涉及使用报告代码部分和设置一些模块级功能。如果您认为这是您需要看到的东西,请告诉我。