-
- 素材大小:
- 1.27 MB
- 素材授权:
- 免费下载
- 素材格式:
- .ppt
- 素材上传:
- ppt
- 上传时间:
- 2016-05-03
- 素材编号:
- 52009
- 素材类别:
- 培训教程PPT
-
素材预览
这是一个关于access培训基础教程PPT(部分ppt内容已做更新升级),主要介绍了了解数据与数据处理的概念、数据管理发展的几个阶段、理解数据库系统中的基本概念等内容。培训是给新员工或现有员工传授其完成本职工作所必需的正确思维认知、基本知识和技能的过程。是一种有组织的知识传递、技能传递、标准传递、信息传递、管理训诫行为。其中以技能传递为主,侧重上岗前进行。为了达到统一的科学技术规范、标准化作业,通过目标规划设定知识和信息传递、技能熟练演练、作业达成评测、结果交流公告等现代信息化的流程,让员工通过一定的教育训练技术手段,达到预期的水平,提高目标。目前国内培训以技能传递为主,时间在侧重上岗前。
access培训基础教程PPT是由红软PPT免费下载网推荐的一款培训教程PPT类型的PowerPoint.
第一章 数据库基础知识
1、学习目标与要求
通过本章学习,读者应达到以下要求:
1.了解数据与数据处理的概念、数据管理发展的几个阶段
2.理解数据库系统中的基本概念,理解数据模型的分类及数据模型中的实体概念以及实体之间的关系
3.掌握关系数据库中关系、元组、属性、域、关键字等术语、掌握常见关系运算
4.初识Access
信息
信息与能源、物质并列为人类社会活动的三大要素,我们所在的时代被称为信息时代。
信息是对现实世界中事物的存在特征、运动形态以及不同事物间的相互联系等多种属性的描述,通过抽象形成概念。这些概念能被人们认识、理解,被表达、加工、推理和传播,以达到认识世界和改造世界的目的。因此,信息是关于事物以及事物间联系的知识。
信息一般分三类:事物的静态属性信息、动态属性信息、事物间的内在联系信息。
目前人们使用的信息表达方法,主要包括:数字、文字和语言、公式、图形和曲线、表格、多媒体(包含图像、声音、视频等)、超链接等。
信息具有可共享性、易存储性、可压缩性、易传播性等。
数据与数据处理系统
表达信息的符号记录就是数据。数据是信息的载体,信息是数据的内涵。计算机是目前最普遍使用和最重要的信息处理工具。计算机是处理数据的。作为数据的符号在计算机中都转换成二进制符号“0”和“1”保存和处理
为实现特定数据处理目标所需要的所有各种资源的总和称为数据处理系统。一般情况下,主要指硬件设备、软件环境与开发工具、应用程序、数据集合、相关文档等。
数据处理系统的开发是指在选定的硬件、软件环境下,设计实现特定数据处理目标的软件系统的过程。数据库技术是数据处理系统的核心技术。
计算机数据管理的发展阶段
1、人工管理
这一时期的计算机数据管理的特点是:数据与程序不具有独立性,一组数据对应一组程序,数据不能长期保存,程序运行结束后就退出计算机系统一个程序中的数据不能被其他程序使用,因此,程序与程序之间存在大量的重复数据,即数据冗余。
2文件系统
程序与数据有了一定的独立性,程序与数据分开存储,数据文件可以长期保存在外存储器上被多次存取。程序只需用文件名就可以访问数据文件
3、数据库系统
提高了数据的共享性,使多个用户能够同时访问数据库;中的数据,减少数据的冗余,提高数据的一致性和完整性;提高了数据和应用程序的独立性,减少了应用程序的开发和维护代价
为数据库的建立、使用和维护而配置的软件为数据库管理系统(Data Base Management System DBMS)
4、分布式数据库系统
即客户机/服务器(Client/Server,C/S)系统结构。C/S结构将应用程序根据应用情况分布到客户的计算机和服务器上,将数据库管理系统和数据库放置到服务器上,客户端的程序使用开放数据库连接(Open Data Base Connectivity,ODBC)标准协议通过网络访问远端的数据库。
5、面向对象数据库系统
相关真题:数据管理技术发展的三个阶段中 没有专门的软件对数据进行管理 a人工管理阶段 b 文件系统阶段 c 数据库阶段
数据库系统的基本概念
1.数据
数据指描述事物的符号记录。在计算机中文字、图形、图像、声音等都是数据,学生的档案、教师的基本信息、货物的运输情况也都是数据
2.数据库
即存储在计算机存储设备、结构化的相关数据的集合,它不仅包括描述事物的数据本身,也包括相关事物之间的关系。比如一个具有姓名地址电话等信息的通讯录,就是一个简单的数据库,我们既可以添加信息,也可以更改信息。
3.数据库应用系统
即指系统开发人员利用数据库系统资源开发的面向某一类实际应用的软件系统。
4.数据库管理系统
即(DataBase Management System,DBMS),是用户和操作系统之间的一层数据管理软件,是为了数据库的建立、使用和维护而配置的软件。
5.数据库系统
即(DataBase System ,DBS),是指引进数据库技术后的计算机系统,层次如下
数据模型
数据库需要根据应用系统中数据的性质、内在联系,按照管理的要求设计和组织。数据模型就是从现实世界到机器世界的一个中间层次。
一、实体描述
1.实体
客观存在并相互区别的事物成为实体,可以是实际的事物,也可以是抽象的事物如学生、课程、读者都是实际的事物,而学生选课、借阅图书等都是抽象的事物。
2.实体的属性
描述实体的特性即为属性,如学生实体用学号,姓名,性别,出生年月,入学时间等属性来描述,图书实体属性用图书编号、分类号、书名、作者、单价等多个属性来描述。
3.实体间的联系及分类
实体之间的对应关系即为联系,它反映现实世界事物之间的相互关系,实体联系分为以下三种
a、一对一关系;
b、一对多关系;
c、多对多的关系
举例
1.如果表A中的一条记录与表B中的多条记录匹配,且表B中的一条记录与表A中的一条记录匹配,则表A与表B的关系是
2.如果一个教师可以讲授多门课程,一门课程可以由多个教师来讲授,则教师与课程存在的联系是
3.假设数据表A与表B建立了一对多的关系,表A为“多”的一方则下述正确的是
a、表B中的一个字段能与表A中的多个字段匹配
b、表B中的一个记录能与表A中的多个记录匹配
c、表A中的一个记录能与表B中的多个记录匹配
d、表A中的一个字段能与表B中的多个字段匹配
4、在人事管理数据库中工资和职工的关系是
5、下列实体联系中,属于多对多的联系是
a.学生与课程 b.学校与校长 c.住院的病人与病床 d.工资与职工
6、在现实世界中,每个人都有自己的出生地,实体“人”与实体“出生地”之间的联系是
7、在学校中,教师的“职称”与教师个人“职工号”的联系是
关系数据库
一个关系的逻辑结构就是一个二维表,用这种二维表的形式表示实体和实体联系的数据模型为关系数据模型。
1.关系: 一个关系就是一个二维表
2.元组: 在二维表中,元组也称记录
3.属性: Access表中字段名即为属性
4.域 : 属性的取值范围
5.关键字:能够唯一识别一条记录的属性或属性的组合
6.外部关键字:如果表中的一个字段不是本表的主关键字段,而是另外一个表的主关键字或候选关键字这个字段就为外部关键字
关系运算
一、传统的集合运算
1.并 2.差 3.交
二、专门的关系运算
1.选择运算
从关系中找出满足给定条件的元组的操作即为选择运算。即找出给定逻辑表达式为真的记录。
2.投影运算
从关系模型中指定若干属性(字段)组成新的关系即为投影
3.联接运算
将两个或者更多的关系模式(二维表)拼接成一个更宽的关系模式(表),生成的关系(表)包含满足联接条件的元组(记录)
4.自然连接
联接运算中,按照字段值对应相等为条件进行的联接操作为等值联接,自然连接是去除重复属性的等值联接
举例
1.设关系R和关系S的元数分别是3和4,元组数分别是5和6,则R和S自然连接所得到的关系,其元数和元组数分别为
a.7和11 b.12和30 c.小于7和小于30 d.等于7和小于等于30
2.在关系运算中,选择运算的含义是
a在基本表中选择满足条件的记录组成新的关系
b在基本表中选择需要的字段组成一个新的关系
c在基本表中选择满足条件的记录和属性组成新的关系
d以上均正确
3.关于二维表说法错误的是
a二维表中的列成为属性
b属性值的取值范围称为值域
c二维表中的行称为元组
d属性的集合称为关系
4.常见的数据模型有三种,它们是层次、关系、网状
5.在关系数据模型中,一个关系就是一个二维表
6.用树形结构表示实体之间的联系的模型是层次模型
7在教室表中,如果要找到职称是“教授”的教师,所采用的关系运算是 a选择 b投影 c联接 d自然联接
第二章 数据库与表
2.1建立数据库
a 创建空数据库
b 使用“向导”创建数据库
2.2建立表
2.2.1表的组成
注:字段命名规则:1.长度为1-64个字符;2.可以包含数字、字母、汉字、空格等字符,但不能以空格开头;3.不能包含句号、感叹号、方括号及单引号
数据类型
Access的数据类型共有10种包括
1.文本型
可以用来保存文本或数字(此数字不再
需要计算),默认大小为50个字符,最大
255个,超过255个,可使用备注型
2.备注型
允许存储最大64000个字符
3.数字型
用来存储算术运算的数字数据
4.日期型 5货币型
6.自动编号
自动编号一旦被指定,就会永久和记录连接,如果删除了某一 记录,其他记录自动编号不会重新编号,当插入记录时,不再使用已删除的自动编号的数值而是递增重新赋值,对自动编号,人为不能干预。
7.是/否型(逻辑型或布尔型)
域值只有两种情况:Yes/No、True/False、On/Off,前者值为-1,后者为0
8.OLE对象
OLE对象是指由OLE(Object Linking and Embedding )协议程序创建的对象,如Word文档,Excel表格、图像、声音或其他二进制数据。
该类型是指字段允许单独地链接或者嵌入ole对象 ,如果是嵌入,OLE对象存放在数据库中,如是链接,链接对象只存放在最初的文件中。
9.超级链接
10.查阅向导
在进行数据输入的时候,如果希望通过一个列表或组合框选择所需的数据以便将其输入到字段中,而不是手工输入,可使用该类型。
2.2.2建立表结构
1、三种方法
a.使用数据表视图
b.使用设计视图
c.使用表向导
2、定义主键
a.什么是主键
主键也称为主关键字,是表中能够唯一识别记录的一个字段或多个字段的组合。只有为表定义了主键,才能与数据库中的其他表建立关系。
b.主键的类型
c.主键的建立方法
2.2.3字段属性
1.字段大小
2.格式
3.输入掩码
例如:
掩码 允许值显示
(000)0000-0000 (010)5448-1165
(999)9999-9999! (010)6566-5458
( )4695-5444
(000)AAAA-AAAA (201)5498-drgg
#999 -20
2000
2.3维护表
2.3.1打开、关闭表
2.3.2修改表的结构
主要有添加、删除、移动字段位置
2.3.3编辑表
2.3.4调整表的外观
主要有改变字段次序、字段的显示高度宽度、隐藏列、冻结列、数据表格式、字体显示。
2.4表操作
2.4.1查找数据
注意通配符的使用方法
* :任意字符 - 通配范围内的任意单个字符
? 任意单个字符 ! 在不方括号内的任意单个字符
[ ] 通配括号内的任意单个字符 # 任何单个数字字符
举例:
wh* 可以找到who、what等,不能找wash、with
b?ll 可以找ball 、boll 不能找beall、blle
b[ea]ll 可以找bell 、ball 不能找bill
b[!ea]ll 可以找bill bull 不能找bell、ball
b[a-c]ll 可找ball bbll bcll 不能找bdll
1#3 可找103 113 123等
如果要查询空值,可使用null
2.4.2替换数据
2.4.3排列记录
数据类型不同排序的规则不同(英文、中文、数字、日期时间)
特例:
现有文本字符串“5”、“6”,“12”,按升序排序,结果为
2.4.4筛选记录
a.按内容筛选 b.按窗体筛选 c按筛选目标筛选 d.高级筛选
2.4.5 编辑表之间的关系
1、定义关系的条件
a.如果仅有一个相关字段是主键或具有唯一索引,则建立一对多的关系
b.如果两个相关字段都是主键或唯一索引,则创建一对一的关系
c.多对多的关系实际上是某两个表与第三个表的两个一对多关系,第三个表的主键包含两个字段,分别是前两个表的外键
2、参照完整性
如果设置了参照完整性,当主表中没有相关记录时,就不能将记录添加到相关表中,也不能在相关表中存在匹配的记录时删除主表中的记录,更不能在相关表中有相关记录时更改主表中的主键值。
设置参照完整性条件:
a.主表的匹配字段是主键或具有唯一索引
b.相关字段具有相同的数据类型
c.两个表都属于同一个access数据库
1.要求主表中没有相关记录时就不能将记录添加到相关表中,则应该在关系中设置()
2.Access中的参照完整性规则不包括()
删除规则 插入规则 查询规则 更新规则
3,对数据进行筛选操作,结果是()
a显示满足条件的记录,并将这些记录保持到一个新表
b 只显示满足条件的记录,将不满足条件的记录删除
c将满足条件的记录和不满足条件的记录分为两个表显示
d 只显示满足条件的记录,不满足条件的记录被隐藏
4关于输入掩码的叙述,正确的是
a定义字段的输入掩码时,既可以使用输入掩码向导,也可以直接使用字符
b 定义输入掩码,是为了设置输入时以密码显示
c输入掩码中的字符“A”表示可以选择输入数字0-9
d直接使用字符定义输入掩码时不能将字符组合起来
5数据类型是 a字段的另一种说法 b决定字段能包含那类数据的设置 c一类数据库应用程序 d一类用来描述access表向导从中选择的字段名称
6在access中,在要查找的条件中设置与任意一个数字字符匹配的条件,可使用的通配符是()
7在Access数据库的表设计视图中,不能进行的操作是
修改字段类型 设置索引 增加字段 删除记录
8在数据表视图中,不能
修改字段的类型 修改字段的名称 删除一个字段 删除一条记录
9下列正确的是
a 在access表中,不能对备注型字段进行格式属性设置
b 创建表之间的关系时,应关闭所有打开的表
c若删除表中含有自动编号型字段的一个记录,access 不会对表中自动编号字段重新编号
d可在access 表的设计视图“格式”列中对字段进行具体的说明
10某文本型字段的值只能是字母且不允许超过4个,则可将该字段的输入掩码定义为
AAAA &&&& LLLL ####
11“是/否”数据类型常称为
真假型 对错型 I/O型 布尔型
12能够使用“输入掩码向导”创建输入掩码的字段类型是
13access中,如果不想显示数据表中的某些字段,可以使用的命令是
隐藏 删除 冻结 筛选
相关机试题
2
3
第三章 查询
3.1查询的基本知识
3.1.1选择视图的方法
a 使用视图工具
b使用菜单
c使用工具栏上工具按钮
3.1.2查询的分类
a 选择查询 b参数查询 c交叉表查询 d操作查询 e SQL查询
3.2查询操作
3.2.1选择查询
a 创建不带条件的查询
b 创建带条件的查询
常用的一些运算符
算术运算:+ - * / \ mod ^
关系运算 = > < >= <=
逻辑运算 and or not
特殊运算 in between
通配符 * ? Like is null is not null
c 创建带“与”或者“或”条件的查询
查询中表达式实例
Between #1998-8-8# And #1998-9-9#
Like (“张*”) Like “*小*” Like (“??”)
In(“回族”,”汉族”)
在选择查询中实现计算
在选择查询中,除可实现有图中的运算外,也可
实现自定义运算。
实例:
1.以学生表为数据源,建立一个统计各班人数的查询
2.查询各班期中成绩的平均值
3.计算期末成绩,期末成绩=(期中成绩+期末成绩+平时成绩)/3
4.以学生表、成绩表为数据源,统计各班成绩表中的最好成绩。
3.2.2参数查询
参数查询也叫人机对话查询,当运行查询时,根据设计好的提示信息,输入参数,从而得到查询结果。
实例:
1.建立一个参数查询,根据输入性别进行查询,要求输出全部字段。
2.建立一个带有性别及民族两个条件的参数查询。
3.2.3交叉表查询
交叉表可以实现表格的汇总计算,并将结果显示在行或列交叉的单元格中
实例:
1.以学生表为数据源,产生“班号”(行)与“性别”(列)的交叉表查询。
3.2.4操作查询
操作查询也叫动作查询,操作查询可以修改数据源。包括生成表查询、更新查询、删除查询和追加查询。
a、生成表查询
可以实现由一个或多个数据源提取数据而生成一个新的数据源
实例:
由学生表和成绩表为数据源生成一个新的表。
b、更新查询
可是更新操作表的数据,在实现更新过程中,还可以 对表中的字段进行运算。
实例:将学生表中的政治面貌由团员更新为党员
c、追加查询
是指将表中符合一定条件的某些记录追加到另外一个表尾部的操作,也叫表见操作。
实例:
建立一个政治面貌为党员的表,命名为“党员表”,再将学生表中政治面貌为团员的学生记录追加到党员表中。
d、删除查询
可以从一个或多个表中产出一组记录,将删除整个记录,而不是只删除记录中所选的字段。
实例:
建立一个删除查询,删除“是否代培”为“-1”的记录
相关上机真题实例:
1.
2
3
4
5
6
7
8、
10
3.2.5 SQL命令查询
SQL查询是利用SQL命令创建的查询,可以用结构化查询语言来查询、更新和管理关系数据库。在查询设计视图中创建查询时,Access在后台建立了等效的SQL语句。
SQL查询的特殊方式包括联合查询、传递查询、数据定义查询和子查询。
1 SQL基本命令
SQL语句格式
SELECT [DISTINCT (消除重复值)] <字段列表>|<表达式>(*)
[AS <代替内容>] FROM <表列表> [WHERE <条件>]
[GROUP BY <分组条件> having <组选项条件>]
[ORDER BY <排序条件>]
2 SQL 基本操作
SQL设计视图的打开方式
a、右键 b菜单
3 单表查询
实例:
1在成绩表中,使用SQL计算:总评成绩=期中成绩*0.3+期末成绩*0.6+平时成绩*0.1
select 学号,期中成绩*0.3+期末成绩*0.6+平时成绩*0.1 as 总评成绩 FROM 成绩表
常用数据类型的条件查询举例:
selece * from student where 性别=“女”
selece * from student where 平时成绩>=80
selece * from student where 是否代培=-1
selece * from student where 出生年月>=#1999-9-9#
selece * from student where 民族 IN(“汉族”,”回族”)
selece * from student where 年龄 between 21 and 24
selece * from student where 年龄 is null
selece * from student where 年龄<>null
selece * from student where 姓名 like ”*刘*”
4 创建SQL联合查询
联合查询可以将两个或者更多表或者查询中的字段合并到查询结果中的一个字段中,联合查询包括:等值查询、自然连接、非等值查询、自身连接、外连接、复合条件连接查询。
(1) 等值联接与非等值连接查询
select 学生表.* ,成绩表.* from 学生表,成绩表 where 学生表.学号=成绩表.学号
(2) 自然连接
(3) 自身连接(本表连接)
查询与姓“李”的同籍贯的学生
select distinct s1.学号,s1.姓名 from 学生表 s1,学生表 s2 where s1.籍贯=s2.籍贯 and s2.姓名 like"刘*“
(4) 复合条件连接
SELECT 学生.姓名, 学生.学号 FROM 学生,成绩 WHERE 学生.学号=成绩.学号 and (成绩.课程号)="1" AND 成绩.成绩)>71
(5) 嵌套查询
查询与姓“李”的同籍贯的学生
SELECT 姓名,籍贯 from 学生表 where 籍贯 in(select 籍贯 from 学生表 where 姓名 like "*刘*")
查询选修了101号课程的学生
select 姓名,成绩表.学生编号 from 成绩表,学生表 where 成绩表.学生编号=学生表.学号 and 课程号="101“
查询没有选修101号课程的学生
select 姓名 from 学生表 where not exists (select * from 成绩表 where 成绩表.学生编号=学生表.学号 and 课程号="101")
查询选修了全部课程的学生
SELECT 姓名 from 学生表 where not exists (select * from 成绩表 where not exists (select * from 成绩表,课程表 where 成绩表.学号=学生表.学号 and 成绩表.课程号=课程表.课程号))
6数据定义查询
数据定义查询可以创建、删除或改变表,也可以在数据库表中创建索引
create table
alter table
drop
create index
如:create talbe 学生表 ( [姓名] text,[性别] text ,[出生日期] date)
注:数据类型说明
integer 整形 ,text 文本 ,long 长整形, single 单精度,double
双精度 , string 字符型 , currency 货币型, date 日期型 , boolean 布尔型
如:alter table 学生表 add 年龄 integer
drop table 学生表
alter table 学生表 add unique 姓名
第四章 窗体
4.1窗体的基本知识
4.1.1 窗体的定义和用处
窗体有如下用处
a、创建数据入口窗体,可以用来向数据表中输入数据
b、创建切换面板窗体或主窗体,可以用来打开其他窗体或报表,可以实现窗体的层层调用
c、创建自定义对话框,可以接收用户输入并依照输入执行某个操作。
4.1.2 窗体的数据源于视图方式
1、窗体的数据源
数据表和查询是窗体的数据源,也就是说,没有数据表和查询很难建立有用的窗体。
2、窗体的视图方式
窗体应用中有3种视图方式
a、设计视图:用户在设计视图方式下,可以完成对窗体的创建、编辑与修改。
b、 窗体视图:用户在窗体视图方式下,可以查看窗体的设计效果。
c、 数据表视图:用户在数据表视图下,可以查看窗体所用到的数据表的内容。
4.1.3 窗体的结构
窗体由窗体页眉、页面页眉、主体、
页面页脚、窗体页脚5部分组成。常用
的结构为窗体页眉、主体、窗体页脚
窗体页眉:窗体的标题或使用说明等
窗体页脚:使用命令操作说明,也可设置按钮
页面页眉:打印时的页头信息
页面页脚:打印时的页脚信息
4.1.4 窗体的属性
在窗体设计时,通常会用到窗体的属性
4.2 创建窗体
4.2.1 使用自动创建窗体
4.2.2 使用向导创建窗体
4.2.3使用设计视图创建窗体
4.3 窗体控件的使用
4.3.1标签控件
第五章 宏
学习要点:本章主要学习如何使用宏实现自动处理功能,包 括宏和宏组的基本概念,宏的创建、参数设置及宏的调试 和运行、事件触发宏等。
5.1宏的基本概念
使用宏的目的是为了实现自动操作,在使用access数据库过程中,一些需要重复执行的复杂操作可以被定义成宏,以后只要直接执行宏就可以了
5.1.1宏的定义和特点
1 宏的定义
宏是能被自动执行的某种操作或操作的集合。期中每一个操作都实现特定的功能。如打开报表、查询、窗体,显示消息框、振铃、在记录中筛选、定位等。
如下面的“欢迎进入”宏
2 常用宏命令
宏中基本操作叫宏命令,他们是由Access预先提供的。
附:常见操作:
(1)打开或关闭数据库对象 OpenForm命令用于打开窗体。 Opentable OpenReport命令用于打开报表。 OpenQuerv命令用于打开查询。 Close命令用于关闭数据库对象。 save (2)运行和控制流程 RunSQL命令用于执行指定的SQL语句。 runmacro RunApp命令用于执行指定的外部应用程序。 Quit命令用于退出Access。
(3) 设置值 SetValue命令用于设置属性值。 Setwarnings关闭或打开系统消息
(4) 刷新、查找或定位记录 Requery命令用于实施指定控件重新查询及刷新控件数据。 FindRecord命令用于查找满足指定条件的第一条记录。 FindNext命令用于查找满足指定条件的下一条记录。 GoToRecord命令用于指定当前记录。 (5) 控制显示 Maxmize命令用于最大化激活窗口。 Minmize命令用于最小化激活窗口。 Restore命令用于将最大化或最小化窗口恢复至原始大小。
(6) 通知或警告用户 Beep命令用于使计算机发出“嘟嘟”声。 MsgBox命令用于显示消息框。 SetWarnings命令用于关闭或打开系统消息。 (7) 导入和导出教据 TransferDatabase命令用于从其他数据库导入和导出数据。 TransferText命令用于从文本文件导入导出数据。
Gotocontrol 将焦点移动到被激活的数据表或窗体的指定控件上
Gotorecord 将指定的记录设置为当前记录
Runcommand运行一个access菜单命令
Stopmacro 停止正在运行的宏
5.1.2宏组的基本概念
宏组是共同存储在一个宏名下的相关宏的集合。
往往在一个Access数据库中会有很多宏,可以将其中相关的一些宏,如在同一个窗体中使用的宏,或功能相近的宏组织成宏组,便于宏的组织与管理。
在宏组中,一块宏名区分其中的每个宏,执行宏组中的宏时,只要在宏名前加宏组名就可以了。如按性别浏览.男
5.2宏的创建和使用
5.2.1宏的设计窗口
宏窗口的组成
5.2.2宏的创建
5.2.3宏的运行
运行宏时,系统按照宏中命令的排列顺序由上向下依次执行各个宏命令。
1直接执行宏
方法1:双击宏名
方法2:点击
方法3:工具>宏>运行宏
2 用事件触发宏
通常使用的触发宏的操作有如下几种。
(1) 将宏和窗体、报表相联系,当其中的数据被修改的前后,或者该窗体失去/获得焦点,或者在窗体中执行了鼠标或键盘操作,都可以设置使其触发运行宏。
(2) 将宏与菜单或命令按钮相连,使得单击菜单或按钮触发运行宏。
(3) 将宏与窗体、报表中的某个控件相连,当单击该控件,或其中的数据发生变化,或该控件失去/获得焦点时运行宏。
(4) 用快捷键触发执行宏。
(5) 制作autoexec宏,使得打开数据库时自动运行宏。
举例:
1、把“欢迎进入”宏添加到菜单
2、把“欢迎进入”宏改为自动宏
3、在窗体中加入宏(窗体1)
GoToControl:将焦点移动到窗体指定的字段“学号”上,为执行下面的findRecord宏命令做准备
FindRecord:作用是在当前窗体的数据集中查找符合条件的记录。参数“查找内容”为:=[forms]![窗体1]. [text2],前提是已经将焦点移到了“学号”字段
5.3复杂宏的创建和使用
5.3.1宏组的创建和运行
宏组是由若干彼此相关的宏组成,目的是方便管理,其中的每个宏有自己的宏名,执行宏组中的宏时需要在宏名前加宏组名,形式为
宏组名.宏名
举例:
创建一个宏组“按性别浏览”
把设计好的宏组添加到窗体中
5.3.2条件操作红
对于简单宏,每次执行时按照排列的先后顺序依次无条件执行每个宏命令。但有时需对宏命令是否执行进行控制,解决的办法就是设置条件宏
条件宏是设置了宏命令的执行条件的宏。可以在宏条件中使用任何逻辑表达式
举例
创建“密码验证”宏
SetValue:作用是为窗体或报表上的控件、字段或属性设置值。
stopMacro:终止宏的运行。
将宏和窗体按钮控件连接
MsgBox(“真的要退出管理系统吗?”,1+64+0,”信息提示”)
1+64+0的含义:
第一个参数:0确定;1确定与取消 ;2终止、重试、忽略 ;3是、否、取消;4是、否;5重试、取消
第二个参数:16重要消息;32警告查询;48警告消息;64信息消息
第三个参数:0默认第一个按钮;256第二个按钮;512:第三个按钮
返回值:1确定;2取消;3终止;4重试;5忽略;6是;7否
第六章
6.1 程序设计概述
6.1.1 VBA编程环境
VBE的5个组成部分:工具栏、属性窗口、资源管理器、代码窗口、立即窗口
6.1.2面向对象程序设计的概念
1.对象和集合
对象:在采用面向对象程序设计方法的程序中,程序处理的目标被抽象成了一个个对象,每个对象具有各自的属性、方法和事件。
类:是对一类相似对象的定义和描述。因此类可看做是对象的模板,每个对象由类来定义。
集合:是由一组对象组成的集合,这些对象的类型可以相同,也可以不同。
Access有几十个对象,其中包括对象和对象集合。所有对象和对象集合按层次结构组织,处在最上层的是Application对象,即Access应用程序,其他对象或对象集合都处在它的下层或更下层。
2.属性和方法
对象的特征用属性和方法描述。
属性:用来表示对象的状态,如窗体的Name(名称)属性、Caption(标题)属性等。
方法:用来描述对象的行为,如窗体有Refresh方法,Debug对象有Print方法等。
引用对象的属性或方法时应该在属性名或方法名前加对象名,并用对象引用符“.”连接,即对象.属性或对象.行为
例如 DoCmd.OpenReport “教师信息“
是指利用DoCmd对象的OpenReport方法打开报表“教师信息”
再如
Me!label1.caption=“信阳”
debug.print “您好!”
3.事件与过程
事件:是对象可以识别的动作,通常由系统预先定义
事件过程:对象在识别了所发生的事件后执行的程序
例如,下面的事件过程描述了单击按钮之后所发生的一系列动作。
Private Sub Command1_Click()
Me!Label1.Caption = “信阳"
Me!Text1 = ""
End Sub
6.2 VBA编程基础
6.2.1数据类型
(1)布尔型数据
布尔型数据只有两个值True或False。布尔型数据转换为其他类型数据时,Ture转换为-1,False转换为0;其他类型数据转换为布尔型数据时,0转换为False,其他类型转换为Ture。
(2)日期型数据
“日期/时间”类型数据必须前后用“#”号封住。
如#2007-1-1#、#2002-5-4 14:30:00 PM#。
(3)变体类型数据
变体类型数据是特殊的数据类型。VBA中规定,如果没有显示声明或使用符号来定义变量的数据类型,则默认为变体类型。
(4)用户定义的数据类型 应用过程中可以建立包含一个或多个VBA标准数据类型的数据类型,这就是用户定义数据类型。它不仅包含VBA的标准数据类型,还包含其他用户定义的数据类型。
用户定义数据类型可以在Type ... End Type关键字间定义,定义格式如下: Type NewStudent
StuNo As String *8
StuName As string
StuSex As string *1
StuAge As integer End Type
Dim Newstu As NewStudent
Newstu.StuNo=“07010101”
Newstu.StuName=“张三”
Newstu. StuSex=“女”
Newstu.StuAge=20
6.2.2常量
常量是在程序中可以直接引用的实际值,其值在程序运行过程中不变。在VBA中,常量可以分为3种:直接常量、符号常量和系统常量
1直接常量
如数字型常量、字符型常量、日期型常量、布尔型常量
2符号常量
可以定义用符号代替
常量,如用符号PI代替3.1415926。定义符号常量,好处在于当程序中多处用到该变量时,一方面正加了代码的可读性,也便于维护。
定义如下:
const PI as single=3.1415926
s=PI*r*r -》s=3.1415926*r*r
3固有常量(系统常量)
vbRed、vbBlue等
6.2.3变量
变量是程序运行过程中值会发生变化的数据。如同一间旅馆客房,昨天可住旅客A,今天住旅客B,明天又有可能被闲置。计算机处理变量数据的方法是将数据存储在内存的一块临时存储空间中。
1、变量的命名规则如下:
(1)以字母或汉字开头,后可跟字母、数字或下划线。
(2)变量名最长为255个字符。
(3)不区分变量名的大小写,不能使用关键字。
(4)字符之间必须并排书写,不能出现上下标。
以下是合法的变量名:
a,x, x3, BOOK_1,sum5
以下是非法的变量名:
3s s*T -3x bowy-1 if
2、变量的声明
VBA变量声明有两种方法。
a.显式声明
VBA中定义变量的格式为:
Dim 变量名 [AS 类型]
格式中Dim是一个VBA命令,此处用于定义变量;As是关键字,此处用于指定变量的数据类型。
例如:Dim bAge as Integer
b.隐含声明
VBA允许用户在编写应用程序时,不声明变量而直接使用,这就是隐式声明。所有隐式声明的变量都是Variant数据类型。例如:
Dim m,n, ’m,n为变体Variant变量
NewVar=528 ’ NewVar为Variant类型变量,其值为258
6.2.4函数
三要素:函数名,参数和函数值。要注意在调用时实参必须和形参的个数位置数据类型向一致。
函数分数学函数、字符串函数、日期函数、转换函数。
数学函数:Abs()
int() fix()(当参数为正数时,int与fix返回值相同,当参数为负时,int 返回小于等于参数值的第一个负数,而fix返回大于等于参数值的第一个负数)
exp();log();sqr();
rnd()产生0~1间随机数,参数小于0,产生相同的随机数,参数大于0,每次产生新的随机数,参数等于0,产生最近生成的随机数,参数省略,默认参数大于0
例如:
字符串函数:
inStr(start,str1,str2,compare)
功能:检索str2在str1中最早出现的位置。
start:检索开始起点,缺省为从第一个开始
compare:可选参数,值可为0、1、2,0为二进制比较,1为不分大小写的比较,2为基于包含数据库信息的比较。
如果str1字符串长度为0或str2字符串检索不到,instr返回为0,如果str2长度为0,函数返回start的值。
例:
str1=“123456” str2=“56”
s=instr(str1,str2) 返回5
s=intstr(3,”aBCdAb”,”a”,1) 返回5
Len(字符串表达式或变量名)
返回字符串所包含字数
Left(字符串表达式,N) Right(字符串表达式,N)
Mid(字符串表达式,N1,N2)
Space(N)
Ucase(字符串表达式) Lcase(字符串表达式)
Ltrim(字符串表达式) Rtrim(字符串表达式) Trim(字符串表达式)
日期函数:
date() time() now()
year(日期表达式) month(日期表达式) day(日期表达式)
weekday(日期表达式,N)
例如:
year(#2007/1/15#) month((#2007/1/15#) day((#2007/1/15#)
weekday((#2007/1/15#) 返回2 #2007/1/15#是星期一
weekday (#2007/1/15#,5) 返回5
时间分量函数
Hour() Minute() Second()
Hour(#20:17:56#) Minute (#20:17:56#) Second (#20:17:56#)
类型转换函数:
Asc(字符串表达式)
返回字符串首字符的ASCⅡ
Asc(“abc”) 返回97
Chr(字符代码)
返回字符代码对应的字符
Chr(98) 返回b
Str(数值表达式)
把数值转换为字符串,当表达式为正时,返回字符串前面有一前导空格。
str(8) 返回“ 8” str(-8) 返回“-8”
Val(字符串表达式)
把数字字符串转换为数字,在转换时,会自动去掉字符串中的空格
val(“156”) val(“7 1 6”)
输入框函数
inputbox
dim id as string
id=inputbox(“请输入学生id号:”,“信息提示”)
消息框函数
msgbox
MsgBox("真的要退出吗?", 1 + 64 + 0, "信息提示")
常量与按钮的关系
vbokonly 确定
VbOkCancel VbAboutRetryIgnore VbYesNoCancel
VbYesNo VbRetryCancel
Dlookup
Dlookup是ACCESS为用户提供的内置函数,通过函数可以方便的从一个表或查询中取得符合一定条件的值赋予变量或控件值
DLookup(expr, domain, [criteria])
用于数值型条件值:
DLookup("字段名称" , "表或查询名称" , "条件字段名 = n")
用于字符串型条件值:(注意字符串的单引号不能丢失)
DLookup("字段名称" , "表或查询名称" , "条件字段名 = '字符串值'")
用于日期型条件值:(注意日期的#号不能丢失)
DLookup("字段名称" , "表或查询名称" , "条件字段名 = #日期值#")
从窗体控件中引用条件值用法
用于数值型条件值:
DLookup("字段名称" , "表或查询名称" , "条件字段名 =" & forms!窗体名!控件名)
用于字符串型条件值:(注意字符串的单引号不能丢失) DLookup("字段名称" , "表或查询名称" , "条件字段名 = '" & forms!窗体名!控件名 & "'")
用于日期型条件值:(注意日期的#号不能丢失)
DLookup("字段名称" , "表或查询名称" , "条件字段名 = #" & forms!窗体名!控件名 & "#")
DateSerial(year,month,day)
指定年月日
DateSerial(1990 - 10, 8 - 2, 1 - 1)
6.2.5表达式
表达式是将常量、变量、字段名称、控件的属性值和函数用运算符连接而成的运算式。运算式可分算术表达式、字符表达式、关系表达式、布尔表达式和对象引用表达式。
1、算术表达式
运算符的优先级由高到低:
() --->^--->* / \ mod---->+ -
2、字符表达式
只要一个 &,
3、关系表达式
< <= > >= = <> like
like 字符串匹配 “this” like “is” 逻辑值为true
4、布尔表达式
not and or
5、对象引用表达式
!:引用某个对象; . :引用对象的属性或方法
6.3 程序流程控制
VBA的程序语句有赋值语句、声明语句、控制语句、注释语句。
赋值语句
变量名=表达式 或 对象名.属性=表达式
如:
Rate=0 text1.value=“欢迎使用access”
说明:
1) 先计算后赋值
2) =为赋值,不是数学上的等于号
注释语句两种方法:
1) 在行前用rem开始
2) 在行前或行尾用单引号开始
6.3.1程序的顺序控制
程序的三大基本控制结构:顺序结构、分支结构、循环结构。
例如:计算圆的面积和周长
6.3.2 程序的分支控制
在VBA中,程序的分支控制有if语句和select case语句。
1、If…Then…Else语句
1.If…Then 语句
语句格式为
If <表达式> Then
<语句块1>
End If
例如:
‘输入一个数并在立即窗口输出其值
Dim x As Integer
x = InputBox("请输入x的值:")
If x Then
Debug.Print x
End If
2.If…Then…Else 语句
语句格式为
If <表达式> Then
<语句块1>
Else
<语句块2>
End If
说明:
(1)<表达式>可以是任何表达式,一般为关系表达式或布尔表达式。
如果是其他表达式,则非0认为是True,0认为是False。
(2)执行时,先判断表达式的值,为True则执行语句块1,否则执行语
句块2。
例如:输入两个数并在立即窗口输出其中较大的数
Dim x As Integer, y As Integer
x = InputBox("请输入x的值:")
y = InputBox("请输入y的值:")
If x > y Then
Debug.Print x
Else
Debug.Print y
End If
3.If…Then…ElseIf 语句
语句格式为
If <表达式1> Then
<语句块1>
ElseIf <表达式2>Then
<语句块2>
…
[ElseIf <表达式n>Then
<语句块n>
Else
<语句块 n+1> ]
End If
举例2:
3 Select Case
语句格式:
Select Case <变量或表达式>
Case <表达式1>
语句块1
Case <表达式2>
语句块2
…
Case Else
语句块n+1
End Select
说明:
(1)Select Case后的变量或表达式只能是数值型或字符型表达式。
(2)执行过程是先计算Select Case后的变量或表达式的值,然后从上至下逐个比较,决定执行哪一个语句块。如果有多个Case后的表达式列表与其相匹配,则只执行第一个Case后的语句块。
(3)语句中的各个表达式列表应与Select Case后的变量或表达式同
类型。各个表达式列表可以采用下面的形式
表达式: a +5
用逗号分隔的一组枚举表达式: 2, 4, 6, 8
表达式1 To 表达式2 60 to 100
Is 关系运算符表达式 Is < 60
例selectcase
Private Sub Command2_Click()
Dim x As Integer
Label3.FontSize = 30
Label3.ForeColor = 255
Label3.FontBold = 1
x = Text0
Select Case x
Case 90 To 100
Label3.Caption = "优秀"
Case 80 To 89
Label3.Caption = "良好"
Case 70 To 79
Label3.Caption = "中等“
Case 60 To 69
Label3.Caption = "及格"
Case Else
Label3.Caption = "不及格"
End Select
End Sub
4 条件函数
除了上述条件语句外,VBA还提供了3个函数来完成相应选择操作:
(1)IIf函数: IIf(条件式,表达式1,表达式2)。 该函数根据“条件式”的值来决定函数返回值。 “条件式”值为真,函数返回“表达式1” 的值,“条件式”值为假,函数返回“表达式2” 的值。
(2)Switch函数: Switch(条件式1,表达式1[,条件式2,表达式2][,条件式3,表达式3]…[,条件式n,表达式n]) 该函数是分别根据“条件1”,“条件2”直至“条件n”的值来决定函数的返回值。
例如:
X=inputbox(“请输入x的值”,”输入”)
Y=Switch(x>0,1,x=0,0,x<0,-1) (3)Choose函数:Choose(索引式,选项1[,选项2]…[,选项n]) 该函数式根据“索引式”的值来返回选项列表中的某个值。如果索引
式值为1,函数返回“选项1”的值,索引式的值为2,函数返回“选项2”的值
依次类推。只有索引式的值在1和可选择的项目数之间时,函数才返回其后的选项值,如索引式的值不在这个范围,函数返回无效值(Null)。
例如:
dim x as integer,m as integer,n as integer
x=2
m=3
n=7
y=choose(x,5,m+1,n) ‘变量y的值为4
6.3.3程序的循环控制
循环控制结构也叫重复控制结构。特点是程序执行时,该语句中的一部分操作即循环体被重复执行多次。循环语句可以实现重复执行一行或几行程序代码。VBA支持以下循环语句结构:
(l)For…Next语句。 (2)Do…Loop语句。 (3)While…Wend语句。
1.For--Next循环语句
语句格式为
For <循环变量>=<初值> to <终值> [Step <步长>]
<循环体>
if 条件表达式 then
Exit For
end if
Next <循环变量>
说明:
(1)循环控制变量的类型必须是数值型。
(2)步长可以是正数,也可以是负数。如果步长为1,Step短语可以省略。
(3)根据初值、终值和步长,可以计算出循环的次数,因此For语句一般用于循环次数已知的情况。
(4)使用Exit For语句可以提前退出循环。
For语句的执行步骤如下:
1)循环变量取初值
2)循环变量与终值比较,确定循环是否进行,有以下3中情况:
a.步长>0时,如果循环变量小于等于终值,循环继续,执行步骤(3),如果循环变量值大于终值,循环结束,退出循环。
b.步长=0时,如果循环变量小于等于终值,进入死循环。如果循环变量值大于终值,一次也不执行循环,退出循环。
c.步长<0时,如果循环变量大于等于终值,循环继续,执行步骤(3),如果循环变量值小于终值,循环结束,退出循环。
3)执行循环体
4)循环变量值增加步长,即循环变量=循环变量+步长,程序跳转到(2)
例:编程用for语句求1+2+3+…+10之和。
Public Sub 累加求和()
Dim s As Integer, i As Integer
s = 0
For i = 1 To 10 Step 1
s = s + i
Next
Debug.Print s
End Sub
例求表达式1/2+2/3+3/4+4/5的值(for2)。
Public Sub for2()
Dim sum As Double, x As Double
sum = 0
n = 0
For i = 1 To 5
x = n / i
n = n + 1
sum = sum + x
Next i
Debug.Print sum
End Sub
例:读程序求结果(for3) 。
Public Sub for4()
Dim sum As Integer, i As Integer,
Dim j As Integer, k As Integer
sum = 0
For i = 1 To 3
For j = i To 4
For k = j To 5
sum = sum + 1
Next k
Next j
Next i
Debug.Print sum
End Sub
最后输出值为28
Public Sub for4()
Dim a As Integer, i As Integer
For i = 1 To 3
Select Case i
Case 1, 3
a = a + 1
Case 2, 4
a = a + 2
End Select
Next i
Debug.Print a
End Sub
Public Sub for5()
Dim i As Integer, x As Integer
For i = 1 To 6
If i = 1 Then
x = i
If i <= 4 Then
x = x + 1
Else
x = x + 2
End If
End If
Next i
Debug.Print x
End Sub
2.Do While…Loop语句
形式如下:
Do While <条件>
循环体
if (条件) then
Exit Do
Loop
说明:
(1)这里的条件可以是任何类型的表达式,非0为真,0为假。
(2)执行过程是:在每次循环开始时测试条件,对于Do While语句,如果条件成立,则执行循环体的内容,然后回到Do Whlie处准备下一次循环;如果条件不成立,则退出循环。
(3)Exit Do语句的作用是提前终止循环。
例如 :下面的程序用Do While…Loop语句求1+2+3…+10之和。
Dim s As Integer, i As Integer
s = 0
i = 1
Do While i <= 10
s = s + i
i = i + 1
Loop
Debug.Print s
3.Do Until…Loop语句
形式如下:
Do Until <条件>
循环体
if (条件) then
Exit Do
Loop
说明:
(1)这里的条件可以是任何类型的表达式,非0为真,0为假。
(2)执行过程是:在每次循环开始时测试条件,对于Do Until语句,如果条件不成立,则执行循环体的内容,然后回到Do Until处准备下一次循环;如果条件成立,则退出循环。
(3)Exit Do语句的作用是提前终止循环。
例如 :下面的程序用Do Until…Loop语句求1+2+3…+10之和。
Dim s As Integer, i As Integer
s = 0
i = 1
Do Until i > 10
s = s + i
i = i + 1
Loop
Debug.Print s
4.Do—Loop While语句
格式如下:
Do
循环体
Exit Do
语句块
Loop While<条件>
说明:
和Do While…Loop不同的是, Do—Loop While语句在每次循环结束时测试条件。因此,二者的区别是如果一开始循环条件就不成立,则Do While…Loop中的循环体部分一次也不执行,而Do—Loop While 中的循环体部分被执行一次。
5.Do—Loop Until语句
格式如下:
Do
循环体
Exit Do
语句块
Loop Until<条件>
说明:
和Do Until…Loop不同的是, Do—Loop Until语句在每次循环结束时测试条件。因此,二者的区别是如果一开始循环条件就不成立,则Do Until…Loop中的循环体部分一次也不执行,而Do—Loop Until中的循环体部分被执行一次。
例:do1
6.4 数组
数组是在有规则的结构中包含一种数据类型的一组数据,也称作数组元素变量。数组变量由变量名和数组下标构成,使用数组必须先定义数组。通常用Dim语句来定义数组,定义格式为: Dim 数组名([<下标下限>to]<下标上限>)[As <数据类型>]
缺省情况下,下标下限为0,数组元素从“数组名(0)”至“数组名(下标上限)”;如果使用to选项,则可以安排非0下限。
例如,dim score(10)as Integer
定义了11个整形数构成的数组,数组元素为score(0) 至score(10)
再如, dim score(1 to 10)as Integer
定义了10个元素的整型数组,数组元素为score(1)至 score(10)
注:(1)所有数组元素在内存连续存放
(2)根据下标区分数组元素
关于数组的定义,还有下面的几点说明:
(1)定义数组时数组名的命名规则与变量名的命名规则相同。
(2)一般在定义数组时应给出数组的上界和下界。但也可以省略下界,<下界>缺省 为0。
例如,Dim a(10) As Single
默认情况下,数组a由11个元素组成。
若希望下标从1开始,可在模块的通用声明段使用Option Base语句声明。其使用格式为:
Option Base 0|1 ' 后面的参数只能取 0 或 1
(3)<下界>和<上界>不能使用变量,必须是常量,常量可以是字面常量或符号常量,一般是整型常量。
(4)如果省略As子句,则数组的类型为Varient变体类型。
二维数组的定义
格式为:
Dim 数组名([<下界>to]<上界>,[<下界>to]<上界>)[As <数据类型>]
例如,Dim c(1 To 3, 1 To 4)As Single
c(1,1)c(1,2)c(1,3)c(1,4)
c(2,1)c(2,2)c(2,3)c(2,4)
c(3,1)c(3,2)c(3,3)c(3,4)
数组的赋值
数组的每一个空间可以通过循环得到具体的值,也可以直接赋值,也可以用表达式赋值
如:
dim a(1 to 3) as integer
a(1)=10
a(2)=20
a(3)=a(1)+a(2)
如用循环赋值,可以如下形式
for i=1 to 3
a(i)=10*i
next
数组的应用
例:编程产生10个0~99之间的随机数,并找出其中的最大值和最小值。(shuzu1)
代码如下:
Public Sub ee()
Dim a(1 To 10) As Integer
Dim i, max, min As Integer
'生成并输出数组
For i = 1 To 10
a(i) = Int(Rnd() * 100)
Debug.Print a(i)
Next
Debug.Print '另起一行
'寻找最大值和最小值
max = a(1)
min = a(1)
For i = 2 To 10
If max < a(i) Then max = a(i)
If min > a(i) Then min = a(i)
Next
'输出结果
Debug.Print "max="; max
Debug.Print "min="; min
End Sub
6.5 模块的创建
6.5.1模块的创建方法
6.5.2过程的创建和调用
过程的定义形式如下:
[Public|Private][Static] Sub 子过程名([<形参>])
[<子过程语句>]
<语句块>
[Exit Sub]
<子过程语句>
End Sub
使用Public关键字可以使该过程适用于所有模块中的所有其他过程;使用Private关键字可以使该子过程只适用于同一个模块中的其他过程。
调用过程有以下两种格式:
格式1:call 过程名([实参列表])
格式2:子过程名 [实参列表]
例:jiaohuan
6.5.3函数过程的定义和调用
可以使用Function语句定义一个新函数过程、接收参数、返回变量类型及运行函数过程的代码。其格式如下: [Public | Private][Static]Function函数过程名[<形参>][As数据类型] [<函数过程语句>] [函数过程语句=<表达式>] [Exit Function]
[<函数过程语句> [函数过程语句=<表达式> ] End Function
函数过程的调用格式只有一种:
函数过程名(<实参>) 由于函数过程返回一个值,实际上,函数过程的上述调用形式主要有两种方法:一是将函数过程返回值作为赋值成分赋予某个变量,其格式为“变量=函数过程名(<实参>)”;二是将函数过程返回值作为某个过程的实参成分使用。
例:hanshu1
6.5.4参数传递
过程定义时可以设置一个或多个形参(形式参数的简称),多个形参之间用逗号分隔。含参数的过程被调用时,主调过程中的调用式必须提供相应的实参(实际参数的简称),并通过实参向形参传递的方式完成过程操作 。
在函数的调用过程中,一般会发生数据的传递,即将主调过程中的实参传给被调过程的形参。
在参数传递过程中,可以有传址和传值两种形式。
1.传址
如果在定义过程或函数时,形参的变量名前不加任何前缀,即为传址;若加前缀,须在形参变量名前加ByRef。
传递过程是:调用过程时,将实参的地址传给形参。因此如果在被调过程或函数中修改了形参的值,则主调过程或函数中实参的值也跟着变化。
例如:如果输入5和7,程序的结果会是多少?
Public Sub swap(x As Integer, y As Integer)
Dim t As Integer
t = x: x = y: y = t
End Sub
Private Sub Command0_Click()
Dim x As Integer, y As Integer
x = InputBox("x=")
y = InputBox("y=")
Debug.Print x, y
swap x, y
Debug.Print x, y
End Sub
2.传值
如果在定义过程或函数时,形参的变量名前加ByVal前缀,即为传值。这时主调过程将实参的值复制后传给被调过程的形参,因此如果在被调过程或函数中修改了形参的值,则主调过程或函数中实参的值不会跟着变化。
例如:如果输入5和7,程序的结果会是多少?
6.5.5局部变量、全局变量和静态变量
变量的作用域
(1)过程内局部变量(Local)
变量定义在模块的过程内部,过程代码执行时才可见。在子过程或函数过程中定义的或直接使用的变量作用范围都是局部的。在子过程或函数内部使用Dim、Static…As关键字说明的变量就是局部范围的。
(2)模块级局部变量(Module)
变量定义在模块的所有过程之外的起始位置,运行时在模块所包含的所有子过程或函数过程中可见。在模块的通用说明区,用Dim、Static、Private…As关键字定义的变量作用域都是模块范围。
例:
Dim a(1 To 10) As Integer ‘定义数组
Private Sub Command4_Click()
Dim i As Integer, j As Integer, imax As Integer, t As Integer
For i = 1 To 10
imax = i
For j = i To 10
If a(imax) < a(j) Then imax = j ’对数组排序
Next j
t = a(i): a(i) = a(imax): a(imax) = t
Next i
For i = 1 To 10
Me.lstright.AddItem a(i) ‘把已排序的数组中的值赋给列表框
Next i
End Sub
Private Sub Form_Load()
Dim i As Integer
For i = 1 To 10
a(i) = Int(Rnd() * 100)
Me.lstleft.AddItem a(i) ’对数组产生10个随机数并赋给左边列表框
Next i
End Sub
(3)全局变量
全局变量是可在整个应用程序中使用的变量,定义的方法是在模块的通用声明段用public关键字定义变量。
引用全局变量时,如果是在标准模块中定义的全局变量,可在应用程序的任何地方直接用变量名引用该变量。如果是在类模块(如窗体模块)中定义的全局变量,可在应用程序的任何地方应用该变量,但在变量名的前面应加模块名限定,形式如:模块名.变量名。
(4)静态变量
局部变量和全局变量决定了变量的有效范围,静态变量则决定了变量的生存期。对于过程的局部变量,他的生存期从进入Sub开始,到退出End Sub结束。如果要改变过程内局部变量的生存期,可以将它定义为静态变量。
举例1:Jtbl
Public x As Integer
Private Sub Command0_Click()
Static y As Integer
Dim z As Integer
n = 5
x = x + n
y = y + n
z = z + n
Label2.Caption = x
Label3.Caption = y
Label4.Caption = z
End Sub
例2 设计一个计时器,要求:首先单击
设置按钮,在输入框内输入计时的秒数,
单击开始按钮,开始计时,同时计时的秒
数在文本框中显示。计时时间到,停止计
时并响铃,同时将文本清零。
Option Compare Database
Dim f As Integer
Private Sub Command2_Click()
f = InputBox("请输入计时范围:")
End Sub
Private Sub Command3_Click()
Me.TimerInterval = 1000
End Sub
Private Sub Form_Load()
Me.TimerInterval = 0
End Sub
Private Sub Form_Timer()
Static s As Integer
s = s + 1
If s = f Then
Beep
s = 0
Me.TimerInterval = 0
End If
Me.Text0 = s
End Sub
VBA的数据库编程
要访问网络数据库,大致具体过程如下:
1、建立与数据库的连接
2、指定访问数据库的命令,并向数据源发出命令
3.、从数据源以行的形式获取数据,并将数据暂存在内存的缓存中
4、如果需要可对获取的数据进行查询、更新、插入、删除等操作
5、如果对数据源进行了修改,将更新后的数据发回数据源
6、断开与数据源的连接。
实际使用时,上面过程中的各个步骤分别由ADO的具体对象完成。
ADO的主要对象
1 Connection对象
该对象的主要作用是用于建立与数据源的连接,这是访问数据源的首要条件。要创建到数据源的连接,应该先定义一个ADO的connection对象。方法如下:
使用DAO访问数据库的步骤如下:
1 创建对象变量
dim WO AS WORKSPACE
DIM DA AS DATABASE
DIM RE AS RECORDSET
2 通过Set语句设置对象变量的值
SET WO=Dbengine.worksapce(0)
打开默认工作区
Set da=wo.OpenDatabase(学生信息管理系统)
打开数据库文件
Set re=DA.Openrecordset(学生信息表)
关闭数据库、记录集
da.Close re.Close
4 回收对象变量的内存
Set re=Nothing
Set da=Nothing
例:修改“学生管理系统”数据库中的成绩表(将奖学金增加10元),程序如下:
Public Sub ko()
Dim wo As DAO.workspace
Dim da As DAO.database
Dim re As DAO.Recordset
Dim fi As DAO.Field
Set da = CurrentDb()
Set re = da.OpenRecordset("aa")
Set fi = re.Fields("年龄")
Do While Not re.EOF
re.Edit
fi = fi + 10
re.Update
re.MoveNext
Loop
re.Close
da.Close
Set re = Nothing
Set da = Nothing
End Sub
ADO访问数据库
ADO即ActiveX数据库对象,可以和多种编程语言结合使用。
步骤如下:
1 在数据库“模块”对象下,设置“引用”数据库
2单击工具栏上的“新建”按钮,进入编辑模块窗口
3 选择“工具”菜单下“引用”命令,弹出“引用对话框”
4 在列表中选择“Microsoft activeX data Objects X,Y Library”
5单击“确定”,即可在access 中使用多种类型的数据
Public Sub po()
Dim co As New ADODB.Connection
Dim re As New ADODB.Recordset
Dim fi As ADODB.Field
Dim strconnect As String
Dim strsql As String
Set co = CurrentProject.Connection
strsql = "select 年龄 from aa"
re.Open strsql
Set fi = re.Fields("年龄")
Do While Not re.EOF
fi = fi - 10
re.Update
re.MoveNext
Loop
re.Close
co.Close
Set re = Nothing
Set co = Nothing
End Sub
Dim Mycnn as ADODB.Connection
Set Mycnn=New ADODB.Connection
上面语句先用Dim语句声明一个对象变量Mycnn,然后用Set命令将其初始化为ADO的Connection对象。对象名前的ADODB是ADO的类库名。
用Provider属性设置Connection对象的数据库提供者的名称,用ConnectionString属性指示用于建立到数据库的连接信息,具体设置如下:
MyCnn.Provider=“Microsoft.jet.OLEDB.4.0”
MyCnn.ConnectionString=“data Source=d:\教学管理.mdb”
最后用Mycnn对象的Open方法打开这个连接
MyCnn.Open
下面是用Connection对象建立与ACCESS数据库教学管理的连接的完整程序。
Public Sub CnnToDB()
Dim Mycnn as ADODB.Connection ‘定义Connection对象
Set Mycnn=New ADODB.Connection ’初始化
MyCnn.Provider=“Microsoft.jet.OLEDB.4.0” ‘指定数据提供者的名称
MyCnn.ConnectionString=“data Source=d:\教学管理.mdb” ’指定数据源
MyCnn.Open ‘打开连接
End Sub
断开与数据库的连接用Connection对象的Close方法命令为:
Mycnn.Close
2 Command 对象
连接到数据源后,需要执行对数据源的请求,以获取结果集,这一类的命令功能封装在Command对象中。
Command对象的作用是用来定义并执行针对数据源运行的具体命令,如SQL查询,并通过Recordset对象返回一个满足条件的记录集。
使用Command对象,需首先建立一个Command对象的实例,然后通过设置Command对象的ActiveConnection属性使打开的连接与Command
在通过使用CommandText属性定义命令的可执行文本。最后调用Command对象的Execute方法执行命令并返回记录集
例:
Dim MyCmd as ADODB.Command ‘定义Command对象
Set Mycmd=New Adodb.Command ’初始化对象
MyCmd.ActiveCommand=MyCnn ‘设置所使用的连接
MyCmd.CommandText=“select * from 课程” ’定义命令
MyCmd.Execute ‘执行命令并返回记录集
3 Recordset对象
用MyCmd.Execute方法从数据源获取的数据就存放在Recordset对象中,并且所有Recordset对象均由记录和字段组成。
使用Recordset对象也需先定义并初始化一个Recordset对象,下面的语句定义并初始化了一个Recordset对象MyRS
Dim MyRS as Adodb.Recordset
Set MyRS=New adodb.Recordset
有多种获取记录集的方法
(1)接收Command对象的返回记录集
Set MyRB=MyCmd.Execute
在定义并设置了command对象的ActiveConnection属性和CommandText属性之后,可以通过执行Command对象的Execute方法执行命令,并将返回的记录集指定给一个Recordset对象。
例如,下面程序实现了创建连接、定义命令和获取数据的全部过程
Public Sub CnnToDB()
Dim MyCmd as ADODB.Command ‘定义Command对象
Set Mycmd=New Adodb.Command ’初始化对象
Dim MyRS as Adodb.Recordset 定义Recordset对象
Set MyRS=New adodb.Recordset ‘初始化对象
MyCnn.Provider=“Microsoft.jet.OLEDB.4.0” ‘指定数据提供者的名称
MyCnn.ConnectionString=“data Source=d:\教学管理.mdb” ’指定数据源
MyCnn.Open ‘打开连接
MyCmd.ActiveCommand=MyCnn ‘设置所使用的连接
MyCmd.CommandText=“select * from 课程” ’定义命令
MyCmd.Execute ‘执行命令并返回记录集
stop ’断点
MyCnn.Close ‘释放内存空间
End Sub
(2)使用Recordset对象的Open方法打开Recordset对象,格式如下:
Recordset.Open Source ActiveConnection
其中Source可以是SQL命令、Command对象、表名等
Public Sub CnnToDB()
Dim MyCmd as ADODB.Command ‘定义Command对象
Set Mycmd=New Adodb.Command ’初始化对象
Dim MyRS as Adodb.Recordset 定义Recordset对象
Set MyRS=New adodb.Recordset ‘初始化对象
Dim strSQL as string
MyCnn.Provider=“Microsoft.jet.OLEDB.4.0” ‘指定数据提供者的名称
MyCnn.ConnectionString=“data Source=d:\教学管理.mdb” ’指定数据源
MyCnn.Open ‘打开连接
strSQL=“select * from 课程”
MyRS.Open strSQL,MyCnn
stop ’断点
MyCnn.Close ‘释放内存空间
End Sub1
6.7.3 使用记录集中的数据
从数据源获取了数据后,就可以对数据进行输出、插入、删除和更新等操作了,
记录集的几个常用属性和方法
Bof(begin of File)判断当前游标(即记录指针)是否在第一条记录之前,如果是,返回True,否则返回False
Eof(End of File)判断当前游标(即记录指针)是否在最后一条记录之后,如果是,返回True,否则返回False
如果记录集为空,则Bof和Eof的值均为True。
Movefirst 将游标移到第一条记录
Movelast 将游标移到最后一条记录
Movenext 将游标移到下一条记录
Moveprevious 将游标移到上一条记录
Public sub output()
Dim MyRS as Adodb.Recordset
Set MyRS=New adodb.Recordset
Dim strSQL as string
strSQL=“select * from 课程”
MyCnn.Open strSQL,currentProject
Do While not myrs.eof
debug.print myrs(“课程编号”),myrs(“课程名称”)
myrs.movenext
loop
mycnn.close
End sub
2、插入、删除和更新记录集中的数据
实现对记录集的插入、删除和更新操作主要使用Recordset对象的一下几个方法。
(1)Addnew方法 该方法主要是对记录集添加一条记录。格式如下:
recordset.AddNew FieldList,Values
如果两个参数省略,则在记录集中添加一个空记录
(2)Delete方法
该方法删除记录集中一条或多条记录,格式:
Recordset.Delete AffectRecords
参数为删除数据的范围,默认值为当前记录
(3)Update方法
作用是将Recordset对象中对当前记录的修改保存到数据库中。
下面的程序演示了向“课程”表中添加新记录的过程
public sub add()
dim myrs as adodb.recordset
set myrs =new adodb.recordset
dim strsql as string
dim str 课程编号 as string,str课程名称 as string
strsql=“select * from 课程”
myrs.open strsql,currentproject
str 课程编号=trim(inputbox(“输入课程编号:”))
str 课程名称=trim(inputbox(“输入课程名称:”))
if str 课程编号<>”” and str 课程名称<>”” then
myrs.addnew
myrs(“课程编号”)=str 课程编号
myrs(“课程名称”)=str 课程名称
myrs.update
end if
end sub培训ppt课件模板:这是培训ppt课件模板,包括了文章背景知识,认字识词朗诵,课文赏析,拓展训练/分组练习等内容,欢迎点击下载。
幼儿教师师德培训ppt1:这是幼儿教师师德培训ppt1,包括了引言,幼儿园教师师德现状,幼儿园师德建设存在的问题,原因分析,对策建议等内容,欢迎点击下载。
钉钉培训ppt:这是钉钉培训ppt,包括了钉钉软件介绍,钉钉常用功能,公司启用钉钉考勤操作指南,公司启用钉钉时间等内容,欢迎点击下载。