第5章 报表的基本操作 报表是Access 2016的数据库对象之一,它能根据指定的规则打印输出格式化的数据信息。数据库中的数据经过处理后经常需要输出到打印机,然后打印成纸质的文档。在Access中使用报表对象来实现打印格式数据的功能,通过对报表对象的设计,不但可以控制数据库中数据输出的内容和打印的格式,还可以对数据进行分组、排序和统计汇总的显示,以及创建包含子报表和图表的复杂报表。建立报表的过程与建立窗体的过程有些类似,但建立好的窗体可以与用户进行信息交互,而报表只是被打印在纸张上,是没有交互功能的。本章将在介绍报表的分类和结构的基础上,详细讲解如何使用向导和报表的“设计视图”来创建报表。 5.1报 表 概 述 5.1.1报表的类型 按照数据布局格式的不同,Access 2016中的报表可以分为4种常用类型: 表格式报表、纵栏式报表、图表式报表和标签式报表。 1. 表格式报表 表格式报表以行和列的格式输出数据,一条记录的所有字段显示在一行。这样的显示格式可以在一页上尽量多地显示数据内容,方便用户尽快了解数据的全局。如图5.1所示的“课程”报表就是一个表格式报表。 图5.1表格式报表 2. 纵栏式报表 纵栏式报表以列的方式显示多条记录,一条记录的每个字段各占一行。采用纵栏式报表的显示格式能够让一条记录的所有字段尽量多地显示出来,使关心记录细节的用户能够很快看到一条记录的“全貌”。如图5.2所示的“教师”报表就是一个纵栏式报表。 图5.2纵栏式报表 3. 图表式报表 使用图表显示数据表中的数据可以给用户带来更直观清晰的分析结果。在Access中可以通过报表“设计视图”中的图表控件建立图表对象。如图5.3所示的“各专业男女生人数”报表就是一个使用柱形图显示“教学管理系统”数据库中各不同专业男女生人数的图表式报表。 图5.3图表式报表 4. 标签式报表 标签是一种类似名片的记录短信息的报表。在日常工作中,经常需要制作一些标签,如在校学生需要的借书证、听课证,企业公司员工需要的出入证、员工卡以及在超市里常见的商品价格标签等。这些标签里显示的数据信息来源于数据库,通过Access里的标签式报表就可以设置所需要的标签格式,图5.4所示的“听课证”就是一个用来打印学生简要信息的标签式报表。 图5.4标签式报表 5.1.2报表的视图 在Access 2016中使用报表对象时可以选择以下4种视图之一: 报表视图、打印预览视图、布局视图和设计视图。其中,“设计视图”与“打印预览视图”这两个视图是每个报表都具备的视图方式,而“报表视图”和“布局视图”则可以通过对每个报表的“允许报表视图”和“允许布局视图”这两个属性进行设置来选择该视图方式是否显示。 “报表视图”用于查看报表的设计结果,在“报表视图”中的数据按照预先的设计以窗口的形式显示出来。“打印预览视图”用于观察数据打印在纸张上的页面效果,在“打印预览视图”中可以分页显示需要打印的全部数据。“布局视图”可以查看报表版面的设置和打印的效果。使用“布局视图”还可以插入字段和控件,调整报表的字体、字号和常规布局,不过只能看到页面的子集,而不是报表中数据的完整呈现。“设计视图”主要用于创建和编辑报表的内容和结构,使用“设计视图”可编辑更改已有报表的设计或从头开始创建新的报表。 双击一个报表对象打开报表时,就进入了该报表的“报表视图”。如果要切换到另外的视图,可以单击“开始”选项卡中的“视图”按钮,在弹出的下拉列表框中选择不同的选项,如图5.5所示,也可以在右下角的状态栏中选择另外的视图进行切换。 图5.5“视图”下拉列表框 5.1.3报表的结构 打开一个报表的“设计视图”,用户可以看到报表的结构由如图5.6所示的几个区域组成,每个区域可称为一个“节”。 图5.6报表的基本结构 1. 报表页眉 放置在报表页眉内的信息是整个报表的页眉,在报表的开始处,用来显示报表的标题、说明性文字,如标题、公司名称、单位等。报表页眉中的内容在打印一份报表时只打印一次。一般来说,报表页眉主要用于打印封面。 2. 页面页眉 页面页眉用来放置显示在报表上方的信息,如每列的列标题,主要是字段名或记录的分组名称。页面页眉中的内容会出现在报表中每页的顶端,即每页打印一次。 3. 主体 主体是报表显示数据的主要区域。数据源中的每条记录都放置在主体中。根据主体中字段数据的显示位置,报表可以分为“纵栏式”或“表格式”等多种类型。 4. 页面页脚 放置在页面页脚中的内容打印在每页的底部,用来显示本页的汇总说明、页码等内容。 5. 报表页脚 报表页脚一般用来显示整份报表的汇总说明,如报表总结、打印日期等。其中的内容只会打印在报表最后一页的最后一条记录的后面,与报表页眉一样,一份报表只打印一次报表页脚中的内容。 在报表的“设计视图”中右击,在弹出的快捷菜单中选择 “报表页眉/页脚”“页面页眉/页脚”命令,可以添加或删除对应的节。 如果对报表中的数据进行了分组,“设计视图”还会增加对应于分组字段的两个节,分别是组页眉和组页脚。它们的内容在每个组的开始和结束处分别显示并打印。 5.2创 建 报 表 Access 2016提供了多种创建报表的方法,其中包括自动创建报表、新建空报表、使用报表向导创建报表、使用标签向导创建报表和使用“设计视图”创建报表(将在5.3节单独介绍)的方法。 5.2.1自动创建报表 Access通过自动创建报表来提供一种快速创建报表的方法,用户只需要在创建报表之前选定一个数据源,就可以迅速建立包含该数据源的表格式报表。数据源既可以是已经建立的表或查询,也可以是另外的带有数据源的对象,如已有的窗体或报表等,Access会自动将已有窗体或报表的数据源作为新报表的数据源。 例5.1以“学生”表为数据源自动创建报表,报表名为“学生”。 操作步骤如下。 (1) 打开“教学管理系统”数据库,在数据库对象列表中选定“学生”表作为数据源,如图5.7所示。 图5.7自动创建报表 (2) 选择“创建”选项卡下的“报表”选项组,单击“报表”按钮,如图5.7所示,即可进入自动生成的“学生”报表的“布局视图”,如图5.8所示。 图5.8“学生”报表的“布局视图” (3) 单击快速访问工具栏中的“保存”按钮,命名并保存该报表。 5.2.2新建空报表 新建空报表可以从一个空的报表开始快速完成报表中内容的创建。新建空报表时,无须事先选取数据源,系统默认打开空报表的“布局视图”,并且提供字段列表,方便用户拖动选取字段,并自动构建包含所选字段的查询,以该查询作为本报表的数据源。当用户布局好字段后能够立即通过“布局视图”来查看数据全貌,直接观察报表的设计结果。 例5.2以“课程”表为数据源,用新建空报表的方法建立“课程”报表。 操作步骤如下。 (1) 打开“教学管理系统”数据库,选择“创建”选项卡下的“报表”组,单击“空报表”按钮,即可进入空报表的“布局视图”,单击“字段列表”中的“显示所有表”按钮后可以展开当前数据库中的所有可用字段所在的表,如图5.9所示。 图5.9空报表的“布局视图” (2) 选择“字段列表”中的“课程”表,单击按钮,选取并拖动字段到“布局视图”中,即可自动生成“课程”报表的“布局视图”,如图5.10所示。 图5.10“课程”报表的“布局视图” (3) 单击快速访问工具栏中的“保存”按钮,命名并保存该报表。 5.2.3使用报表向导创建报表 在使用报表向导创建报表时,向导会提示用户选择数据源、字段、版面及所需的格式,根据向导提示可以完成大部分报表设计的基本操作,加快了创建报表的过程。 例5.3使用报表向导的方法创建“学生成绩”报表。 操作步骤如下。 (1) 打开“教学管理系统”数据库,选择“创建”选项卡下的“报表”组,单击“报表向导”按钮,启动报表向导。 (2) 选择数据源。在“表/查询”下拉列表框中选择“成绩”表,在“可用字段”列表中选中“学号”“课程号”和“成绩”字段拖动到“选定字段”列表框中,如图5.11所示,然后单击“下一步”按钮。 图5.11选择数据源 (3) 确定是否添加分组级别。根据需要,选择“课程号”字段作为分组级别,如图5.12所示,然后单击“下一步”按钮。 图5.12添加分组级别 (4) 指定数据的排序方式。最多可以按4个字段对记录进行排序。这里指定按“学号”排序,如图5.13所示。单击“汇总选项”按钮,弹出如图5.14所示的“汇总选项”对话框,指定计算汇总值的方式为“平均”方式,然后单击“确定”按钮,再单击“下一步”按钮,进入下一个对话框。 图5.13指定数据的排序方式 图5.14“汇总选项”对话框 (5) 指定报表的布局方式。这里选择“递阶”布局方式,如图5.15所示。注意,不同的数据源或不同的设计会使布局方式有不同的选择,如果数据源没有进行分组,布局方式将会变成“纵栏表”“表格”“两端对齐”这三种选择。在打印方向上还可以选择是纵向打印还是横向打印,在左边的预览框中可以看到布局的效果,然后单击“下一步”按钮。 图5.15指定报表的布局方式 (6) 为报表指定标题。这里输入“学生成绩”,选中“预览报表”并单击“完成”按钮就可以得到一个初步的报表,该报表的“打印预览视图”如图5.16所示。如果用户对报表的设计不满意,还可以切换到该报表的“设计视图”做进一步的修改。 图5.16“学生成绩”报表的“打印预览视图” 5.2.4使用标签向导创建报表 标签式报表是Access提供的一种非常实用的报表,它采用多列布局,是完全为了适应标签纸而设置的特殊格式的报表。“标签向导”不但支持标准尺寸的标签,还能够制作自定义尺寸的标签。 例5.4为“学生”表中的每位学生制作一个包含学生基本信息的听课证,信息包括学号、姓名、性别和专业。 操作步骤如下。 (1) 打开“教学管理系统”数据库,在“数据库对象”列表框中选取“学生”表作为数据源,然后选择“创建”选项卡下的“报表”组,单击“标签”按钮。 (2) 选择标签型号。在弹出的“标签向导”对话框中选择第一个标签尺寸C2166,横标签号2,表示横向一次打印两个标签,然后单击“下一步”按钮。 (3) 选择标签的字体和字号。这里选择“楷体”“加粗”“14”号,然后单击“下一步”按钮。 (4) 确定标签的显示内容。在右边的“原型标签”栏中,既可以直接输入要打印的文本,也可以通过双击“可用字段”列表框中的字段来选择所需的字段,选中的字段会用花括号标识。这里按题意设计,如图5.17所示。 图5.17确定标签的显示内容 (5) 选择排序字段。这里选择按“学号”排序,然后单击“下一步”按钮。 (6) 指定标签名称。输入“听课证”后单击“完成”按钮即可见“听课证”报表的“打印预览视图”,如图5.18所示。 图5.18“听课证”报表的“打印预览视图” 5.3使用设计视图创建报表 使用向导的方法可以很方便地创建报表,但有时报表的形式还不能令人满意,这时可以通过报表的“设计视图”对报表做进一步的完善和改进。当然,用户也可以在报表“设计视图”中直接创建新报表。 5.3.1使用设计视图创建报表的步骤 使用“设计视图”创建报表的步骤如下。 (1) 打开报表的“设计视图”。选择“创建”选项卡下的“报表”组,单击“报表设计”按钮,就可以打开新报表的“设计视图”了。 (2) 设置报表的数据源。报表的数据源可以是单个的表或查询,如果报表的数据源涉及多表,则必须使用查询将多表中的数据集中起来。具体方法是: 选择“设计”选项卡下“工具”组中的“属性表”按钮打开“属性表”窗格,在该窗格中选择“报表”对象的“记录源”属性,然后就可以通过选择表或已有的查询来确定记录源。也可以不直接设置记录源属性,而是选择“设计”选项卡下“工具”组中的“添加现有字段”按钮,在打开的字段列表中直接选取所需字段拖动到报表中,这样系统会自动构建包含所需字段的查询命令,并将该命令设置为记录源。 (3) 添加和设计所需控件。在“设计视图”中,新报表会显示出它的原始结构,由报表的3个基本节组成: 页面页眉、主体和页面页脚,如图5.19所示。利用“控件”组中的“工具”按钮,用户可以在报表的适当节中添加所需控件,并通过设置控件的显示内容、属性及格式等,完成报表的细节设计。 图5.19报表的“设计视图” (4) 保存并命名报表,预览后结束报表的创建。 5.3.2报表控件的使用 1. 添加标签和文本框 在Access报表中,最常用的控件就是标签和文本框控件。标签控件用来显示静态数据,其内容在设计报表时就已经确定,打印时不会有变化。文本框控件用来在报表中显示数据,可以与数据源进行绑定,打印时将动态显示实际数据,也可以显示某个表达式的内容。 例5.5用报表“设计视图”建立“学生基本情况”报表,要求显示“学生”表中的每个字段。 操作步骤如下。 (1) 在打开的“教学管理系统”数据库中,选择“创建”选项卡下的“报表”组,单击“报表设计”按钮,打开报表的“设计视图”。 (2) 选择“设计”选项卡“工具”组中的“属性表”按钮打开“属性表”窗格。选择“属性表”中“报表”对象的“记录源”属性,选中“学生”表作为数据源。 (3) 在“设计视图”的窗口中右击,添加“报表页眉/页脚”节,并调整“页面页脚”和“报表页脚”两个节的高度为0。 (4) 添加报表标题。在“报表页眉”中添加标签控件用来显示报表的标题为“学生基本情况表”,并右击标签,在弹出的快捷菜单中选择“属性”命令,修改“格式”选项卡中的字体名称为“黑体”,并设置字号为20磅,如图5.20所示。 图5.20“学生基本情况”报表的“设计视图” (5) 设置报表每页的列标题。在“页面页眉”中添加多个标签控件,用来分别输入“学生”表的每个字段名,用户还可以通过“格式”菜单中的“对齐”命令使标签排列整齐,然后用鼠标在“页面页眉”节的下边缘处调整“页面页眉”的宽度。 (6) 设置相应控件显示数据记录。在“主体”中添加多个文本框控件,右击每个文本框,在弹出的快捷菜单中选择“属性”命令,打开“属性表”窗格,设置“数据”选项卡下的“控件来源”为对应的字段,这样就可以将文本框与表中字段进行绑定,并分别显示“学生”表的每个字段值。最后调整“主体”中各控件位置使之与“页面页眉”中的列标题标签纵向对齐。 也可以通过拖动“字段列表”中的对应字段来完成以上字段绑定的过程,方法更简捷。选择“工具”组中的“添加现有字段”按钮,打开字段列表,此时可以看到已经被添加到数据源中的“学生”表。用鼠标直接选中列表中的各个字段并拖动到“主体”节中,系统会自动生成与字段类型相匹配的控件,然后选中添加的全部字段控件及其标签并右击,在弹出的快捷菜单中选择“布局”中的“表格”命令,这时报表会以“表格”样式进行布局,自动将字段前的标签放置到“页面页眉”中,并且与“主体”中的字段控件对齐。 (7) 调整各节的宽度,如图5.20所示。至此完成了该报表的设计,用户可通过单击“视图”按钮来查看该报表的“报表视图”,如图5.21所示,如果显示效果满意,可以关闭并保存报表名为“学生基本情况”。 图5.21“学生基本情况”报表的“报表视图” 2. 添加页码、日期和时间 报表中经常需要显示页码、日期及时间等打印时的状况信息。在Access报表“设计视图”中能够很容易地添加这些对象。 例5.6为“学生基本情况”报表添加页码、日期和时间。 操作步骤如下。 (1) 打开“教学管理系统”数据库,在左边的“对象”列表中选择“学生基本情况”报表,右击,在弹出的快捷菜单中选择“设计视图”命令,打开该报表的“设计视图”。 (2) 单击“页眉/页脚”组的“页码”按钮,在弹出的对话框中选中“首页显示页码”复选框,格式选择“第N页,共M页”,位置选择“页面底端(页脚)”,并以“居中”对齐方式显示页码,然后单击“确定”按钮。这时用户可以看到在“设计视图”的“页面页脚”节中出现了显示页码的文本框控件,如图5.22所示,这意味着每个新的打印页都将显示页码。 图5.22设置页码、日期和时间 (3) 单击“页眉/页脚”组的“日期和时间”按钮,在弹出的对话框中选定日期和时间的显示格式,然后单击“确定”按钮。同样,用户可以看到在“设计视图”的“报表页眉”节的右上角,系统已经添加了两个分别用来显示日期和时间的文本框,如图5.22所示,说明日期和时间只在报表打印的第一页(即报表页眉)显示一次。当然,用户也可以通过拖动文本框的方式将它们移至其他位置,那么打印的次数将会随着所在节的不同有所差异。 (4) 设计完成后,单击“视图”按钮,选择“报表视图”选项,查看结果。 从图5.22中可以看出,页码其实调用的是内部变量[Page],日期和时间调用了函数Date()和Time()。常用内部变量还有表示总页数的[Pages],以及表示时间的函数Now()等。对这些变量函数的灵活运用可以设计更加多样的报表外观。 3. 绘制线条和矩形 在报表中适当的位置添加线条和矩形能够分隔报表空间,起到醒目和美化的作用。添加线条和矩形的方法与在窗体中添加该控件的方法一样,只是需要注意添加到不同节内的线条和矩形在显示上的变化。 例5.7在“学生基本情况”报表中的“页面页眉”处添加直线,运行结果如图5.23所示。 图5.23添加直线后的运行结果 操作步骤如下。 (1) 打开“教学管理系统”数据库,在左边的“对象”列表中选择“学生基本情况”报表,右击,在弹出的快捷菜单中选择“设计视图”命令,打开该报表的“设计视图”。 (2) 从“控件”组中单击“直线”按钮,然后在“页面页眉”的列标题标签下绘制一条直线。 (3) 选中线条后右击,在弹出的快捷菜单中选择“属性”命令,打开“属性表”对话框,将“格式”选项卡中的“边框宽度”属性设置为“3磅”(即3Pt)。 (4) 设计完毕,切换到“报表视图”,运行结果如图5.23所示。 需要注意的是,由于直线只在每页的列标题下显示,所以只能将直线添加到“报表页眉”节中,如果错误地将直线加到“主体”节中,则会在每条记录下都显示一条直线,这就与题意不符了。 5.3.3排序与分组 1. 排序 在默认情况下,报表中显示的数据是按照数据在表中的输入顺序来排列的。如果需要数据按指定的顺序显示,就可以使用Access数据库提供的排序功能。通过排序设置可以将记录按照一定的规则排列,从而使数据的查找更为方便。当然,通过“报表向导”也可以设置记录的排序和分组方式,但最多只能按4个字段排序。使用“分组和排序”按钮,可以进行多达10个字段的排序与分组,而且可以选择按字段表达式排序。 例5.8建立“学生选课成绩”报表,要求显示学生的姓名和课程的名称及成绩,并且按照“学号”的升序和“成绩”的降序进行排序。 操作步骤如下。 (1) 在“教学管理系统”数据库中新建一个基于“学生”“课程”“成绩”表的名为“选课成绩”的查询,查询中选择“学号”“姓名”“课程号”“课程名称”“成绩”字段。 一般在创建报表时,报表的记录源既可以选择表也可以选择查询,而本报表需要展示的数据显然来源于多表,所以事先建立基于多表查询较为适合。用户也可以通过在报表的“字段”列表中依次选中多表中的字段,由系统自动创建对应的SQL查询命令作为报表的记录源。 (2) 用报表“设计视图”新建报表。选择“创建”选项卡下的“报表”组,单击“报表设计”按钮,打开报表的“设计视图”。单击“报表”组中的“属性表”按钮,打开报表的“属性表”对话框,设置“数据”选项卡中“记录源”的属性为“选课成绩”,然后单击“报表”组中的“添加现有字段”按钮,打开“字段列表”窗格,查询中的可用字段全部展现在“字段列表”中。用例5.5中的方法添加报表页眉以及各个控件,调整各控件的位置、大小,并进行属性的设置与布局,如图5.24所示。为了让数据显示得更加清晰,用户可以去掉报表的部分默认格式,这里用鼠标框选“主体”节中的所有文本框,将这些文本框的“边框样式”属性设置为“透明”。设置完毕后可以关闭“字段列表”。 图5.24“学生选课成绩”报表的“设计视图” (3) 在“设计”选项卡“分组和汇总”组中单击“分组和排序”按钮,在报表的下方打开“分组、排序和汇总”对话框,如图5.25所示。 图5.25显示“分组、排序和汇总”对话框 (4) 单击“添加排序”按钮,从“选择字段”下拉列表框中选择字段或直接输入表达式。这里选择“学号”字段,排序方式选择“升序”,然后单击第二行的“添加排序”按钮,选择“成绩”字段,排序方式选择“降序”,如图5.26所示。经过这样设置,在实际显示时,处在第一行的“学号”字段具有最高的排序优先级,而第二行的“成绩”字段具有次高的排序优先级。 图5.26设置排序属性 (5) 关闭“分组、排序和汇总”对话框,然后关闭报表的“设计视图”,输入报表的名称“学生选课成绩”。双击报表对象,查看该报表的“报表视图”,如图5.27所示。 图5.27排序后的“学生选课成绩”报表的“报表视图” 2. 分组 使用Access数据库提供的分组功能,可以将记录按照一个或多个字段分组,然后对每个组分别进行数据的汇总和统计。 例5.9设计分组报表“学生选课成绩”,要求每位学生的“课程”及“成绩”为一组。 操作步骤如下。 (1) 在“教学管理系统”数据库中,选中例5.8中建好的“学生选课成绩”报表,然后右击,在弹出的快捷菜单中选择“设计视图”命令,打开该报表的“设计视图”。 (2) 在“设计”选项卡下单击“分组和汇总”组的“分组和排序”按钮,在报表下方打开“分组、排序和汇总”对话框。 (3) 在“分组、排序和汇总”对话框的第一行中选择“分组形式”为“学号”字段,然后单击该行后的“更多”按钮,展开更多选项,选择“有页眉节”,这样在报表的“设计视图”中就会添加“学号页眉”节,其他保持默认选项,如图5.28所示。 图5.28设置分组 分组属性如下: ① 分组形式。分组形式用于指定对字段的值采用什么方式进行分组。不同的数据类型其选项不同,如表5.1所示。 例如,分组字段为日期类型时,如果将分组形式设置为周,将组间距设置为2,表示每两周为一组。 ② 汇总: 若要添加汇总,单击此选项可以添加多字段的汇总,还可以对同一字段执行不同类型的汇总。 表5.1分组字段的数据类型与分组形式选项 分组字段的数据类型分组形式选项记录分组的原则 文本型 按整个值(默认选项)字段或表达式值相同的分在一组 自定义字段或表达式前n个字符相同的分在一组,n由用户指定 日期/时间型 按整个值(默认选项)相同日期的分在一组 年相同年份的分在一组 季相同季度的日期分在一组 月同年同月的日期分在一组,注意,“200711”与“200811”不在一组 周相同周的日期分在一组 日相同日的日期分在一组 小时相同小时的时间分在一组 分相同分的时间分在一组 自定义指定分组字段的间隔为n天、n小时或n分钟 数值、自动编号和货币型 按整个值(默认选项)字段或表达式值相同的分在一组 自定义指定分组字段的间隔值为n条记录 ③ 添加标题: 单击“有标题”后的“单击添加”按钮,可以设置组页眉中显示的标签,在弹出的缩放对话框中输入组标题内容,然后单击“确定”按钮关闭缩放对话框,这样系统就会自动选择“有页眉节”。 ④ 组页眉: 选择“有页眉节”,添加“组页眉”节,选择“否”则删除该节。 ⑤ 组页脚: 选择“有页脚节”,添加“组页脚”节,选择“否”则删除该节。 ⑥ 保持同页: 用于指定是否在一页中打印同组的所有内容,其有3个属性值: 若设置为“不将组放在同一页上”,则指定打印时,依次打印各组,同组数据可以打印输出不在同一页; 若设置为“将整个组放在同一页上”,则指定打印的同一组的内容必须在同一组; 若设置为“将页眉与第一条记录放在同一页上”,意味着只有当组中的第一条记录完整打印时,才打印该组页眉。 (4) 此时,用户可以看到在报表中增加了一个以分组字段“学号”为名的页眉节“学号页眉”。因为要按“学号”分组,故“学号”和“姓名”字段的内容应该放置于“学号页眉”节中使得该信息每组显示一次。这里可以将原视图中的学号和姓名的相应标签和文本框控件移动到“学号页眉”节,当然也可以直接创建这4个控件,重新调整布局后如图5.29所示。 图5.29设置“学号页眉” (5) 设计完成,单击工具栏中的“视图”按钮,在下拉列表框中选择“报表视图”选项即可查看结果,如图5.30所示,最后关闭并保存该报表。 图5.30分组报表的“报表视图” 5.3.4设计汇总报表 在Access中可以对报表中的数据进行统计汇总,这时需要用到计算控件来调用系统提供的计算函数,如Count(表达式)计数、Sum(表达式)求和、Avg(表达式)求平均值、Max(表达式)求最大值、Min(表达式)求最小值等。 用户要根据汇总的范围,正确地放置用于计算的控件。如果是对所有记录进行汇总,那么计算控件应该放置在报表页眉或报表页脚中; 如果是对记录分组后的每组进行汇总,则应该将计算控件放在组页眉或组页脚中。 例5.10设计汇总报表“学生选课成绩”,要求按照每位学生为一组,计算该学生的总分和平均分。 操作步骤如下。 (1) 在“教学管理系统”数据库中,选中例5.9中建好的 “学生选课成绩”报表,然后右击,在弹出的快捷菜单中选择“设计视图”命令,打开该报表的“设计视图”。 (2) 在“设计”选项卡下单击“分组和汇总”组中的“分组和排序”按钮,在报表下方打开“分组、排序和汇总”对话框。 (3) 在“分组、排序和汇总”对话框的第一行中选择“排序依据”为“学号”字段(例5.8中已选中),单击该行后的“更多”按钮,展开更多选项,选择“有页脚节”,添加“组页脚”节,其他保持默认选项。此时,用户可以看到在报表中增加了一个以分组字段“学号”为名的组页脚节“学号页脚”。 (4) 在“学号页脚”处添加两个文本框控件,分别输入“总分:”与“平均分:”的标题和计算公式“=Sum([成绩])”与“=Int(Avg([成绩]))”,具体如图5.31所示。 图5.31创建分组汇总报表 (5) 设计完成,单击“视图”按钮切换到“报表视图”,运行结果如图5.32所示。最后关闭并保存该报表。 图5.32汇总报表的“报表视图” 5.3.5设计子报表 在报表的设计和应用中,可以通过设计子报表来显示和打印具备一对多关系的表之间的联系。其中利用主报表显示“一”方的表记录,用子报表来显示与“一”方表当前记录所对应的“多”方表的记录,从而实现在子报表中显示主报表特定记录的相关信息。 创建子报表的方法有两种: 一种是在已有的报表中创建子报表; 另外一种是通过将某个已有报表作为子报表直接添加到其他现有报表中的方法来实现子报表。不管采用哪种方法,在创建子报表之前,应确保已经建立了正确的表间关系。 1. 在已有报表中创建子报表 例5.11在“学生基本情况”报表中,创建并添加“成绩情况”子报表。 操作步骤如下。 (1) 打开已有报表。在“教学管理系统”数据库中选中“学生基本情况”报表,然后右击,在弹出的快捷菜单中选择“设计视图”命令,打开该表的“设计视图”。 (2) 打开“子报表向导”。在“设计”选项卡下,首先单击“控件”组中的“使用控件向导”按钮来激活向导,然后单击“子窗体/子报表”控件,在“学生基本情况”报表的主体节内下方按住鼠标左键拖出一个区域来显示子报表,于是就启动了“子报表向导”对话框。 (3) 选择子报表来源类型。在“子报表向导”对话框中选中“使用现有的表和查询”单选按钮,如图5.33所示。然后单击“下一步”按钮。 图5.33选择子报表来源类型 (4) 确定子报表来源字段。在弹出的对话框中的“表/查询”下拉列表框中选择“表:成绩”,并将“成绩”表中的“学号”“课程号”“成绩”字段添加到“选定字段”列表框中,如图5.34所示,然后单击“下一步”按钮。 图5.34选择子报表来源字段 (5) 选择主报表的关联字段。在弹出的对话框中选中“从列表中选择”单选按钮,并在下面的列表中选择“对 学生 中的每个记录用 学号 显示 成绩”,如图5.35所示,然后单击“下一步”按钮。 图5.35选择主报表的关联字段 (6) 输入子报表名称。在弹出的对话框中的“请指定子窗体或子报表的名称”文本框中输入子报表的名称“成绩情况”并保存,然后单击“完成”按钮,即可完成子报表的创建。调整子报表的标签和其他控件的布局如图5.36所示,然后切换到“报表视图”查看结果,如图5.37所示,最后关闭并保存该报表。 图5.36包含子报表的“设计视图” 图5.37包含子报表的“报表视图” 2. 将报表添加到已有报表中创建子报表 主要操作步骤如下。 (1) 在“设计视图”中打开作为主报表的报表。 (2) 使“设计”选项卡的“控件”组中的“使用控件向导”按钮处于选中状态。 (3) 将子报表或数据表从“数据库”窗口拖动到主报表中需要放置子报表的节中,这样,Access就会自动将子报表控件添加到主报表中,并显示与主报表中关联字段相关联的数据信息。 5.4打 印 报 表 报表设计完成后就可以将报表打印出来。但是要想打印的报表美观,在打印之前还需要合理地设置报表的页面,直到效果满意再将报表打印输出。 5.4.1页面设置 报表页面设置主要包括设置页边距、纸张大小、打印方向、打印列数等。 报表页面设置的具体操作步骤如下。 (1) 在数据库窗口的对象列表中右击报表,在弹出的快捷菜单中选择“打印预览”命令进入报表的“打印预览视图”。 (2) 在“打印预览”选项卡的“页面布局”组中单击“页面设置”按钮,打开“页面设置”对话框。 (3) 在“页面设置”对话框中有“打印选项”“页”“列”3个选项卡,分别用于设置报表的边距、页和列的属性。其中如果设置“列数”不为1,就会生成多列报表,如图5.38所示。多列报表在打印时,报表页眉页脚和页面页眉页脚都会改变原来单列报表中占据整个页面的宽度的性质,变为只占据页面上一列的宽度。 图5.38“页面设置”对话框 5.4.2报表打印 报表经过页面设置并预览修改过后,就可以传送到打印机进行输出。 具体的操作步骤如下。 (1) 在数据库窗口的“导航”窗格中右击报表对象,在弹出的快捷菜单中选择“打印预览视图”命令,打开该报表的“打印预览视图”。 (2) 单击“打印预览”选项卡中的“打印”按钮,弹出“打印”对话框,如图5.39所示。 图5.39“打印”对话框 (3) 在“打印”对话框中设置完“打印范围”“打印份数”等参数后,单击“确定”按钮,开始打印。 思考题 1. Access报表的结构可以分为哪几部分?每部分的主要功能是什么? 2. Access报表有哪几种基本类型?各有什么特点? 3. 创建报表的方法有哪几种?各有什么特点? 4. 报表页眉与页面页眉的区别是什么? 5. 如何在报表中插入日期、时间和页码? 6. 如何对报表进行排序和分组? 7. 如何创建带有汇总内容的报表? 8. 在报表页脚中使用计算控件与在组页脚中使用计算控件有何不同?