【问题标题】:Page number in landscape reports横向报告中的页码
【发布时间】:2012-11-28 11:55:46
【问题描述】:

请考虑这个自定义报告:

我想在所有页面上自动生成该页码。我有一些横向页面。我想将页码放在页脚中,但在横向报告中对此有疑问,因为横向报告中的页脚位于页面底部而不是页面右侧,因此我应该将页码放在正文部分。

如何在正文部分放置页码?

【问题讨论】:

  • 您“有问题”,但这是什么问题?你试过什么了?为什么它不起作用?

标签: sql-server-2008 reporting-services report ssrs-2008


【解决方案1】:

除非你有创意,否则我认为这是不可能的。

目前手头没有程序,我希望这可以开始一些思考。

尝试在您的数据中添加一个 exrta 列,计算行数,并强制每 x 行分页。如果这可行,您也许可以使用一些格式来使其在视觉上正确。

哇,祝你好运!

【讨论】:

    【解决方案2】:

    这篇文章可能有些用处:Determine page number in SSRS

    确定 SSRS 中的页码

    此方法利用 SQL Server 的新排名功能,可用于您的 SQL 报告以确定报告正文中的页码,还可能根据该信息隐藏/显示列。

    在以下情况下使用此方法:

    1. 您对页面上显示的记录数量有预设限制
    2. 您有分组,每个组显示在自己的页面上
    3. 您可以准确计算每页的记录数

    article 中的解决方案使用了 SQL 中的 Ranking Functions,值得一看,看看是否适用。

    所以我提到有 3 种情况可以为您工作。我将举例说明如何做每一个,让你的创造力来做剩下的。这将作为我们的示例销售表:

    name     sales_amount    group_name  Scenario #1     Scenario #2     Scenario#3
    A        10              A1          1               1               1
    B        20              A1          1               1               1
    C        30              A1          2               1               1
    D        30              A2          2               2               1
    E        40              A3          3               3               2
    F        40              A3          3               3               2
    G        50              A4          4               4               2
    H        60              A5          4               5               2
    

    场景 #1:

    您有一个预设 # 条记录放置在每个页面上: 这是您的 SQL 查询的样子:

    DECLARE @rows_per_page INT
    SET @rows_per_page = 2
    SELECT
     employee.name
     ,page = (Row_Number() OVER ( ORDER BY employee.sales_amount ) / @rows_per_page)
    FROM
     employee
    

    在 SSRS 中,您可以在 tablix (SSRS 2008) 中创建父组,并设置选项以中断“组的每个实例之间”。 (SSRS 2008 中的分页符标签)


    场景 #2:

    你有分组,每个组显示在自己的页面上

    SELECT
     employee.name
     ,page = Dense_Rank() OVER ( ORDER BY employee.group_name )
    FROM
     employee
    

    在您在 SSRS 中的报告中,在表/矩阵/tablix 的组属性中,将选项设置为中断“组的每个实例之间”。 (SSRS 2008 中的分页符标签)


    场景 #3:

    您可以准确计算每页的记录数 如果你能准确地计算出每一页的记录数,那么使用与#1类似的方法就变得很容易了。在示例中,该数字是每页 4 条记录。

    【讨论】:

      【解决方案3】:

      使用这个: Access Page number in report body In SSRS

      或者这个: http://social.msdn.microsoft.com/forums/en-US/tfsreporting/thread/b901c9b4-320e-4fbc-afa9-495d5566c168/

      您只需要为报告创建自定义代码,然后在您想要的位置引用该代码(引用自第二个链接):

      在“数据”或“布局”选项卡视图处于活动状态时,选择“报表”->“报表属性” 在“报告属性”对话框中选择“代码”选项卡 在“自定义代码:”中添加新函数以获取页码:

      Public Function PageNumber() as String
           Dim str as String
           str = Me.Report.Globals!PageNumber.ToString()
           Return str
      End Function
      
      Public Function TotalPages() as String
           Dim str as String
           str = Me.Report.Globals!TotalPages.ToString()
           Return str
      End Function
      

      像这样使用它:

      ="Page " + Code.PageNumber() + " of " + Code.TotalPages()
      

      【讨论】:

      • 问题是正文部分的页码每行重复
      • 虽然这个答案不能解决我的问题,但我将其标记为答案
      • 看看这个可能不是最佳解决方案:forums.asp.net/t/1347596.aspx/1您基本上将字段放在行标题中,然后在每一页上重复行标题。此外,如果这样做会使其他标题显示在每个页面上并且您不希望这种情况发生,您可以转到这些字段的可见性并将可见性更改为 =IIF(Code.PageNumber() = 1 , 对, 错)
      • 此外,如果您将代码放在文本框中,请在该文本框的属性中转到 RepeatWith 并指定要重复它的 tablix。这将在 tablix 所在的每个页面上重复该文本框。
      • 亲爱的 Neil 在您的示例中,我只收到了 Page 1 of 1,当我转到下一页时,此文本不会更改
      猜你喜欢
      • 1970-01-01
      • 2015-02-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-08
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多