第5章窗体
学习目标(1) 掌握窗体对象的组成、窗体的基本功能。了解面向对象的概念和其在窗体对象中的应用。
(2) 掌握利用向导、设计视图创建窗体的方法。
(3) 掌握常用窗体对象和控件的功能特点和常用属性,了解对象和控件的常用方法和事件。
(4) 掌握创建数据显示窗体、数据操作窗体、流程控制窗体、主/子窗体的方法。

Access的窗体是一种重要的数据库对象,是用户与数据库系统之间的人机交互界面。窗体的作用包括显示和编辑数据、接收用户输入的数据以及控制应用程序流程等。窗体为用户提供了直观、友好的数据操作界面,还可以将Access数据库的各种对象组织在一起,快速构建一个功能完整、使用方便、风格统一的数据库应用系统。本章将详细介绍窗体对象的设计和应用。
5.1窗体概述〖4/5〗5.1.1窗体的功能与分类在Access中,窗体对象作为应用系统与用户之间的接口,它并不存储数据,主要用来作为数据的输入和输出界面。窗体中包含了各类控件,可以把数据组织成便于用户浏览的形式,使数据的操作更加直观、方便,易于理解。窗体通常包含各种数据库对象和控件,通过为对象的事件编写VBA代码,对象可响应用户的各种操作,提高了数据操作的可靠性和便捷性。
1. 窗体的主要功能
窗体分为有数据源和无数据源两类。有数据源的窗体通常作为数据输入或输出的界面,无数据源的窗体通常用于组织和控制程序流程。概括起来,窗体的功能包括以下3个方面。
1) 显示数据
窗体中包含各种控件,如文本框、组合框、子窗体、OLE对象等,能以文本、数值或者图表等不同形式显示信息,为多样化展示数据、便捷化浏览数据提供了工具。此外,还可以在窗体中加入各类统计数据,使用户可以更全面地了解数据。2) 输入和编辑数据
用户通过窗体可以对数据表和查询中的数据进行定位、添加、修改、删除等多种操作。此外,可以在窗体的各类对象事件中编写代码,提供数据验证和监测机制,维护操作过程中数据的完整性。窗体控件允许用户方便地输入查询或统计条件,以获得需要的查询或统计结果。
3) 控制程序流程
窗体对象是Access提供的快速开发数据库应用系统的工具之一。窗体可以与函数、宏、过程等结合,完成各类复杂的事务处理并控制应用程序流程。
2. 窗体的分类
窗体有多种分类方法,按照数据显示方式的不同,窗体可分为以下7种类型。
1) 纵栏式窗体
纵栏式窗体又称为单个窗体,窗体中的每页只显示一条记录,每个字段占据屏幕一行。纵栏式窗体通常用于浏览和输入数据,如图51所示。
图51纵栏式窗体
2) 表格式窗体
表格式窗体又称为连续窗体,该窗体一次可显示多条记录,每个字段只在窗体的顶端显示一个标签,每条记录显示在屏幕一行。若记录数目或字段的数目超过窗体显示范围,则窗体上会出现垂直或水平滚动条,拖曳滚动条可以显示窗体区域内未能显示的记录或字段,如图52所示。
图52表格式窗体
3) 数据表窗体
数据表窗体以二维表的形式显示数据,每条记录占据一行,外观上与数据表视图的显示形式相同,如图53所示。
4) 主/子窗体
主/子窗体中包含两个窗体,外层窗体称为主窗体或父窗体,内层窗体称为子窗体。主/子窗体主要用来显示具有一对多关系的两个表或查询的数据。主窗体显示“一”方数据,一般采用纵栏式窗体,子窗体显示“多”方数据,通常采用数据表窗体或表格式窗体。主窗体和子窗体的数据表之间通过公共字段相互关联。当主窗体显示某条记录时,子窗体中也会显示与该条记录关联的记录,如图54所示。
图53数据表窗体
图54主/子窗体5) 导航窗体
导航窗体是具有导航功能的窗体,包含数个导航控件,每个导航控件中可添加子窗体、报表等,此类窗体可放大窗体的信息容量,方便用户在不同数据源之间切换并浏览或编辑,如图55所示。
图55导航窗体
6) 分割窗体
分割窗体同时提供数据的纵栏式浏览视图和数据表式浏览视图,两个视图关联到同一个数据源,两种视图的数据保持同步,如图56所示。
图56分割窗体
7) 模式对话框
模式对话框是独占式窗体,模式对话框打开后,用户不能进行其他操作,必须关闭对话框后,才能进行下一步操作。模式对话框常用来作为登录窗口、确认窗口等,如图57所示。
图57模式对话框
此外,若按照窗体有无数据源划分,窗体可分为绑定窗体与未绑定窗体。绑定窗体是关联到数据源的窗体,可用于输入、编辑或显示来自该数据源的数据。未绑定窗体没有数据源与之关联,该类窗体通常包含运行应用程序所需的命令按钮、标签或其他控件。
5.1.2窗体视图
在Access2016中,窗体主要有3种视图,分别为设计视图、窗体视图和布局视图。窗体在不同视图下可完成不同的任务,视图可以随时切换,以便以不同方式查看和编辑窗体。
1. 设计视图
窗体的设计视图用于窗体的设计和编辑修改,通过设计视图可以详细查看窗体结构。在设计视图中,用户可以设置数据源、向窗体中添加控件、设置控件的各种属性,还可以为窗体和控件定义事件过程,调整窗体各节的大小,窗体设计完成后可以保存并运行。
2. 窗体视图
窗体视图是窗体的运行状态,可在其中操作数据。根据窗体设计的功能,可在窗体视图中对数据进行查询、添加、编辑、删除和统计等操作。
3. 布局视图
布局视图是“所见即所得”模式的编辑视图,即各控件状态与窗体运行状态相同,但可以更改窗体的布局,同时也可以查看数据。在布局视图中,窗体的每个控件都显示记录源中的数据或计算结果,因此非常适合根据实际数据对控件的大小和位置做细微调整。此外,在布局视图中也可以添加控件,并设置窗体及控件的属性。5.2创建窗体
创建窗体有两种基本方法: 一种方法是利用Access提供的各类向导和智能工具;另一种方法是利用窗体设计视图手工创建。如果是创建数据操作类窗体,采用向导方式比较快捷方便。Access的窗体向导可创建常见的数据操作类窗体,其版式规范标准,只在设计视图下稍做修改即可应用,但要创建满足特定需求的窗体,必须使用窗体的设计视图完成。
Access工作界面的“创建”选项卡的“窗体”组中列出了可以使用的各种向导和智能工具,如图58所示。其中,“窗体”按钮图58创建窗体工具在已经选定某个表或查询情况下可以一键生成窗体;“窗体向导”可以启动创建窗体向导;“导航”选项提供了创建多种形式的导航窗体模板;“其他窗体”提供了“分割窗体”“模式对话框”等形式的窗体模板。
5.2.1使用向导创建窗体
使用向导创建窗体,需要在创建过程中选择数据源,数据源可以是一个或者多个表或查询。在向导对话框中,可以指定窗体中显示的字段,设置窗口的布局等。使用窗体向导可以创建有数据浏览和编辑功能的窗体。
1. 使用向导建立单一数据源窗体
【例51】在xsgl数据库中使用窗体向导创建学生信息浏览的纵栏式窗体。
操作步骤如下:
(1)  打开xsgl数据库。
(2) 选择“创建”→“窗体”→“窗体向导”选项,打开“窗体向导”对话框,选择表student,如图59所示。
图59在“窗体向导”对话框中选择数据源
(3)  选择字段。将“可用字段”列表框中的字段添加到“选定字段”列表框中,单击“下一步”按钮,打开“窗体布局”对话框,如图510所示。
图510在“窗体向导”对话框中进行窗体布局
(4) 确定窗体布局。选中“纵栏式”单选按钮,单击“下一步”按钮,进入指定窗体标题的对话框,在文本框中输入标题或使用默认标题,单击“完成”按钮,系统将自动打开窗体,如图511所示。
图511窗体运行界面
说明: 默认设置下,窗体下方都有一个导航条,其上的按钮可以浏览记录,在导航条中间的文本框中输入记录序号,可以快速定位到指定记录。单击窗体导航条上的“新记录”按钮,可追加一条新记录。
2. 使用窗体向导创建主/子窗体
主/子窗体中的数据源按照关联字段建立连接,通常以主窗体的某个字段为依据,在子窗体中显示与主窗体中当前记录相关的记录,主窗体中切换记录时,子窗体的显示记录也会随之切换,所以这种窗体通常用于查看有一对多关系的表或者查询中的数据。创建主/子窗体可以使用窗体向导,也可以根据需要使用设计视图自行设计。
【例52】在xsgl数据库中以表college和表student为数据源,使用窗体向导创建主/子窗体,主窗体显示学院信息,子窗体显示属于该学院的学生信息。
操作步骤如下:
(1)  打开xsgl数据库。
(2) 选择数据源,添加选定字段。选择“创建”→“窗体”→“窗体向导”选项,打开“窗体向导”对话框,并在数据源列表框中选择表college,并将code和name_c 2个字段添加到“选定字段”列表框中。
(3) 再次在数据源列表框中选择表student。
(4) 将ID、name、sex、birthday和nativeplace 5个字段添加到“选定字段”列表框中,如图512所示。
图512在“窗体向导”中选择数据源
(5) 单击“下一步”按钮,如果两表之间已经正确设置了关系,则会进入窗体向导的下一个对话框,选择查看数据的方式,即确定以college表为主窗体、以student表为子窗体,选中“带有子窗体的窗体”单选按钮,如图513所示。
图513选择查看数据的方式
(6) 单击“下一步”按钮,进入到“窗体布局”对话框。选择以“数据表”或“表格”方式显示数据。
(7) 单击“下一步”按钮,在弹出的“窗体标题”对话框中输入每个窗体的标题,主窗体标题为“学院信息”,子窗体标题为“学生信息”,选中“打开窗体查看或输入信息”单选按钮,如图514所示。
图514设置主窗体和子窗体标题
(8) 单击“完成”按钮,结束窗体向导。左侧导航窗格中同时创建了“学院信息”和“学生信息”两个窗体对象,“学院信息”窗体以主/子窗体的形式显示。主/子窗体运行界面如图515所示。
图515主/子窗体运行界面
5.2.2自动创建窗体
在Access 2016中,自动创建窗体包括使用“窗体”按钮,以及使用“其他窗体”下拉列表中的“多个项目”按钮、“数据表”按钮、“分割窗体”按钮等多种方式创建窗体。
1. 使用“窗体”按钮创建窗体
使用“窗体”按钮自动创建窗体是一种快速创建窗体的方法,该方法可以将单个表或查询作为数据源,选定数据源后,窗体将包含来自该数据源的所有字段和记录,所创建的窗体为纵栏式窗体。使用“窗体”按钮自动创建窗体时,若选定的表与其他表或查询具有一对多的关系,则Access将向该窗体中自动添加一个子窗体。
【例53】在xsgl数据库中以course表为数据源,使用“窗体”按钮自动创建窗体,显示课程及成绩信息。
操作步骤如下:
(1) 打开xsgl数据库,在导航窗格中选定course表。
(2) 选择“创建”→“窗体”→“窗体”选项,系统会自动创建窗体,并以布局视图显示此窗体,如图516所示。