第7章报表的创建和使用主要内容报表概述创建和修改报表报表的排序、分组和计算创建其他常用报表打印报表报表快照和SnapshotViewer7.1报表概述报表的作用报表的类型报表的节7.1.1报表的作用报表是以打印的格式表现用户数据的一种有效方式。因为用户控制了报表上每个对象的大小和外观,所以可以按照所需的方式显示信息以便查看信息。报表中的大多数信息来自基础表、查询或SQL语句(它们是报表数据的来源)。通过使用称为控件的图形对象,可以建立报表及其记录来源之间的链接。控件可以是显示名称及编号的文本框,也可以是显示标题的标签,还可以是装饰性的直线,它们可图形化地组织数据,从而使报表更吸引人。7.1.2报表的类型Access的报表有文字报表、图表报表和标签报表3种形式。每个报表有3种视图:“设计视图”、“打印预览”和“版面预览”。使用“设计视图”可以创建报表或更改已有报表的结构;使用“打印预览”可以查看将在报表的每一页上显示的数据;使用“版面预览”可以查看报表的版面设置,其中只包括报表中数据的示例。要切换视图,先在任意视图中打开所需的报表,然后单击工具栏上的“视图”按钮就可以更改视图,这些视图有相应的图形指示。“视图”按钮7.1.3报表的节报表中的信息可以分在多个节中。每个节在页面上和报表中具有特定的目的并可以按照预定的次序打印。在设计视图中,“节”表现为带区形式,并且报表包含的每个节出现一次。在已打印的报表中,某些节可以重复打印多次。通过放置控件(如标签和文本框),用户可以确定每个节中信息的显示位置。接上在一个报表中,报表页眉只出现一次。利用它可以显示徽标、报表标题或打印日期。报表页眉打印在报表第一页页面页眉的前面。页面页眉出现在报表每页的顶部,可以用来显示列标题。主体节包含了报表数据的主体部分。对报表基础记录源的每条记录而言,该节重复出现。页面页脚在报表每页的底部出现,可以利用它显示页号等项目。接上报表页脚只在报表的结尾处出现一次。如果利用它显示报表合计等项目,则报表页脚是报表设计中的最后一节,但出现在打印报表最后一页的页面页脚之前。通过对共享共同值的记录进行分组,可以计算小计值而使报表更加易于阅读。在每组记录的开头出现组页眉,可利用它显示应用于这个组的信息。报表的节7.2创建和修改报表使用自动报表创建报表使用报表向导创建报表使用设计视图修改报表7.2.1使用自动报表创建报表利用“自动报表”可以创建包含数据来源(基础表或查询)中的所有字段的报表。Access提供了“纵栏式”和“表格式”两种版面。7.2.2使用报表向导创建报表Access提供的“报表向导”可以简单快速地创建各种常用的报表,是创建报表时最常用的方法。7.2.3使用设计视图修改报表修改报表创建报表修改报表利用“自动报表”或者“报表向导”建立的报表难免有不尽人意的地方,就可以用设计视图进行修改。创建报表在设计视图中可以创建新的报表,具体操作步骤如下:在“数据库”窗口中选择“报表”对象,再选择“在设计视图中创建报表”选项,单击“设计”按钮,建立一个新的报表。双击“报表选定器”打开属性表,在“数据”选项卡的“记录源”下拉列表中选择一个表或查询作为记录来源添加控件并编辑报表,完成报表的设计。为报表选择“记录源”报表选定器7.3报表的排序、分组和计算报表的排序与分组报表的计算7.3.1报表的排序与分组利用“报表向导”建立报表时,很容易对报表中的记录进行分组和排序。但是,利用“自动报表”建立的报表,主体中的记录是不分组排序的,利用设计视图建立报表时,也需要对记录进行分组和排序。本节将学习在设计视图中对记录进行分组和排序的方法。7.3.2报表的计算在报表中计算所有记录或一组记录的总计值或平均值在报表主体中对一个记录的计算在报表中计算所有记录或一组记录的总计值或平均值在“读者编号页脚”上添加文本框,标签标题为“累计超期天数”,文本框“控件来源”属性设置成表达式“=Sum([超期天数])”,文本框“名称”为“累计超期天数”。现在就在报表中加入了对每位读者“累计超期天数”的统计,Sum是求和的函数。类似地,可以用Avg函数求平均值。把计算文本框放在组页眉或组页脚中,可以计算出一组记录的总计值或平均值;放在报表页眉或报表页脚中,可以计算出所有记录的总计值或平均值。在每个分组中对“超期天数”字段汇总求和在报表主体中对一个记录的计算继续上面的例子,对主体中的记录计算总计。在主体节中添加文本框,打开属性表,在“控件来源”中输入表达式“=[超期天数]/[累计超期天数]”,“格式”选择“百分比”,“小数位数”选择“1”,再在页面页眉中对应的位置上添加标签“比率”。现在,就在每条记录后添加了该借阅记录的超期天数占累计超期天数的百分比。表达式中方括号括起的是被引用的字段或控件的名称。这里的“[累计超期天数]”就是前面对超期天数字段汇总的那个文本框的名称。值得注意的是,在Sum和Avg等函数中只能使用“字段”名称,不允许使用“控件”名称。在主体节中添加计算控件报表的打印预览视图7.4创建其他常用报表创建图表报表创建标签报表创建多列报表创建和链接子报表7.4.1创建图表报表报表中常常需要使用图表直观地描述数据。图表可以由“图表向导”生成,也可以在设计视图中插入。在“新建报表”对话框中选择“图表向导”,可以创建一个新的图表报表。在已建立的报表中生成图表,可以在设计视图的“插入”菜单中选择“报表”命令,然后按向导的提示操作。7.4.2创建标签报表标签是一种常用的报表,如信封和卡片等都是不同形式的标签。Access提供了功能完备的标签向导,可以很容易地利用基本表或查询中的数据建立各种类型的标签。7.4.3创建多列报表有时候报表中的信息很短,这时就需要将报表分成多列打印,这就是多列报表。多列报表7.4.4创建和链接子报表前面讲到的报表都只有一个数据来源,有时在一个报表中要用到来自多个表或查询的数据时,可以通过在一个报表中链接两个或多个报表的方法实现,这时链接的报表是主体,称为主报表,被链接的报表称为子报表。也可以将从同一数据来的两个或多个报表链接在一起生成新的报表。实际上,创建包含多个数据来源的报表,就是分别创建主报表和子报表,然后将子报表以子窗体/子报表控件的形式添加到主报表中(请参考第6章带有子窗体的窗体)。7.5打印报表完成报表设计后,如果需要打印报表还必须对报表进行页面设置,使报表符合打印机和纸张的要求。在任意视图中打开报表,在“文件”菜单中选择“页面设置”命令,打开“页面设置”对话框。这个对话框中有3个选项卡,“边距”、“页”和“列”。在“边距”选项卡中有两项设置,“页边距”用于设置打印时纸张四周的留白,如果选中“只打印数据”,则打印时不包含报表的标题和装饰性的图形控件;在“页”选项卡中设置打印方向、纸张的大小和来源,并选择打印机;“列”选项卡中设置列数、行间距和列布局。完成了页面设置,就可以在“文件”菜单里选择“打印”命令来打印报表了。7.6报表快照和SnapshotViewer报表快照SnapshotViewer在网上发布报表快照7.6.1报表快照可以将报表从数据库中导出,生成一个扩展名为.snp的文件,这就是报表快照。快照是报表的副本,其中包含快照生成时报表中的全部内容,但是不会随着报表的改变而改变。在“数据库”窗口中,单击要导出的报表的名称,然后选择“文件”菜单中的“导出”命令,“保存类型”下拉列表框中选择SnapshotFormat(*.snp),就可以创建一个报表快照。7.6.2SnapshotViewerSnapshotViewer(快照查看器)是一个可以用来查看、打印以及邮寄快照的程序(如报表快照)。可以使用Access的安装程序来安装SnapshotViewer,也可以通过Internet下载安装。SnapshotViewer中还包含一个SnapshotViewer控件(Snapview.ocx)。可通过支持ActiveX的浏览器(如IE3.0级以上版本)直接查看快照,而不需要安装Access,也不需要Access许可。7.6.3在网上发布报表快照在Internet上发布报表快照的一种方法是在Web页上创建对报表快照的链接。可以在浏览器中下载报表快照,还可以在安装了SnapshotViewer控件的浏览器中直接打开报表快照。使用HTMLObject标记在Web页上嵌入SnapshotViewer控件还可以在网页中插入报表快照。本章小结本章的主要内容是创建与打印报表。通过对本章的学习,读者应该认识Access的报表,并且掌握创建报表的方法。建立一个报表,一般要先利用“自动报表”或者“报表向导”创建报表,再进入报表设计视图编辑已有的报表,要熟练掌握创建和编辑报表的方法。报表的排序、分组和计算是建立报表时经常用到的,是报表设计中比较复杂的问题,需要通过上机反复实践来体会。报表快照是发布报表的方法,本章只做了简单的介绍,一般性地了解就可以了。习题什么是报表?报表的作用是什么?报表中有哪些节?与窗体的节相比较说明各节的作用。在打印报表时,各节的内容是如何显示的?简述利用向导创建报表的过程。报表的视图有几种?每种视图的功能是什么?如何实现报表的排序、分组和计算?