本文介绍如何在页上打印报表的组页脚信息,在特定位置。打印报表以预先打印的窗体时,这很有用。尽管不能完成这项工作使用组页脚的属性设置,但您可以使用以下三种方法之一:
- 将信息放入始终在固定位置打印的报表的页面页脚。
- 设置报表属性的页脚节。
- 设置报表属性的详细信息部分。
方法 1: 使用页面页脚
始终在固定位置在下边距的正上方的报表的页面上打印页面页脚。例如对于如果报表已为 1 英寸的边距,并且页面页脚的高度为 1 英寸页面页脚将开始从该页面底端的 2 英寸 (或从 11 英寸页面的顶部 9 英寸)。将组页脚控件放置在页面页脚会使它们按打印页面页脚的页上的固定位置。
注: 不能在页面页脚中使用聚合函数,如 Sum() 或 Count()。有关如何在页脚中显示聚合结果的其他信息请单击下面文章编号,以查看 Microsoft 知识库中相应的文章:
208850
(http://support.microsoft.com/kb/208850/EN-US/
)
ACC2000: 如何求和报告中的计算
方法 2: 设置报表属性的页脚节
此方法涉及使用报表的
MoveLayout、
PrintSection 和
NextRecord 属性以确保不会将组页脚打印在页面上的特定位置的上方。使用这种方法是不实际指定页上的组页脚的坐标,但推进组页脚的打印位置,直到达到指定的垂直偏移量。
为确保所需的位置打印组页脚,您必须考虑报表的每个节的高度。由于您不能使用属性设置指定的组页脚节 (或任何其他部分) 位置,您必须使用
MoveLayout 属性来将分区移至合适的打印位置。
在报表的
MoveLayout 属性为 False,对于每个节的默认值,但是它可以由事件过程进行更改。例如对于考虑带一个高为 0.5 英寸 (当在报表的
MoveLayout 属性为 False),将正常打印了组页脚节位置 3.75 英寸为单位指定从报表的顶部。如果该节的 OnFormat 事件将在报表的
MoveLayout 属性设置为 True,然后在组页脚节要设置格式的打印位置将被高级高度到的位置之自己的分辨率为为 4.25 英寸从报表的顶部。
下面的示例演示如何在组页脚打印在下半部分中的页上,通过调整节的高度,以及通过使用称为 SetGrpFtrLoc() 测试是否在报表的
Top 属性是小于 GrpFtrLoc 设置 (应打印组页脚的位置) 的一个示例用户定义函数。如果它函数设置报表的为 True
MoveLayout 属性和
PrintSection 和
NextRecord 属性为 False,移动到下一个打印位置的组页脚节,而不打印它,或将数据从另一条记录的。达到正确的位置后
MoveLayout 和
PrintSection 属性是默认值,并打印组页脚。
您应该知道这并不意味着组页脚的打印精确地按指定的垂直偏移量 (GrpFtrLoc) ; 直到该偏移量已经达到或超过而,高级打印位置。这一点的一个结果是各节将报告如在报表页眉节的某些页面上,但不能在其他人打印,其中可能会导致小的差异,在组页脚的打印位置。您可以避免这负责处理在您报告的不同的节的高度设置如示例所示。
注意: 如果您按照这些步骤在此示例中,您修改示例数据库 Northwind.mdb。您可能希望备份 Northwind.mdb 文件并在该数据库的副本,请按照下列步骤。
- 启动 Access 并打开示例数据库 Northwind.mdb。
- 创建一个新的模块和模块的 声明 节中输入下面的行,如果它已不存在: 模块中输入以下函数:
Function SetGrpFtrLoc(Rpt as Report, GrpFtrLoc as Double)
GrpFtrLoc=GrpFtrLoc*1440 'Convert from inches to twips.
If Rpt.top < GrpFtrLoc Then 'Not at location yet, so
Rpt.movelayout = True 'move to next print location.
Rpt.nextrecord = False 'Do not go to next record.
Rpt.printsection = False 'Do not print the section.
End If 'Until the required offset is reached
End Function
- 将模块保存为 页脚位置,然后将其关闭。
- 使用报表向导创建一个新报表是基于 客户 表包括以下字段:
Field Sort Group
----- ---- -----
Country Ascending Yes
CompanyName Ascending
Address
City
PostalCode
- 选择 Stepped 和 纵向 布局和默认样式。
- 标题报表 国家 1 的客户、 选择 修改报表的设计,然后单击 完成。
- 在报表 设计 视图在 视图 菜单上单击 排序与分组。
- 在字段/表达式下单击 国家/地区、 单击 组页脚 和选择 ,然后关闭排序与分组窗口。
- 单击工具箱中的 文本框 工具,然后单击创建未绑定的文本框的 国家/地区页脚 节的中心。
- 如果不可见,属性表用鼠标右键单击新文本框,然后单击以显示它在快捷菜单上的 属性。
- 单击 其他 选项卡,并命名新的文本框 DetailCount。
- 单击 数据 选项卡,然后在 控件来源 框中键入 =Count([CompanyName])。
- 设置 国家/地区页脚 节的属性,如下所示:
在高度: 为 0.3。
强制分页: 节之后
OnFormat: =SetGrpFtrLoc([Report],7)
注意: 在 SetGrpFtrLoc() 函数的参数 7 表示您的组页脚来开始从页面的顶部,至少为 7 英寸。 - 保存该的报告,然后预览它,查看连续页中使用导航按钮。
请注意在组页脚出现在大约是正确的位置,它不会不会显示在每一页上完全相同的位置。这是因为尚未为高度的移动部分的整数倍数设置报表页眉和主体节的高度。要实现此目的,请按照下列步骤操作:
- 在 设计 视图中再次打开报表。
- 将主体节的 高度 属性设置为 0.3 英寸。
- 将报表页眉节的 高度 属性设置为 0.6 英寸
- 保存并预览的报表。
只要您拥有一个适度的数量的明细数据记录,请注意组页脚现在显示在页上的一致位置。
注: 不需要进行调整,因为它们占用的空间量在每一页上相同的页标题和国家页眉部分。如果它们出现在某些页面上,而不在其他人,其高度也必须对其进行调整。
此方法有一些限制。如果有大量的明细数据记录,或者需要在组页脚显示在页面上的相对较高位置在您将找到组页脚页面的底部替换为打印超出了为其页脚指定偏移量主体节。
方法 3: 设置报表属性的详细信息部分
使用与
MoveLayout、
PrintSection 和
NextRecord 属性类似的方法,可以提前空白的主体节,直到到达打印组页脚节的位置。此方法是更可取移动组页脚节,如果主体节小于在组页脚节和特别是在主体节必须不到组页脚为保留区域 intrude 与预先打印好的窗体一样。
下面的示例演示如何通过使用示例用户定义的函数在报表的主体节中的换称为 SetDetailLoc() 和控制页打印在页面上的组页脚,在特定位置。
- 创建一个新的模块,并在 声明 节中输入下列语句:
Option Explicit
Dim lngRecCntr as Long ' number of detail records printed
- 输入以下功能:
Function HidePageBreak(Rpt As Report)
Rpt![HiddenPageBreak].Visible = False
lngRecCntr = lngRecCntr - 1
' the detail is formatted for a second time, but not printed,
' on setting new page so adjust the count of printed records
End Function
Function ResetCounter()
lngRecCntr = 0
End Function
Function SetDetailLoc(Rpt As Report, GrpFtrLoc As Double)
GrpFtrLoc = GrpFtrLoc * 1440 ' convert from inches to TWIPS
lngRecCntr = lngRecCntr + 1
If lngRecCntr < Rpt![DetailCount] Then ' some details yet to print
If Rpt.Top >= GrpFtrLoc Then ' printing has moved into footer area
Rpt![HiddenPageBreak].Visible = True ' go to new page
End If ' otherwise print normally
ElseIf lngRecCntr = Rpt![DetailCount] Then
If Rpt.Top < GrpFtrLoc Then ' not yet at footer area
Rpt.NextRecord = False ' don't go to next group
End If ' until advanced to footer position
Else ' advancing to footer position
Rpt.PrintSection = False ' don't print anything
If Rpt.Top < GrpFtrLoc Then ' not yet down to footer location
Rpt.NextRecord = False ' so don't go to next detail
Rpt.MoveLayout = True ' but do move down the page
End If
End If
End Function
- 将模块保存为 详细信息的位置,并将其关闭。
- 在 设计 视图中打开 由国家/地区的客户 报表,并将其另存为 国家/地区 2 的客户。
- 单击工具箱中的 分页符 工具,然后单击插入一个分页符主体节的底部。这将会执行不可见,按 HidePageBreak() 功能因而无效除非出现的明细数据记录,足以需要附加的页面。
- 如果不可见,属性表右击以显示它,然后单击 其他 选项卡键入名称 HiddenPageBreak 将 分页符。
- 设置下列属性 页面页眉 节,请执行下列操作:
OnFormat: =HidePageBreak([Report])
高度: 0.6 中。
- 在主体节中选择 国家/地区 文本框中、 剪切它和将其粘贴到页眉节,并将其定位在节的底部。
- 设置以下属性为 国家页眉 节,请执行下列操作:
OnFormat: =ResetCounter()
高度: 0 中。
注: 此节的高度可用于补偿打印更多的页面的详细信息,具体取决于报表的其他节的高度时,可能会生成一个小型偏移量。 - 设置以下属性为 主体 节,请执行下列操作:
OnFormat: =SetDetailLoc([Report],7)
- 删除 国家/地区页脚 节的 OnFormat 事件属性。
- 保存并预览的报表。
若要观察的明细数据记录的多个页面效果,请按照下列步骤操作:
- 在 设计 视图中打开报表 的国家/地区 2 的客户。
- 更改 国家页眉 节的 高度 属性为 3.0 英寸。
- 主体 节的 OnFormat 属性更改为 =SetDetailLoc([Report],5)
- 保存并预览的报表。
有关 MoveLayout、 NextRecord 和 PrintSection 报表的属性的详细信息,单击
帮助 菜单上的
Microsoft 帮助、 在 Office 助手或应答向导中键入
MoveLayout、 NextRecord、 PrintSection 属性,然后单击
搜索 以查看相关主题。
文章编号: 208979 - 最后修改: 2004年7月14日 - 修订: 1.2
这篇文章中的信息适用于:
- Microsoft Access 2000 标准版
| kbmt kbhowto KB208979 KbMtzh |
机器翻译注意:这篇文章是由无人工介入的微软自动的机器翻译软件翻译完成。微软很高兴能同时提供给您由人工翻译的和由机器翻译的文章, 以使您能使用您的语言访问所有的知识库文章。然而由机器翻译的文章并不总是完美的。它可能存在词汇,语法或文法的问题,就像是一个外国人在说中文时总是可能犯这样的错误。虽然我们经常升级机器翻译软件以提高翻译质量,但是我们不保证机器翻译的正确度,也不对由于内容的误译或者客户对它的错误使用所引起的任何直接的, 或间接的可能的问题负责。
点击这里察看该文章的英文版:
208979
(http://support.microsoft.com/kb/208979/en-us/
)
Microsoft和/或其各供应商对于为任何目的而在本服务器上发布的文件及有关图形所含信息的适用性,不作任何声明。 所有该等文件及有关图形均"依样"提供,而不带任何性质的保证。Microsoft和/或其各供应商特此声明,对所有与该等信息有关的保证和条件不负任何责任,该等保证和条件包括关于适销性、符合特定用途、所有权和非侵权的所有默示保证和条件。在任何情况下,在由于使用或运行本服务器上的信息所引起的或与该等使用或运行有关的诉讼中,Microsoft和/或其各供应商就因丧失使用、数据或利润所导致的任何特别的、间接的、衍生性的损害或任何因使用而丧失所导致的之损害、数据或利润不负任何责任。