《数据库技术及应用套课件幻灯片完整版ppt教学教程最全电子讲义最新》由会员分享,可在线阅读,更多相关《数据库技术及应用套课件幻灯片完整版ppt教学教程最全电子讲义最新(123页珍藏版)》请在金锄头文库上搜索。
1、Access数据库技术及应用数据库技术及应用第第1 1章章 数据库基础知识数据库基础知识 本章主要介绍数据库、数本章主要介绍数据库、数据库系统、数据库管理系统等据库系统、数据库管理系统等基础知识。基础知识。 1.1 数据库基础知识1.1.1 数据处理1.1.2 数据管理的发展 数据管理先后经历了人工管理、文件系统和数据库系统3个 主要阶段。1人工管理特点: 数据不保存。 数据和应用程序一一对应,即一组数据对应一个程序。 没有软件对数据进行管理。2文件系统阶段特点: 数据可以长期保存。 数据的冗余大。 数据的独立性差。3数据库系统阶段特点: 数据结构化。 数据的共享性好,冗余度低。 数据独立性高
2、。 数据由数据库管理系统统一管理与控制。1.1.3 数据库系统1. 数据(Data):描述事物的符号表示。2.数据库(DB):存储在计算机存储设备中的结构化的相关数据的集合,可 被各个应用程序所共享。3.数据库管理系统(DBMS):是在操作系统支持下的系统软件,是数据库 系统的核心。 数据库管理系统的功能 1)数据定义。 2)数据操纵。 3)数据的控制与管理。 4)数据通信。4. 数据库系统(DBS):数据库系统是指引进数据库技术后的计算机系统,是实现有组织地、动态地存储大量相关数据,提供数据处理和信息资源共享的手段。它由计算机硬件系统、数据库、数据库管理系统及相关软件、数据库管理员和用户5部
3、分组成。1.2 数据模型1.2.1 实体描述 1实体:客观存在并相互区别的事物称为实体,即数据库中要研究的对 象。实体可以是实际的事物,也可以是抽象的事物。 2实体的属性:属性是指实体某一方面的特性或特点,一个实体由若干个属性来刻画,通过属性值,可以确定具体的实体。例如:学生实体需要描述姓名、性别、年龄、政治面貌等属性. 3实体集:指具有相同属性的同类实体的集合。 4。实体集之间联系:现实世界中事物不是孤立存在的,而是相互之间存在联系。事物的这种关联性在信息世界的体现就是实体集与实体集之间的联系。 实体集之间的联系可以归结为3种类型:一对一联系、一对多联系、 多对多联系。1.2.2数据模型 数
4、据模型:是数据库管理系统用来表示实体及实体间联系 的方法。 常见的三种数据模型:层次模型、网状模型、关系模型。 1.层次模型:是最早出现的数据模型,它采用树形结构表示 实体之间的联系。 2.网状模型:是一个不加任何条件限制的无向图。 3.关系模型:关系模型是用二维表的形式表示实体和实体间 联系的数据模型。1.3 关系数据库 1.3.1 关系数据模型 1.关系术语 1)关系:一个关系就是一张二维表,每个关系有一个关系 名。(举例 ) Access数据库是关系数据库 。 2)元组:在一个关系中,水平方向的行称为元组,在 Access的表中,一行称为一条记录。 3)属性:关系中垂直方向的列称为属性,
5、每一列有一个属 性名。在Access中,属性名叫做字段名。 4)域:属性的取值范围,即不同元组对同一个属性的取值 所限定的范围。 5)关系模式:对关系的描述称为关系模式。一个关系模 式对应一个关系的结构,其格式为: 关系名(属性名1,属性名2,属性名n)6)主关键字:其值能够唯一标识一个元组的属性或属性 的组合叫做主关键字,简称主键。7)外部关键字:如果表中的一个字段不是本表的主关键字,而是另外一个表的主关键字,这个字段就称为外部关键字。在Access中,就是利用外部关键字来建立表之间的联系。2关系的特点:一张二维表,只有符合下面的要求才能叫做一个关系。1)元组个数是有限的。2)元组均不相同。
6、3)元组的次序可以任意交换。4)元组的属性是不可分割的数据基本项。5)属性名各不相同。6)属性的次序可以任意交换。7)同一属性的值具有相同的值域。学生表属性(字段)主键元组(记录)学号姓名性别民族09010101王思奇女汉09010102孙羡佳女满09010103李阳男汉09010104张高男回09010105王美玉女汉1.3.2 关系运算关系运算包括两类:1传统集合运算:并、交、差。2专门的关系运算:选择、投影、连接。(1)选择运算:是从一个关系中找出满足给定条件的元组,它们组成一个新的关系。参见例1.1(2)投影运算:是在给定的关系中指定若干属性组成一个新的关系。 参见例1.2(3)连接运
7、算:是根据给定的条件将两个关系中所有元组一一进行比较,将符 合条件的元组组成新的关系。新关系中包括两个关系的所有属性。参见例1.3 等值连接 参见例1.4 自然连接 参见例1.51.4 数据库设计基础1.4.1 设计原则1) “一事一表”。2)尽量避免表之间出现重复字段。3)表中的字段必须是原始数据。4)外部关键字是建立表联系的关键。1.4.2 设计步骤设计“学生管理”数据库系统 参见例1.6数据的层次结构Access将数据库划分为7个不同的对象,分别是:1.表:是由行和列组成的符合一定要求的二维表。2.查询:查询是根据一定的条件从一个或多个表中筛选出所需要的数据,形成 一个动态的数据集。 3
8、.窗体:是用户与Access数据库进行数据交互的界面,它能实现数据的输入、 编辑与查找等。 4.报表:报表用来实现数据的格式化输出。5.数据访问页:是Access 2000之后增加的数据库对象,它以Web页的格式输 入/输出数据库中的数据。 6.宏:宏是一系列操作命令的集合,其中每个操作都能实现特定的功能。 7.模块:是利用VBA(Visual Basic for Application)语言编写的实现特定 功能的程序。 Access数据库是用来存储数据及相关对象的容器,它绝不仅仅是表的集合,它还包括查询、窗体、报表、页、宏和模块等对象,并保存为一个扩展名为.mdb的文件。 1.5 初识Acc
9、ess 2003 1.5.1 Access的发展简介1.5.2 Access数据库的系统结构 1.5.3 Access 2003的启动和关闭 启动Access 2003的主要方法有: 1)选择“开始”菜单中的“所有程序”项,在“Microsoft Office”的级联菜单中选择“Microsoft Office Access 2003”。 2)双击桌面的Access 2003快捷图标。退出Access 2003的常用方法有: 1)单击窗口的关闭按钮。 2)单击“文件”菜单的“退出”命令。 3)使用快捷键 Alt + F4。1.5.4 Access 2003的工作界面Access数据库技术及应用
10、数据库技术及应用第第2 2章章 数据库和表数据库和表 本章主要介绍如何创建数本章主要介绍如何创建数据库和表、编辑表、操作表以据库和表、编辑表、操作表以及建立表之间的关系。及建立表之间的关系。 2.1 2.1 创建数据库创建数据库 在Access中,数据库是存储数据的表及其相关对象的集合,其中表是数据库应用系统的基础。可以说,没有表就没有数库的其他对象。一个数据库通常由多张表组成,每张表中可以存储不同类型的数据。2.1.1 使用数据库向导创建数据库 参见例2.1。提示:单击提示:单击 “Office OnlineOffice Online模板(模板(O O)”按钮,可到网上下载按钮,可到网上下载
11、数据库模板。数据库模板。2.1.2 创建空数据库 所谓空数据库,就是没有任何数据库对象的数据库。 参见例2.2。 2.1.3 打开数据库2.1.4 关闭数据库 表是数据库的核心和基础,是数据库中最常用的对象,用来存储和管理数据。2.2.1 表的组成 1.表的组成 表由表结构和表内容(记录)两部分构成。字段名是由字母、汉字、数字、下划线和空格组成的字符序列,但不能以空格开头。字段命名时还要注意:1)字段名最长不能超过64个字符。2)不能包含句点(.)、惊叹号(!)、方括号( )或重音符号()。3)Access不区分字母的大小写。2字段的数据类型 一个表的同一列数据应具有相同的数据特征和值域,这就
12、是字段的数据类型。数据类型决定了数据的存储方式和使用方式。2.2 2.2 建建 立立 表表(1)文本 文本类型是Access的默认数据类型,可以是文字或文字与数字的组合。(2)备注 备注类型用来存储长文本数据,最多为65535个字符。(3)数字 用于进行算术运算的数据,数字型字段包括字节、整数、长整数、单精度数、双精度数等类型。其中,单精度数的前67位是准确的,而双精度数前1516位是准确的。(4)日期/时间 该类型的字段用来存储日期、时间或日期与时间的组合,每个日期/时间类型的字段需要8字节的存储空间。(5)货币 货币类型是一种专用的数字类型,向货币字段输入数据时,Access会自 动添加货
13、币符号(如¥)与千位分隔符(即,),并添加两位小数。货币 型字段需要8字节的存储空间。 (6)自动编号 自动编号类型是另一种专用的数字类型,它从1开始,依次增1。自动编号类型需要4字节的存储空间。(7)是/否 是/否类型只能接受两种可能值中的一种,用来表示是/否、开/关或真/假等。(8)OLE对象 OLE的英文全称是Object Linking and Embedding,意即对象链接与嵌入。字段的类型为OLE对象,是指字段允许单独地“链接”或“嵌入”OLE对象。链接至已存在的某个文件或者插入(即嵌入)已存在的某个文件内容,每个链接对象只存放于最初的文件中,而每个嵌入对象都存放在数据库中。(9
14、)超链接 超链接类型的字段用来保存超链接的地址,如http:/。 (10)查阅向导 查阅向导是一种特殊的数据类型,可以在下拉列表中选择值,或者手工输入字段的值。2.2.2 建立表结构1使用“设计”视图所谓视图,实际上就是窗口。表视图主要有设计视图和数据表视图。设计视图用来创建表结构,数据表视图用来显示表中的数据。参见例2.3。2使用“表向导”在数据库窗口,选择表对象,双击“使用向导创建表”;或者单击“新建”按钮,打开“新建表”对话框,选择“表向导”,单击“确定”按钮。参见例2.4。3使用“数据表”视图在数据库窗口,选择表对象,双击“通过输入数据创建表”;或者单击“新建”按钮,打开“新建表”对话
15、框,选择“数据表视图”,单击“确定”按钮。参见例2.5。2.2.3 设置字段属性 1字段大小 参见例2.6。 2格式 参见例2.7。 3输入掩码 参见例2.8。 4默认值 参见例2.9。 5有效性规则和有效性文本 参见例2.10。 6必填字段 7允许空字符串所谓空字符串,是指用英文双引号括起来的0个字符(即),它的长度为0。 8索引 参见例2.11。2.2.4 向表中输入数据 1数据的输入 参见例2.12。 2长文本数据 提示:在文本或备注型字段中输入数据时,可按提示:在文本或备注型字段中输入数据时,可按Ctrl+EnterCtrl+Enter键键换行。换行。 3“查阅向导”数据 参见例2.1
16、3。 4 OLE对象的数据 参见例2.14。2.2.5 数据的导入导出 1数据的导入 参见例2.15。 2数据的导出 参见例2.16。2.2.6 建立表之间的关系 1定义表的主键 主键的全称为主关键字,它的值能够唯一地标识表中一条记录的字段或字段的组合。在Access数据库中,允许定义3种类型的主键,即自动编号、单字段和多字段。 2. 创建表之间的关系 参见例2.17。 3. 参照完整性 所谓“参照完整性”,是指为维持表之间已定义的关系而必须遵循的规则。 具体地说,当选择了“编辑关系”对话框的“实施参照完整性”时: 1)主表中没有相关记录,相关表就不能添加相应记录。例如,“学生表”没有张志的记
17、录,“选课表”就不能添加张志的选课信息。 2)反过来,参照完整性编辑(添加、更新、删除)相关表的记录,不影响主表中的记录。 3)相关表中有匹配记录时,不允许删除主表中记录,也不允许更改主表中的主键值。 4.编辑表间关系 1)查看关系。 2)修改关系。 3)删除关系。 4)打印关系。2.2.7 使用子数据表 1显示与隐藏子数据表 2创建子数据表 3. 删除子数据表2.3 编辑表2.3.1 打开和关闭表2.3.2 修改表结构 1添加字段 2修改字段 3删除字段 4重设主键2.3.3 编辑表中的数据 1定位记录 2选择记录 3添加记录 4删除记录 5修改数据 6复制数据2.3.4 调整表外观 1改变
18、字段的显示次序 参见例2.18。 2调整行高或列宽 参见例2.19。 3隐藏列 参见例2.20。 4冻结列 参见例2.21。 5设置数据表的显示格式 参见例2.22。 6改变数据字体 参见例2.23。2.4 操 作 表2.4.1 数据的查找与替换 1查找指定的内容 参见例2.24。 2查找空值 参见例2.25。 对于文本型与备注型字段,可以使用Null(空值)查找空值记录。 3替换指定的内容 参见例2.26。2.4.2 记录排序 1排序规则 1)数字型或货币型数据,其比较规则与数学完全一致。 2)日期/时间型数据,按日期的时间顺序进行比较,较早的小,较近的大。 3)是/否型数据仅有两个值:是(
19、即True),否(即False)。“是”小,“否”大。4)文本型数据是由字母、数字、各种符号以及汉字组成的字符串。两个字符串的比较规则是:从左至右逐个字符比较,直到出现不等的字符或一个串结束时停止。如果全部字符都相同,则两个字符串相等;否则,以出现第一个不等字符的比较为准。 西文字符,包括字母、数字、各种符号(参看附录A),按ASCII码值进行比较。值小的字符小,值大的字符大。 汉字按拼音字母的顺序(即字典的顺序)进行比较,前面的汉字小,后面的汉字大。 西文字符与汉字字符比较,西文字符小,汉字字符大。5)空值最小。2单字段排序参见例2.27。3多字段排序参见例2.28与例2.29。2.4.3
20、记录筛选筛选就是将满足条件的记录从表中挑选出来,以便进行处理。1按选定内容筛选参见例2.30。2按窗体筛选参见例2.31。 3按筛选目标筛选参见例2.32。 4内容排除筛选参见例2.33。5高级筛选 高级筛选不仅可以筛选出满足复杂条件的记录,还可以对筛选的结果进行排序。 参见例2.34。 实际上,例2.30-例2.34都可以使用“高级筛选”完成,由此可知,筛选的实质就是带条件的查询。Access数据库技术及应用数据库技术及应用第第3 3章章 查询查询 本章详细介绍查询的概念、本章详细介绍查询的概念、功能、创建和使用。功能、创建和使用。 第3章 查 询3.1 什么是查询查询即查找、询问。3.1.
21、1 在设计视图中创建查询1创建不带条件的查询参见例3.1。 2创建带条件的查询参见例3.2。3. 创建以查询为数据源的查询参见例3.3。 查询是以数据库中的表或查询作为数据源,按照一定的条件对其进行查找,产生一个类似于表的结果,通常称为虚表。所谓虚表是指并非真正存在的表,即查询的结果数据是不保存的。查询保存的不是数据的集合,而是操作的集合。3.1.2 查询的条件 1常量 设置查询条件所使用的常量主要有数值常量、字符串常量和日期常量。(1) 数值常量如整数50、-23、8,实数0.25、-3.57、89.56等。(2) 字符串常量用英文双撇号括起来的有限个字符序列叫做字符串常量,如 二级等级考试
22、、This is a book.、$456.7、 (空格串)、(空串)等。其中的双撇号是定界符,它不属于字符串常量的内容。在例3.2中设置“性别”为男的条件,使用的是字符常量。(3) 日期常量用英文井号括起来的日期称为日期常量,如#2011-9-21#、#2011/9/21#、#9,21,2011#等。其中的井号是定界符,它不属于日期常量的内容。 2.运算符 运算符用来对数据进行操作。经常使用的运算符有算术运算符、关系运算符、逻辑运算符、特殊运算符等。(1) 算术运算符(2) 关系运算符 对于数值型数据,比较方法和数学一样。西文字符串的比较规则是:从左至右逐个字符比较,直到出现不等时,ASCI
23、I码值较大的字符所在的串大(附录A)。汉字字符按字典的拼音顺序进行比较,后面的汉字大于前面的汉字。日期型数据按纪年的前后顺序进行比较,较早的日期小,较近的日期大。(3) 逻辑运算符And 与,当且仅当两侧的关系都为真时,结果为真;否则,结果为假。Or 或,当且仅当两侧的关系都为假时,结果为假;否则,结果为真。Not 非,其后的关系为假,结果为真;其后的关系为真,结果为假。 参见例3.4。方法1. 使用“设计”视图的“或”行。方法2. 使用Or运算符。方法3. 使用In运算符。方法4. 使用Like运算符。 3.常用函数 (1) 字符串函数Left (s,n) 从字符串s左侧的第一个字符开始,截
24、取n个字符。 例如,查找09级的学生,条件可写成:Left(学号,2)=09。Right (s,n) 从s右侧的第一个字符开始,截取n个字符。Mid (s,m,n) 从s左侧第m个字符开始,截取n个字符。 例如,查找“学号”的第3位和第4位是02的学生,条件可写成:Mid(学号,3,2)=02。Len(s) 返回s中所包含的字符个数。 例如,查找“姓名”长度为两个字符的学生信息,条件可写成:Len(姓名)=2。 (2) 日期函数Year(d) 返回日期d的年份。 例如,查找“出生日期”是1991年的学生信息,条件可写成:Year(出生日期)=1991。Date() 返回当前的系统日期。 例如,
25、查找年龄小于等于20岁的学生信息,条件可写成:Year(Date()-Year(出生日期)=20。Now() 返回当前系统日期和时间。4.表达式 用运算符将常量、字段名、函数等连接起来的,符合Access语法规则的式子称为表达式。像小学的算式、中学的代数式一样,表达式的计算结果叫做值。3.2 选择查询 选择查询是查询方法中非常重要和常见的一种,它是根据指定的条件,从一个或多个数据源中进行数据检索。创建选择查询有两种方法,一是使用“设计”视图创建查询,如例3.13.4;二是使用“查询向导”来创建查询。3.2.1 查询的设计视图1创建多个数据源的查询参见例3.5。2创建复杂条件的查询参见例3.6。
26、注意:注意:在设置条件时所使用的标点符号均为英文,若使用中文标在设置条件时所使用的标点符号均为英文,若使用中文标点,系统会弹出错误提示:点,系统会弹出错误提示:“输入的表达式包含无效的语法输入的表达式包含无效的语法”。3.2.2 在查询中实现计算1查询的计算功能在Access中,可以实现两种计算,一种是预定义的计算,一种是自定义的计算。预定义计算其实就是 “总计”计算,是系统提供的对查询中的记录或记录组进行计算,包括求和、求平均值、最大值、最小值与计数等。自定义计算是用户根据自己的需要使用一个或多个字段中的数据进行各种计算。2预定义计算参见例3.7。参见例3.8。3自定义计算参见例3.9。3.
27、2.3 使用向导创建查询1. 创建基于一个数据源的查询参见例3.10。2. 创建基于多个数据源的查询参见例3.11。提示:当所建查询的数据源来自于多个表时,应先建立表之间的提示:当所建查询的数据源来自于多个表时,应先建立表之间的关系。关系。3.3 参数查询所谓参数查询,就是根据字段的不同取值来查找所需要的信息。当运行参数查询时,系统会弹出一个提示对话框,根据用户输入的具体参数值确定查询结果。用户可以创建单参数查询,也可以创建多参数查询。3.3.1 创建单参数查询参见例3.12。注意:注意:条件行的方括号不可省略,方括号中的内容就是运行查询条件行的方括号不可省略,方括号中的内容就是运行查询时出现
28、在对话框中的提示文字,但不能与字段名相同。时出现在对话框中的提示文字,但不能与字段名相同。 3.3.2 创建多参数查询参见例3.13与与例3.14。 3.4 交叉表查询 交叉表查询就是将数据源中的字段进行分组,一组列在交叉表的左侧,一组列在交叉表的上部,并在行与列的交叉处显示某个字段的各种计算值。这是一种非常独特的查询类型,不仅能用来计算数据的总计、平均值等,还能重新组织数据的结构,更加方便地分析数据。创建交叉表查询有两种方法:“交叉表查询向导”和查询“设计”视图。3.4.1 使用向导创建交叉表查询参见例3.15。3.4.2 使用设计视图创建交叉表查询参见例3.16。3.5 操作查询3.5.1
29、 生成表查询生成表查询是从一个或多个数据源中将满足条件的记录查找出来并生成一个新表,这是一个实实在在的表。参见例3.17。3.5.2 更新查询 如果需要修改符合条件的一批记录,使用“数据表”视图将是一件非常麻烦的事,而且容易疏漏。更新查询是实现此类操作最简单最有效的方法,它能对一个或多个表中的一组满足条件的记录或全部记录进行更改。参见例3.18。3.5.3 追加查询 维护数据库时,如果要将某个表中符合一定条件的记录添加到另一个表上,可以使用追加查询。要特别指出,追加的记录一定在另一个表的末尾。参见例3.19。3.5.4 删除查询 如果删除的记录来自于多个表,那么必须满足以下几点: 1在“关系”
30、窗口中定义表之间的关系。 2在“编辑关系”对话框中选中“实施参照完 整性”复选框。 3在“编辑关系”对话框中选中“级联删除相关记录”复选框。参见例3.20。3.6 SQL查询3.6.1 什么是SQL语言 SQL(Structure Query Language,结构化查询语言),它是数据库领域中应用最为广泛的数据库查询语言。 SQL是一种非过程性语言,它属于第四代计算机语言。使用SQL时,只需要描述“做什么”,而不需要说明“怎么做”。3.6.2 查询与SQL视图 一个查询对应着一条SQL语句,即查询的实质是SQL语句。当使用“设计”视图创建一个查询时,就自动生成一条等价的SQL语句。 要进入S
31、QL视图,必须先打开查询的“设计”视图,并关闭“显示表”对话框。然后,单击工具栏“视图”的向下按钮,选择SQL视图。或者单击“视图”菜单的“SQL视图”选项,进入SQL视图。3.6.3 创建SQL基本查询SELECT语句的一般格式为:SELECT ALLDISTINCT * | FROM WHERE GROUP BY HAVING ORDER BY ASCDESC;其中,语句格式中的符号含义如下: 必选项; 根据需要进行选择,也可以不选; 从多项选择中选择其中之一。(1) 检索表中所有记录的所有字段。参见例3.21。(2) 检索表中所有记录的指定字段。参见例3.22。 (3) 检索满足条件的记
32、录和指定字段。参见例3.23。(4) 进行分组统计并排序,添加新字段。参见例3.24。 注意:语句中的查询,语句中的查询,AS AS 后面是新的字段名称。后面是新的字段名称。(5)(5)实现参数查询实现参数查询参见例3.25。(6) 将多个表连接在一起。参见例3.26。3.6.4 创建SQL特定查询1数据定义查询 使用数据定义查询可以创建表、删除表、更改表结构,以及创建索引等。 (1)CREATE TABLE 语句 这个语句用来创建表结构,基本格式如下: CREATE TABLE ( , , , ); 参见例3.27。(2) ALTER TABLE语句这个语句用来更改表结构,基本格式如下:AL
33、TER TABLE ADD DROP字段名列表 ALTER ;参见例3.28。 (3) DROP语句这个语句用来删除表,基本格式如下:DROP TABLE 参见例3.29。2联合查询联合查询是将两个或多个查询结合到一起。这时,要求各查询所选择的字段名、类型、个数和顺序必须一致。联合查询使用Union子句实现,其结果就是将各查询的数据合并到一起,这实质上是集合的并运算。参见例3.30。3子查询包含在一个选择查询或操作查询之内的SELECT语句叫做子查询。这告诉我们,子查询不能单独使用,它常作为主查询的查询条件。子查询既可以在查询设计网格的“字段”行输入SQL语句来定义新字段,也可以在“条件”行上
34、输入SQL语句来定义字段的条件。参见例3.31。提示:子查询的提示:子查询的SELECTSELECT语句不能定义为联合查询或交叉表查询。语句不能定义为联合查询或交叉表查询。3.6.5 数据操作语句1INSERT语句 这个语句能将一条新记录添加到指定表的末尾。该语句的格式为: INSERT INTO () VALUES(); 参见例3.32。2UPDATE语句 这个语句能对表中满足条件的记录或所有记录进行更新操作。该语句的格式为: UPDATE SET =,= WHERE ; 参见例3.18方法2。3DELETE语句 这个语句能对指定表所有记录或满足条件的记录进行删除操作。该语句的格式为: DE
35、LETE FROM WHERE;参见例3.33。 综上所述,Access数据库的查询功能是很强大的,它不但能从数据源中选择字段与记录,而且可以对表中记录进行编辑(添加、修改、删除等)。此外,查询还能实现计算,建立新表,以及为窗体、报表或数据访问页等对象提供数据源。第第4 4章章 窗窗 体体Access数据库技术及应用数据库技术及应用 本章主要介绍窗体的本章主要介绍窗体的基本概念、结构、功能以基本概念、结构、功能以及创建方法等及创建方法等。一个窗体就是一个窗口,它是具有数据管理功能的窗口。4.1.1 自动创建窗体1纵栏式窗体参见例4.1。特点:是一次仅显示一条记录,并按列显示,每列的左侧显示字段
36、名,右侧显示字段值。2表格式窗体特点:是一次显示多条记录,并按行显示,最上面是字段名,下面是各条记录每一条记录占一行。3数据表窗体特点:是以表格的形式显示记录类似于在数据表视图下显示的表对象。但是,它不直接显示OLE对象类型的数据(如照片字段)。4.1 什么是窗体?4.1.2 使用向导创建窗体 使用向导创建窗体,根据提示选择相关的数据源(一个或多个)、字段及设置格式等,能满足更复杂的要求。参见例4.2。 窗体中的窗体叫做子窗体,包含子窗体的窗体称为主窗体。主窗体和子窗体常用于显示多个数据源中的数据,这些数据源中的数据应具有一对多关系。 在主/子窗体中,主窗体只能是纵栏式,子窗体可以是表格式或数
37、据表式等。当在主窗体中进行编辑时,会反映到子窗体对应的表中。创建嵌接式主/子窗体的方法:方法1:使用自动创建窗体, 参见例4.3方法1。方法2:使用窗体向导, 参见例4.3方法2。方法3:添加子窗体控件, 参见例4.18。创建链接式主/子窗体, 参见例4.4。4.2 创建主/子窗体4.3.1 自动创建数据透视表窗体参见例4.5。数据透视表是一种特殊的表,用于进行数据计算和分析。通过数据透视表,可以动态更改表的布局,以不同的方式查看和分析数据。4.3.2 自动创建数据透视图窗体参见例4.6。4.3.3 使用图表向导创建图表窗体参见例4.7。 数据透视表、数据透视图,以及图表窗体,它们的共同点是数
38、据透视表、数据透视图,以及图表窗体,它们的共同点是以直观的图、表方式来显示分类汇总数据。以直观的图、表方式来显示分类汇总数据。4.3 创建图表窗体4.3.4 窗体的视图 目前已经学习了7种类型的窗体,分别是纵栏式窗体、表格式窗体、数据表窗体、主/子窗体、数据透视表窗体、数据透视图窗体与图表窗体。根据它们的作用与显示方式不同将其归纳为5种视图:1)窗体视图用来输入、修改或查看窗体的内容,每次只能查看一条记录。2)数据表视图以行与列形式显示记录,可以同时查看多条记录。3)数据透视表视图通过排列筛选、行、列和明细等区域中的字段,可以查看明细数据或汇总数据。4)数据透视图视图通过选择一种图表类型并排列
39、筛选、序列、类别和数据区域中的字段,可以直观地显示数据。5)设计视图是用户的“工作台”。4.4.1 设计视图4.4 设计窗体1设计视图的组成1)主体节是“设计”视图的主要区域。用来设置数据源中的记录,在窗体视图,它可以显示一条记录,也可以显示多条记录,如图4.1和图4.3所示。2)窗体页眉位于窗体顶端,用于设置窗体的标题、图片、说明等信息。3)窗体页脚位于窗体的底部,用于设置所有记录都显示的内容,如命令按钮等。4)页面页眉在窗体视图不显示,用于设置打印时每页的页眉信息,如字段名等。5)页面页脚在窗体视图不显示,用于设置打印时每页的页脚信息,如日期、时间和页码等。提示:设计一个窗体,主要使用主体
40、、窗体页眉与窗体页脚节。提示:设计一个窗体,主要使用主体、窗体页眉与窗体页脚节。1)绑定型控件:即绑定到数据源中字段的控件。当向绑定控件输入数据时,Access会自动更新数据源当前记录该字段的值。可以用来输入数据的控件都是绑定控件。2)未绑定型控件:保留输入的数据,但不更新任何数据源中的字段。可以用来显示文本标签,直线或矩形等控件。3)计算型控件:来源于表达式,如函数或计算,也是一种未绑定型控件。控件类型对工具箱中的控件,着重指出如下几点。1)单独的标签与自动生成的标签单击“标签”按钮产生单独的标签,用于设置说明性的文本。单击其他控件按钮,在产生该控件的同时自动生成标签,用于标识。2)选项组控
41、件选项组是一个包含切换按钮、选项按钮或复选框等控件的控件。一个选项组由一个组框架及一组切换按钮、选项按钮或复选框组成,选项组的框架一般与数据源中的字段绑定。3)列表框与组合框列表框可将一些内容以列表的形式显示;组合框则是同时具有列表框与文本框功能的控件,既可以从列表中选择值,也可以输入值。若窗体上输入的数据来自数据源中的字段,可以使用列表框或组合框控件。这样不仅可以确保输入数据的正确性,还可以大大提高输入的速度。4)绑定与未绑定型控件绑定型控件,是指它的数据来源于表或查询中的字段值,用于显示和编辑数据源中的字段;未绑定型控件无数据来源,用于显示信息,如标签、线条,矩形等。5)绑定与未绑定对象框
42、绑定对象框存放与数据源字段绑定的OLE对象或嵌入式图片。未绑定对象框存放没有绑定到数据源字段的OLE对象或嵌入式图片。4.4.2 常用控件的使用例4.8 以“学生表”为数据源,创建“学生情况一览表”窗体。例4.9 创建如图所示“教师情况一览表”窗体。4.4.3 控件的基本操作1选择控件选择一个控件,单击所需控件。在控件上出现8个矩形控点,左上角的控点称为“移动控点”,其他控点为“尺寸控点”。选择连续控件,由非控点位置开始拖动一块矩形区域。选择不连续控件,按下Shift键的同时,单击所选控件。取消选择,单击其他区域。2改变控件大小选中控件,拖动尺寸控点即可。3移动控件选中一个控件,将鼠标指针定位
43、到移动控点,当指针变成 状时拖动即可。选中多个控件,将鼠标指针定位到移动控点,当指针变成 状时拖动即可。4删除控件选中控件,按Delete键即可。5对齐控件 选中控件,使用“格式”菜单的“对齐”命令,可对多控件进行“靠左、靠右、靠上、靠下、对齐网格”等设置。4.4.4 窗体和控件的属性1窗体的常用属性(1)格式属性标题:窗体标题栏显示的信息。滚动条:窗体视图是否显示水平或垂直滚动条,默认为“两者均有”。记录选择器:窗体视图是否显示记录选择器,默认为“是”。导航按钮:窗体视图是否显示导航按钮,默认为“是”。分隔线:窗体视图是否显示各节之间的分隔线,默认为“是”。(2)数据属性记录源:选择该窗体的
44、数据源,可以是数据库中的表名或查询名。允许编辑:在窗体视图是否允许修改数据,默认为“是”。允许删除:在窗体视图是否允许删除记录,默认为“是”。允许添加:在窗体视图是否允许添加记录,默认为“是”。(3)其他属性弹出方式下是否以弹出方式显示窗体,默认为“否”。2控件的常用属性(1)格式属性标题:设置控件中显示的文字。特殊效果:设置控件的显示效果,有“平面”、“凸起”、“凹陷”、“蚀刻”、“阴影”与“凿痕”等。字体名称:设置文字的字体。字号:设置文字的大小。(2)数据属性控件来源:用于设置绑定型控件的数据源字段或计算控件的计算表达式。输入掩码:用来设置控件的输入格式,仅对文本型和日期/时间型数据有效
45、。默认值:用来设置一个计算型控件或未绑定型控件的初值。有效性规则:用来设置控件中输入数据的合法性检查表达式。有效性文本:当输入的数据违反有效性规则时所显示的提示信息。(3)事件属性所谓事件,是指窗体或控件可以识别的动作,如单击命令按钮。当事件发生时,要么执行一个宏(第7章),要么执行一个事件过程。这个事件过程可以是系统定义的操作,如例4.8中的 按钮,执行“转至前一项记录”操作;也可以是用户编写的响应事件的过程(第8章)。(4)其他属性名称:标识一个控件的名字,同一窗体中的控件名称是不允许相同的。Tab键索引:内容是由0开始的整数,该值指示窗体内使用Enter键或Tab键的顺序。在文本框中,输
46、入数据后,按Tab键或按Enter键自动将焦点(即光标)移至下一指定文本框。自动Tab键:设置Access在该控件是否可自动移出光标,默认为“否”。该控件可提高用户对窗体的处理速度。参见例4.10与例4.11。4.5 格式化窗体4.5.1 自动套用格式4.5.2 使用条件格式 参见例4.12。4.5.3 添加日期和时间窗体的功能1显示和查找记录。2输入和编辑数据。3以直观的图表方式来显示分类汇总数据。4能控制应用程序的流程。 第第5 5章章 报报 表表Access数据库技术及应用数据库技术及应用 本章主要介绍报表的创建、本章主要介绍报表的创建、分类、功能、组成,排序和分分类、功能、组成,排序和
47、分组记录及多列报表等。组记录及多列报表等。1纵栏式报表参见例5.1。特点:是以列的形式显示记录,左侧显示字段名,右侧显示字段值。一页显示一条或多条记录,记录之间用分隔线间隔。使用导航按钮可显示下一页报表。通过浏览,可发现仅报表第一页的顶端显示标题“学生表”,在每页报表的底部均显示日期和页码信息。2表格式报表特点:是以行的形式显示记录,通常一行显示一条记录,一页可显示多条记录。通过浏览,也是报表的第一页顶端显示标题“学生表”,每页的上面均显示字段名,每页的底部均显示日期和页码。5.1 创建报表5.1.1 自动创建报表5.1.2 使用报表向导创建报表 自动创建纵栏式与表格式报表,只能有一个数据源,
48、并且不能根据需要选择字段,格式也简单。而使用向导创建报表,可根据提示选择相关数据源、字段和格式等,满足特定的需要。参见例5.2。 可以看出使用“报表向导”创建报表,不仅可以按某字段分组或排序,还可以对数据进行统计计算。5.1.3 使用图表向导创建报表图表报表直观地反映数据之间的关系。参见例5.3。5.1.4 使用标签向导创建报表在实际应用中,经常会见到标签,如行李标签、商品标签、名片、听课证等。参见例5.4。5.2.1 报表的组成1)报表页眉:在报表第一页的顶端,用来显示报表的标题、图像或说明性文字。每份报表只有一个报表页眉,如图5.1和图5.3所示的报表标题“学生表”。2)页面页眉:在每页报
49、表的上面,用来显示字段名或分组名。如图5.3所示,每页报表上面的字段名。3)主体:是报表的主要组成部分,用来显示每条记录,所有的报表均有主体节。根据主体节字段数据的显示位置,报表可分为4种类型:纵栏式、表格式、图表和标签。4)页面页脚:在每页报表的底部,用来显示页码、日期或汇总等信息。如图5.1和图5.3所示,每页底部都有日期与页码5)报表页脚:在报表最后一页,主体节内容结束之后,用来显示整份报表的汇总等信息。参见例5.5。5.2 使用设计视图创建报表5.2.2 报表与控件的属性报表的常用属性有以下几种。(1)格式属性标题:报表标题栏显示的信息。页面页眉:控制页标题是否显示在所有的页。页面页脚
50、:控制页脚信息是否显示在所有的页。(2)数据属性记录源:选择该报表的数据源,可以是数据库中的表名或查询名。筛选:设置条件,使报表只输出满足条件的记录。打开筛选:确定筛选条件是否生效。排序依据:设置报表中记录的排序条件。启动排序:确定排序依据是否生效。(3)其他属性记录锁定:设置在生成报表所有页之前,禁止其他用户修改报表所需要的数据。5.3 报表排序与分组 在默认情况下,报表中的记录是按输入的先后顺序排列并显示的。在实际应用中,常需要按某个字段的指定顺序排列报表中的记录,称为报表排序,如按照教师工资从高到低排列。5.3.1 记录排序 使用“报表向导”创建报表时,最多可以按4个字段进行排序,如图5
51、.7所示,且排序依据只能是字段,不允许是表达式。在“设计”视图,不但可以按字段进行排序,而且可以按字段表达式进行排序,最多可达10个。参见例5.6。5.3.2 记录分组 将记录划分成组并进行统计计算,可以增强报表的可读性,提高数据的利用率。在一个报表中,最多可以按10个字段或字段表达式进行分组。参见例5.7。报表的视图 报表“设计”视图是创建和修改报表的窗口,是设计报表结构、修改布局、记录分组与汇总的平台。设计完成后,切换到“打印预览”视图,查看报表中数据的显示效果。“打印预览”视图所显示报表对象的布局和内容与实际打印结果相同,即“所见即所得”。而“版面预览”视图与“打印预览”视图的外观基本相
52、同,但“版面预览”视图只显示报表的主要数据而不显示全部数据。5.4 使用计算控件5.4.1 在报表中添加计算控件参见例5.8。5.4.2 报表统计计算在报表设计过程中,可以根据需要进行各种统计计算并显示输出,操作方法就是添加计算控件,将“控件来源”属性设置为计算表达式。(1)在主体节添加计算控件(2)在组页眉/组页脚节添加计算控件(3)在报表页眉/报表页脚节添加计算控件5.5 创建主/子报表 子报表是插在其他报表中的报表。在合并报表时,其中一个必须作为主报表。主报表可以是绑定的,也可以是未绑定的,也就是说,主报表可以来源于表或查询,也可以来源于其他数据对象。 主报表既可以包含子报表也可以包含子
53、窗体,可以根据需要包含多个子报表和子窗体。但是,一个主报表最多可以包含两级子报表或子窗体,即允许子报表或子窗体再包含子报表或子窗体。 创建主/子报表有3种方法,即使用“子报表向导”、将子报表拖动到主报表,以及链接主报表和子报表。5.5.1 使用子报表向导 在创建子报表之前,应确定主报表和子报表数据源之间存在正确的联系,这样子报表的记录与主报表的记录之间才有正确的对应关系。参见例5.9。5.5.2 子报表拖动到主报表区域5.5.3 链接主报表和子报表 使用“子报表向导”或拖动子报表方法创建子报表时,通过同名公共字段,Access自动将主报表与子报表进行链接。如果主报表和子报表无同名公共字段,可以
54、按如下操作来进行链接。提示:设置主报表提示:设置主报表/ /子报表链接字段时,链接字段必须包含在主子报表链接字段时,链接字段必须包含在主报表报表/ /子报表的数据源中。子报表的数据源中。5.6 格式化报表5.6.1 自动套用格式5.6.2 添加背景图案5.6.3 添加日期和时间 5.6.4 添加页码5.6.5 添加直线或矩形 5.7 多列报表与报表分页5.7.1 设置多列5.7.2 设置分页 (1)强制分页 (2)添加分页符报表的功能1按指定的格式输出数据。2对数据进行排序、分组汇总。3可以包含图表和子报表。4可以输出标签、发票、名片等报表。5可以进行计数、求平均值、求和等。6可以嵌入图片。A
55、ccess数据库技术及应用数据库技术及应用第第6 6章章 数据访问页数据访问页 本章重点介绍数据访问页本章重点介绍数据访问页的创建、编辑与发布。的创建、编辑与发布。 6.1 自动创建数据访问页 创建数据访问页最快捷、最方便的方法就是使用“自动创建数据页”。只需选择数据来源,不需要做任何设置,一切工作都由Access自动完成。但是,这种方法只能创建纵栏式数据访问页。参见例6.1。6.2 使用向导创建数据访问页 使用“数据页向导”创建数据访问页时,用户可以根据自己的需要进行一些选择和设置,然后由Access依据用户的选择来创建Web页。参见例6.2。6.3 使用设计视图创建数据访问页 在Acces
56、s中,有以下3种方法进入数据页的设计视图: 1)在数据库窗口选择“页”对象,单击“新建”按钮,弹出如图6.1所示的“新建数据访问页”对话框,选择“设计视图”,单击“确定”按钮。 2)在数据库窗口直接双击“在设计视图中创建数据访问页”。 3)从“页视图”进入。单击工具栏上“视图”按钮右侧的向下箭头,选择“设计”视图;或者选择“视图”菜单的“设计”视图。“学生信息”页的设计视图如图6.8所示。6.4 编辑数据访问页6.4.1 添加标题文字参见例6.3。6.4.2 添加滚动文字参见例6.4。 6.4.3 添加命令按钮参见例6.5。6.4.4 设置背景Access数据库技术及应用数据库技术及应用第第7
57、 7章章 宏宏 本章将介绍宏的概念、类型、本章将介绍宏的概念、类型、创建与运行的基本方法,以及与创建与运行的基本方法,以及与宏相关的事件和宏操作。宏相关的事件和宏操作。 7.1 宏的概念7.1.1 什么是宏 宏是由一个或多个操作组成的集合,其中每个操作都能自动执行,并实现特定的功能。7.1.2 宏设计视图7.1.3 常用的宏操作类类 别别命令命令功功 能能打开对象OpenTable打开表OpenQuery打开查询OpenForm打开窗体OpenReport打开报表设置值SetValue为窗体、窗体数据表或报表上的控件、字段或属性设置值窗口Maximize最大化活动窗口Minimize最小化活动
58、窗口信息Beep扬声器发出“嘟嘟”声MsgBox显示包含有警告或提示信息的消息框关闭对象Close 关闭数据库对象Quit退出Access7.2.1 创建操作序列宏 参见例7.1。 运行宏的方法除直接单击“运行”按钮外,还可以在数据库窗口双击要运行的宏。 注意:创建的宏必须保存之后才能执行。7.2.2 创建宏组 参见例7.2。 在例7.2中,当用户单击“运行”按钮时,会发现只运行了宏组中的第一个宏。若想运行宏组中其他的宏,可从“工具”菜单的“宏”级联菜单中选择“运行宏”命令,在弹出的“执行宏”对话框中输入宏名,或者从列表中选择要运行的宏。 引用宏组中宏的格式为:宏组名.宏名,如宏2.宏2_2。
59、7.2 宏的创建 7.2.3 创建条件操作宏 参见例7.3。 在输入条件表达式时,可能会引用窗体或报表上的控件值,可以 使用如下的格式: Forms!窗体名!控件名 或 Forms!窗体名!控件名Reports!报表名!控件名 或 Reports!报表名!控件名 Access数据库提供了一个特殊的宏名:AutoExec(大小写均 可)。 如果将一个宏命名为AutoExec,在打开该数据库时会自 动运行该宏。要想取消自动运行,打开数据库时按住Shift键即可。7.3 宏的调试 宏在设计过程中,如果没有达到预期的效果,或是宏在运行过程中出现错误,就应该对宏进行调试。在Access系统中,提供了单步
60、执行的宏调试工具。单击“单步”按钮执行宏时,一次执行一条宏命令。再次单击该按钮,撤消单步执行方式。使用单步执行宏,可以观察宏的执行过程及操作结果,便于发现错误并加以改正。 参见例7.4。7.4 宏的综合应用实例 参见例7.5。 第第8 8章章 模块与模块与VBAVBA程序设计程序设计 本章重点讲解窗体模块与本章重点讲解窗体模块与标准模块,以及面向过程的标准模块,以及面向过程的程程序设计序设计与面向对象的程序设计与面向对象的程序设计的思想、技术和方法。的思想、技术和方法。 Access数据库技术及应用数据库技术及应用8.1 模块的基本概念8.1.1 窗体模块 顾名思义,窗体模块是与窗体和控件相联
61、系的。回顾一下例4.11的主要步骤: 1)建立一个可视化的用户界面,即由窗体与控件组成。 2)编写窗体与控件的事件过程。 代码区的事件过程:每一行是有特定含义的符号序列,称为一个语句。一般是一行一条语句,也可以是用英文冒号间隔的几条语句。解决一个问题的语句集合,即“符号化语句序列” 就叫做程序,而编制程序的过程就称为程序设计。 由此例可知,窗体模块的主体是为响应事件而编写的程序。8.1.2 标准模块 创建标准模块的方法很简单:在数据库窗口,选择“模块”对象,单击“新建”按钮;或者选择“插入”菜单的“模块”命令,则进入VBA编辑窗口。 向标准模块添加过程的步骤也很简单:选择“插入”菜单的“过程”
62、命令,打开“添加过程”对话框。在“名称”文本框输入过程名(如Sum0),单击“确定”按钮,则在代码区自动生成命名的过程头行与尾行,然后在两行之间书写程序语句。 可见,模块是将可见,模块是将VBAVBA的声明和过程作为一个单元进行存储的集合体。的声明和过程作为一个单元进行存储的集合体。 8.2 VBA编程基础8.2.1 常量与变量 常量和变量是数据的两种基本表现形式,它们是程序处理的对象。在程序执行过程中,其值不允许改变的数据叫做常量,而其值可以改变的数据叫做变量。 1常量 VBA程序中允许使用5种类型的常量: 1) 数值常量 分为整型常量和实型常量(包括小数形式与指数形式)。 2) 字符串常量
63、 3) 日期常量 4) 符号常量,指用户自己定义的常量,其格式为: Const 符号常量名 = 常量值 5) 系统常量,指由Access系统定义的符号常量。 在程序中,常量可以直接使用。在程序中,常量可以直接使用。 2变量 1) 变量的本质含义 变量表示内存的存储单元,即由一个或几个连续字节组成的区域。在程序中,使用变量名对其值进行操作向存储单元中存入数据,或从存储单元中取出数据。 2) 变量名 由字母、汉字、数字和下划线组成的字符序列,但不能以数字和下划线开头。变量名长度不能超过255个字符,其内不允许嵌入空格和标点符号;不能使用系统定义的保留字(即有特殊含义的单词)作变量名;变量名中的字母
64、大小写不加区分。 3) 定义变量的方法 使用Dim定义变量,一般格式是: Dim 变量名表列 As 类型名 使用类型符定义变量,一般格式是: 变量名类型符 = 值 定义变体类型变量 使用类型名Variant定义变量,或者定义时缺少“As 类型名”或“类型符”,则为变体类型变量。 3数组 所谓数组,是指多个同类型变量的集合,其中的每个变量叫做数组元素。 1) 一维数组 一维数组用来描述一行数据或一列数据,如一个学生的20科成绩,50个学生的单科成绩。 一维数组的定义格式为: Dim 数组名(下界 to 上界) As 类型名其中,下界与上界必须是整数,且下界必须小于上界。省略方括号时,表示下界为0
65、。 如何区分数组元素呢?使用带下标(即序号)的数组名。 2) 二维数组 二维数组用来描述由多行多列组成的二维表上的数据,如一个班级的学生成绩表、课程表、一个单位的工资表、数学上的行列式与矩阵等。 二维数组的定义格式为: Dim 数组名(下界 to 上界,下界 to 上界) As 类型名其中,圆括号的逗号前部分表示二维数组的行范围,逗号后部分表示二维数组的列范围。 引用二维数组元素,要使用带行下标与列下标的数组名。 强调指出,数组在内存占有连续的存储空间。8.2.2 运算符与表达式 1运算符 在VBA中,对数据进行操作是通过运算符来实现的。共有5类运算符,按优先级由高到低依次是: 1) 算术运算
66、符,8个。 2) 连接运算符,2个。 3) 关系运算符,6个。 4) 逻辑运算符,常用的3个。 5) 赋值运算符,同等号,但意义不同。 2表达式 用运算符将常量、变量、函数等连接起来的,符合VBA语法规则的式子称为表达式。求表达式值的关键是掌握运算符的运算级别(叫做优先级),如教材P202的表8.2所示。求值规则是: 圆括号是级别最高的运算符; 不同类的运算符之间,按表8.2指出的横向顺序由高到低进行计算; 同类运算符之间,要严格按表8.2指出的纵向顺序由高到低进行计算; 级别相同的运算符之间,则从左至右依次进行计算; 惟一例外的是,指数运算符和负号运算符相邻时,负号优先。 8.2.3 常用函
67、数 函数是一种对应关系:对于自变量的一个值或一组值有唯一确定的函数值(常叫返回值)与它对应。函数能实现运算符难以完成的操作。 1数学函数 1) Abs(x),求x的绝对值。 2) Int(x),求不大于x的最大整数。 3) Sqr(x),求x的平方根。 4) Round(x ,n),按指定的小数位数n(省略为0)对x进行四舍五入。 5) Rnd()或Rnd,它产生大于等于0,但小于1的随机数。 2字符串函数 1) Space(n),此函数产生n个空格,它与其后的数据用分号间隔。 2) Tab(n),从第n列开始输出数据,它与其后的数据用分号间隔。 3) InStr(s,t),从主串s的第一个字
68、符开始,查找子串t在s中首次出现的位置。 3转换函数 1) Val(s),将数值字符串s转换成能计算的数值。 2) Str(x),将数值x转换成字符串,正数前保留一个空格,负数前保留负号。 3) Asc(s),将字符串s的首字符转换成对应的ASCII码值。 4) Chr(n),将ASCII码值n转换成对应的字符。 5) CDate(s),将日期字符串s转换成日期。 6) Nz(x),当x是数字型且值为Null时,函数值为0;当x是字符串型且值为Null时,函数值为空串(即“”)。 4输入/输出函数 1) InputBox(提示串,标题串),等待用户输入文本数据。 2) MsgBox(输出项 ,
69、按钮值,标题串) ,用来显示输出项的内容。 5条件函数 Iif(条件,表达式1,表达式2) 若条件成立,则取表达式1的值;否则,取表达式2的值。 6验证函数 1) IsNull(x),检查表达式x的值是否为无效数据(Null)。 2) IsNumeric(x),检查表达式x的值是否为数值。 使用函数的常用格式是:变量 = 函数名(值表列) 。此外,函数可以做表达式的一部分,或做另一个函数的自变量。 8.2.4 基本语句 VBA程序是由一个个语句组成的,每个语句是完成某项功能或操作的一条命令。 1注释语句 一种是以单撇号开头的文字串,一种是以Rem开头的文字串。 2赋值语句,使用格式为: 变量名
70、 = 操作数或表达式 语句的含义是,将赋值运算符(=)右侧的操作数或表达式的值存入到左侧变量所代表的存储单元中。 3输出语句 指在立即窗口中使用的Print(或?)命令,其一般格式为: Print | ? 表达式表列 4消息框语句 MsgBox 输出项 ,按钮值 ,标题串 这个语句用来输出数据,并等待用户单击按钮。“输出项”是必须的,可以是常量、变量、函数或字符串表达式。“标题串”是可选的,用做消息框的标题,省略时则把“Microsoft Access”作为标题。“按钮值”也是可选的,用来显示按钮的数目与形式,以及图标的样式。 8.3 选择结构程序设计 根据条件在两种或多种情况中选择其一的结构
71、叫做选择结构。将选择结构应用到程序设计上就称为选择结构程序设计,它是通过条件语句来实现的。8.3.1 条件语句 1基本格式 格式1. If 条件 Then 语句块1 Else 语句块2 End If 其中的语句块,可以是一个语句或几个语句的组合。这是两分支的选择结构,当条件成立时,执行语句块1;否则,即条件不成立时,执行语句块2。 格式2. If 条件 Then 语句块1 Else 语句块2 这是单行结构的条件语句基本格式,含义与格式1完全相同。要注意的是,结尾部分没有End If语句。 2简化格式 去掉条件语句基本格式中的Else部分,则成为简化格式。 格式1. If 条件 Then 语句块
72、 End If 格式2. If 条件 Then 语句块 这是单分支结构的条件语句,即只考虑条件成立时要执行的操作。8.3.2 条件语句的嵌套 不管是条件语句的基本格式,还是简化格式,语句块本身也可以是条件语句,这叫做条件语句的嵌套。典型的是ElseIf格式,其特点是条件的“层层否定”。 ElseIf格式的一般形式为: If 条件1 Then 语句块1 条件1成立时,执行语句块1 ElseIf 条件2 Then 语句块2 条件2成立时,执行语句块2 ElseIf 条件3 Then 语句块3 条件3成立时,执行语句块3 Else 语句块n+1 上面条件均不成立时,执行语句块n+1 End If 只
73、有一个条件语句结束行 8.3.3 多分支选择语句 多分支选择语句的一般形式为: Select Case 测试表达式 Case 表达式1 语句块1 Case 表达式2 To 表达式3 语句块2 Case Is 关系运算符 表达式4 语句块3 Case Else 语句块n+1 End Select 此语句的功能是,根据“测试表达式”的值,从多个语句块中选择符合条件的一个语句块执行。执行过程是,首先计算“测试表达式”的值,然后依次与每个Case后的表达式值或条件进行匹配。如果找到,则执行相应的语句块并退出;如果没有找到,则执行Case Else后的语句块n+1再退出。 8.4 循环结构程序设计 在一
74、定条件下重复执行某操作的这种结构叫做循环结构。程序设计上,用循环语句来描述循环结构。其中,重复执行的操作叫做循环体。 8.4.1 ForNext语句 这个循环语句的一般格式为: For 变量 = 初值 To 终值 Step 步长 循环体 Next 变量 For语句的执行过程如下。 1) 将初值赋给变量。 2) 检查变量的值是否“超过”终值,如果其值没有“超过”终值,就执行一次循环体;接着,将“变量+步长”的值赋给变量。重复这个过程,直到变量的值“超过”终值时停止循环,转而执行Next后面的语句。 这里所说的“超过”有两种含义,即大于或小于。当步长为正时,判断变量是否大于终值;当步长为负时,判断
75、变量是否小于终值。 操作:操作:为了看清楚循环的执行过程,可按F8键单步执行。同时,要选择“视图”菜单的“本地窗口”命令,观察变量的值。8.4.2 Do WhileLoop语句 1语句的一般格式 Do While 条件 循环体 Loop 此语句的执行过程是:首先判断条件,若条件成立(即条件为真),则执行循环体;然后再判断条件,条件成立再执行循环体;当条件不成立(即条件为假)时结束循环,接着执行它的后续语句。简言之,当条件成立时反复执行循环体,直到条件不成立时为止。 2Do UntilLoop语句 一般格式为: Do Until 条件 循环体 Loop 这是与Do WhileLoop相对应的循环
76、语句,其执行过程是:当条件不成立(即条件为假)时反复执行循环体,直到条件成立(即条件为真)时结束循环。 8.4.3 DoLoop While语句 1语句的一般格式 Do 循环体 Loop While 条件 该循环语句的执行过程是:首先执行循环体一次;之后判断条件,若条件成立(即条件为真)则执行循环体;然后再判断条件,条件成立再执行循环体;直到条件不成立(即条件为假)时为止。 2DoLoop Until语句 语句的一般格式为: Do 循环体 Loop Until 条件 这是与DoLoop While相对应的循环语句,其执行过程是:首先执行循环体一次;然后判断条件,当条件不成立(即条件为假)时反复
77、执行循环体,直到条件成立(即条件为真)时结束循环。8.4.4 循环语句的嵌套 所谓循环语句的嵌套,是指一个循环语句的循环体中包含另一个完整的循环语句。嵌套时,内、外层循环语句可以相同,也可以不同。就是说,几种循环语句(共3类5种)可以互相嵌套。 8.5 过 程 VBA过程是一段命名的程序,分为子过程和函数过程两种类型。我们把确定一个过程的功能叫做过程定义,将使用一个过程的功能叫做过程调用。8.5.1 过程的定义与调用 1子过程 1) 子过程定义 Public | Private Sub 过程名(形参定义表列) 过程体 End Sub 其中,选Public或省略,表示Sub过程是公有过程,可以在
78、任何模块中调用它;选Private,表示Sub过程是私有过程,它只能被所在模块的过程调用。过程名后圆括号内的变量叫做形式参数(简称形参),形参之间用逗号间隔,定义时不可使用Dim,不可使用定长字符串。 2) 调用子过程 Call 过程名(实参表列)或 过程名 实参表列 其中,过程名后圆括号内的数据,或者过程名后的数据叫做实际参数(简称实参),它可以是常量,有确定值的变量、表达式或函数等。要求实参与对应的形参在类型、顺序和个数上要一致。 2函数过程 1) 函数过程定义 Public|Private Function 过程名(形参定义表列) As 数据类型 带返回语句的过程体 End Functi
79、on 2) 返回语句 函数过程名 = 表达式 3几点说明 1) 子过程与函数过程的主要区别是,子过程没有返回值,而函数过程有且只有一个返回值。 2) 尽管函数过程只有一个返回值,但过程体内可以包含多个返回语句。 3) VBA过程不允许嵌套定义,但允许嵌套调用。 4) 若想提前结束子过程,可在过程体中使用Exit Sub语句。若想提前退出函数过程,可在过程体中使用Exit Function语句。 5) 执行由两个或多个过程组成的程序时,一定要从主调过程开始。 8.5.2 过程的参数传递 当过程调用发生时,程序执行由主调过程转移到被调过程,并将实参数据存入到相应的形参单元中,这个过程叫做过程的参数
80、传递。 定义过程时,根据定义形参的保留字不同,VBA有两种类型的形参:值参数和引用参数。用ByVal定义的形参叫做值参数,用ByRef定义(或省略)的形参叫做引用参数。使用值参数的过程调用叫做传值调用,使用引用参数的过程调用叫做传址调用。 1传值调用 传值调用时,为形参分配独立的存储单元,形参的改变不影响对应的实参。所以,传值调用是“单向”的,即只能是实参向形参传递数据。 2传址调用 引用参数的实质是实参变量的别名,可知形参与实参共占同一内存单元,所以形参的改变直接影响对应的实参。也就是说,传址调用是“双向”的,即实参向形参传递数据,反过来形参也向实参传递数据。请注意,传址调用时的实参必须是变
81、量。 3几点说明 1) 实参是数值型变量时,如果不希望通过形参来改变对应的实参值,则形参应加上保留字ByVal。 2) 实参是字符串变量时,为了提高效率,建议将形参定义为引用参数。 3) 实参是数组名,一定是传址调用,对应的形参必须定义为引用参数。 8.5.3 变量的作用域 所谓变量的作用域,是指变量可以使用的范围。根据变量定义的位置和方式不同,分为局部变量、模块级变量和全局变量。 1局部变量 在过程内定义的变量(包括形参)叫做局部变量。局部变量只允许在定义它的过程内使用,在过程外和其他过程中是不可以使用的,所以局部变量的作用域是局部的。 1) 自动变量 在过程内用Dim定义的,用类型符定义的
82、,或直接使用的变量都是自动变量。自动变量存在的时间是短暂的。 2)静态变量 在过程内使用保留字Static定义的变量叫做局部静态变量,静态变量存在的时间是整个程序的执行时间。静态变量的值具有可继承性。 2模块级变量 在模块的通用声明区使用Dim或Static定义的变量叫做模块级变量。模块级变量可以被模块内的所有过程使用,所以它的作用域是模块范围。 3全局变量 在标准模块的通用声明区使用Public或Global定义的变量叫做全局变量。全局变量可以被所有模块的所有过程使用,所以它的作用域是全局的。因此,全局变量的值是难以控制的,尽量少用。 8.6 面向对象的程序设计 8.6.1 对象 1什么是对
83、象 客观存在的并可以相互区分的事物叫做实体,一个实体就是一个对象。一个对象具有区别于其他对象的特征或特点称为属性,一个对象具有的能力或功能称为行为。 2对象的属性 程序设计时,对象的每个属性用数据来表示。对象不同,属性也不尽相同。例如,窗体的格式属性有“滚动条”、“记录选择器”、“导航按钮”、“分隔线”等。常用的控件属性有Caption(控件的“标题”)、Enabled(控件是否可用)、Visible(控件是否可见)、Value(控件的值)等。 对象引用其属性的格式为: 对象名.属性 3对象的方法 程序设计时,对象的行为常叫做方法,是指对象所执行的操作,它用过程来描述。例如,标准模块“求和”的
84、过程Sum1、Sum2、Sum8等是对象“求和”的方法。 对象引用其方法的格式为: 对象名.方法 8.6.2 事件 所谓事件,是指对象可以识别的动作。最常见的事件有窗体的打开、关闭;鼠标的单击、双击;键盘的键对象的属性与方法,可选择P238-239的例8.19进行演示或练习。按下、键抬起等。每当事件发生时,对象就要执行相应的命令或过程。 VBA的事件主要指窗体与控件事件。这些事件是由系统设置的,用户无权更改,只能选择。用户的责任是如何编写事件过程,这取决于问题的需要。下面,重点介绍窗体的“加载”、“卸载”与“计时器触发”事件。 1加载与卸载事件 打开窗体就是将窗体(包括相应模块)装入内存,并显
85、示在屏幕上。窗体显示到屏幕之前,要对对象的属性和变量进行初始化,则将自动执行“加载”(Load)事件过程。关闭窗体就是从内存中清除窗体,在关闭窗体前自动执行“卸载”(Unload)事件过程。窗体加载事件是在打开窗体之后发生的,卸载事件是在关闭窗体之前发生的,并自动执行相应的事件过程。 2计时器触发事件 设置方法很简单:选择窗体属性的“事件”选项卡,设置“计时器间隔” (TimerInterval),它以毫秒(千分之一秒)为单位;选择“计时器触发”的 事件过程,单击生成器按钮。至于这个事件过程做什么,完全由用户来决定。每当计时达到,则自动执行“计时器触发”事件过程,8.6.3 DoCmd对象 除
86、数据库的7个对象外,Access还提供一个重要的对象DoCmd,它用来在VBA程序中执行Access操作。例如,打开库对象(表、查询、窗体等),运行宏与SQL查询,关闭库对象等。一般格式为: DoCmd.方法 参数表列 其中,DoCmd的方法比较多(参看附录C)。DoCmd方法的参数与同名的宏命令参数是相同的,但需要用户自己设置。如关闭库对象的方法Close,其后常要求“对象类型”与“对象名”,如下所示。 DoCmd.Close 对象类型 ,对象名 结语:VBA是一种可视化的、由事件驱动的、面向对象的结构化程序设计语言。一个VBA应用程序的基本结构如下所示: VBA8.7 VBA数据库编程 8
87、.7.1 数据访问接口 实现用户程序访问物理数据库的桥梁就是数据访问接口,它实际上是一组应用程序。重点讲VBA如何使用DAO与ADO访问本地Access数据库。 8.7.2 使用DAO访问数据库 1DAO主要对象 1) DBEngine对象,只有一个且处于最顶层,它用来控制其他对象。 2) Workspace对象,用来表示工作区。 3) Database对象,它提供与数据库的连接。 4) Recordset对象,代表记录的集合,简称记录集。 5) Field对象,表示记录集中的字段信息。 2数据库编程 (1)定义数据库对象变量 除DBEngine对象外,使用其他数据库对象都要定义对象变量。定义
88、的一般格式是: Dim 对象变量 As 数据库对象类型 (2)使用Set语句为对象变量赋值 为对象变量赋值的一般形式为: Set 对象变量 = 对象 (3)以记录为单位对数据进行处理 这是数据库编程的核心,其常规处理流程如图所示。当成功地打开库中的记录集后,系统的记录指针(即指示记录位置的变量)指向第1条记录。自动读一条记录,并进行处理。然后,调用移动记录指针的方法,实现一条条记录的处理,直到最后一条记录为止。 (4)关闭并回收有关对象 这是数据库编程的最后阶段,将打开的对象(数据库与记录集)正常关闭,并回收(也叫释放)为对象所分配的存储空间。如不及时释放对象变量所占用的内存,可能会影响程序的
89、运行。 对象变量的释放通过Set语句和Nothing来实现,其格式为: Set 对象变量名 = Nothing 指出一点,关闭、回收对象的顺序与打开的顺序相反。8.7.3 使用ADO访问数据库 1ADO主要对象 1) Connection对象,用来建立与数据库的连接。 2) Recordset对象,用来对一个连接的数据库中的记录集进行操作。 3) Field对象,表示记录集中的字段信息。 (3)以记录为单位对数据进行处理 这是数据库编程的核心,其常规处理流程如图所示。当成功地打开库中的记录集后,系统的记录指针(即指示记录位置的变量)指向第1条记录。自动读一条记录,并进行处理。然后,调用移动记录
90、指针的方法,实现一条条记录的处理,直到最后一条记录为止。 (4)关闭并回收有关对象 这是数据库编程的最后阶段,将打开的对象(数据库与记录集)正常关闭,并回收(也叫释放)为对象所分配的存储空间。如不及时释放对象变量所占用的内存,可能会影响程序的运行。 对象变量的释放通过Set语句和Nothing来实现,其格式为: Set 对象变量名 = Nothing 指出一点,关闭、回收对象的顺序与打开的顺序相反。8.7.3 使用ADO访问数据库 1ADO主要对象 1) Connection对象,用来建立与数据库的连接。 2) Recordset对象,用来对一个连接的数据库中的记录集进行操作。 3) Fiel
91、d对象,表示记录集中的字段信息。 2数据库编程 使用ADO访问数据库,主要是前两步与DAO不同,即定义数据库对象变量,打开数据库与记录集。 (1) 定义数据库对象变量。例如, Dim db As New ADODB.Connection 定义数据库连接对象变量db Dim rs As New ADODB.Recordset 定义记录集对象变量rs Dim zc,gz As ADODB.Field 定义字段对象变量zc与gz如果操作的是当前数据库,可省略第1条语句。 (2) 通过对象变量打开数据库与记录集,以及要使用的字段。例如, db.Provider = Microsoft.Jet.OLED
92、B.4.0 设置数据提供者 db.Open D:学生管理学生管理.mdb 打开数据库 strSQL = Select 职称,工资 From 教师表 设置SQL查询语句 rs.Open strSQL,db,adOpenKeyset,adLockOptimistic 记录集是SQL语句 Set zc = rs.Fields(“职称”) 为对象zc赋值 Set gz = rs.Fields(“工资”) 为对象gz赋值 (3) 操作记录集,同DAO第(3)步。但要删除rs.Edit语句,因为ADO不支持此方法。 (4) 关闭并回收对象,同DAO的第(4)步。8.7.4 域聚合函数 所谓域,是指包含在表
93、、查询或SQL语句中的一组记录,即记录集。 1域聚合函数的统一格式 函数名(字段,记录集 ,条件) 常用的函数有以下几个: 1) DSum(),在记录集中,对满足条件的记录求数值字段的总计。 2) DAvg(),在记录集中,对满足条件的记录求数值字段的平均值。 3) DCount(),在记录集中,对满足条件的记录求字段非空值的个数。 4) DMax(),在给定的记录集中,对满足条件的记录求字段的最大值。 5) DMin(),在给定的记录集中,对满足条件的记录求字段的最小值。 6) DLookup(),返回符合条件的第一个匹配字段的值;若没有,则返回Null。 2说明几点 1) 域聚合函数的条件
94、一般要组织成SQL表达式的Where子句,但不能含Where保留字。 2) 域聚合函数除在VBA库编程使用外,还可以在查询的添加新字段、SQL语句、窗体或报表的计算控件,以及宏中使用。 3) 在VBA程序中不能直接使用SQL聚合函数。 8.8 VBA程序调试 查找并修改程序错误的过程称为调试。程序中的语法错误容易改正,逻辑错误(即算法错误)最难查。8.8.1 程序的容错处理 程序有错是正常的,关键要给出出错处理,这称为程序的容错处理。首先是如何捕获错误,至于改错那是用户的责任。 1On Error GoTo语句 这个语句的一般使用格式是: On Error GoTo 标号 On Error G
95、oTo 0 On Error Resume Next 语句“On Error GoTo 标号”的作用,当执行其后的语句发生错误时,程序转移到标号所指位置去执行。语句“On Error GoTo 0”的含义是关闭错误处理,语句“On Error Resume Next”忽略发生错误的行,继续执行下一行。 2Resume语句 这个语句的一般格式是: Resume 标号 执行这个语句时,程序转移到标号所指位置去执行。 8.8.2 程序的调试方法 程序执行时,因例外情况结束,或得不到正确的结果,一般要通过调试找出问题所在,改错后再重新运行。为此,要打开“调试”工具栏。 1单步跟踪 所谓单步跟踪,就是以一个语句为单位的执行方式,即一次执行一条语句。执行时,通过观察变量值的变化,确定程序流程是否正确。为此,要求打开“本地窗口”。 2设置断点 所谓断点,就是程序执行时的暂停地方,以中断程序的执行。像单步执行一样,可在断点处观察变量的值。一个程序允许设置一个或多个断点,最简单的方法是将鼠标指针移到行首单击。这时,打开“本地窗口”可观察变量值的变化。为了观察表达式的值,可打开“监视窗口”,通过设置表达式来实现。 着重指出,要调试窗体模块中的程序必须设置断点。否则,打开窗体时无法使事件过程暂停。