Access第八章_模块与VBA编程基础
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
RunMacro
运行宏操作等,
例如:Docmd.RunMacro “mac1” 请认真观看示例(p198)
Page 14
3.事件和事件过程 事件就是窗体或者报表中对象可以识别的动作
刚才的那个示例里,我们是把代码放在了事件过
程中的
Page 15
8.3.2 Visual Basci编辑环境 一、VBA编程环境
0 0 0 空 空字符串
Variant (变体)
不定
空
Page 20
1.数值型数据的符号: 整型 %、长整型 &、单精度型 !、双精度型 #
例:10.33#
100 %
2.布尔型数据的值:
两种值:True和False,其他数值类型转换为布尔 型时,0变成False,其他值均为True。布尔型转 换为其他型时,False成为0,True成为-1。 3.日期型变量的值:
简化重复的部分
Page 24
三、数据库对象数据类型 数据库:Database 连接:Connection
窗体:Form
控件:Control
报表:Report
查询:QueryDef
表: TableDef
命令:Command
ADO.Recordset
结果集: DAO.RecordsetBaidu Nhomakorabea
Page 25
8.3.4 变量与常量 变量指程序运行时值会发生变化的数据(值和数据 类型的变化)。变量名可随意定义,但不能与VBA 关键词冲突,变量的值可按需变化。变量必须先 声明数据类型,然后才能使用。VBA变量大小写 不敏感。 常量就是在应用程序的运行中可直接引用的实际 值,其值在程序运行中不会变化。VBA有3种常量: 直接常量、符号常量和系统常量
标准模块中的公共变量和公共过程具有全局特性,其作用 范围在整个应用程序里,生命周期是伴随着应用程序的运 行而开始、关闭而结束。
Page 7
8.1.3 将宏转换成模块 在数据库窗口宏对象下选择宏选择“工具” 菜单下“将宏转换为vb”
Page 8
8.2 创建模块
一、模块与过程 模块是由过程组成 过程:将VBA语言的声明和语句集合在一起,作为一个命 名单位的程序段(执行特定功能的语句块)。它包含许多 语句和方法,以执行特定的操作或计算数值。
0
0 0
Double (双精度型) Currency (货币型) Date (日期型) Object (对象型) String (字符串)
8 8 8 4 不定
正数:4.94065648E-324 ~1.79769313E308 -922337203685477.5808 ~922337203685477.5807 100年1月1日 ~ 9999年12月31日 任何对象引用 0~ 65,535
中所有对象联系起来、统一管理,形成完整的数
据库系统。 宏的局限性: 只能处理一些简单操作 对数据库对象的处理能力很弱(例如表,查询)
Page 3
8.1 模块的基本概念
模块是Access的数据库中的一个重要对象。
模块是由VBA(Visual Basic for Applications)语言
编写的程序的集合。是以函数过程(Function)或子
Page 22
二、用户自定义数据类型 用户自定义类型可以是任何用Type语句定义的数据类型。 用户自定义类型可包含一个或多个基本数据类型的数据元 素、数组或一个先前定义的用户自定义类型。 用户定义数据类型可以在Type… End Type关键字间定义, 定义格式为:
Type [数据类型名]
<域名> As <数据类型> <域名> As <数据类型> … End Type
Page 12
8.3 VBA程序设计基础
VBA是微软Office套件内置的编程语言,语法与 VISUAL BASIC兼容。
8.3.1 面向对象程序设计的基本概念(VBA是种伪面
向对象语言,不适合协同开发)
1. 对象 在VBA程序设计时,界面上的所有事物都可以称 为对象。每一个对象都有自己的属性、方法和事 件。用户是通过属性、方法和事件来处理对象的。
过程的二种类型:
sub子过程:执行一系列操作的过程。 function函数过程:特殊的、能返回值的函数过程。 区别方法:能否返回值,是过程和函数之间最大的区别。
Page 9
子过程:也称为Sub过程,是执行一项操作的过 程。
子过程没有返回值,子程序以关键字Sub开始, 并以End Sub语句作为结束。
日期值用#括起来,如 #2004/11/23#
Page 21
4. Variant (变体)数据类型: 若未给变量指定数据类型,Access自动指定其为
Variant类型。
Variant可包含除定长String数据及用户定义类型之
外的任何种类的数据。也可包含Empty、Error、
Nothing 及Null特殊值。
Page 31
三、变量的作用域以及静态变量 变量的范围确定了能够使用该变量的那部分代码。
变量的作用范围是在模块中声明确定的。声明变
量时可以使用三种不同的作用范围:Public、
Private、Dim。
变量的作用域决定了这个变量是被一个过程使用 还是一个模块中的所有过程使用,还是被数据库 中的所有过程使用。
Page 26
一、变量的声明 每一个变量都必须在其使用的过程中事先声明。 声明变量的作用:指定变量的数据类型和作用域。 未声明的变量默认为Variant类型。若要求在使用变量前 必须声明,可进行设置。
声明一个变量用Dim语句,它的语法格式如下:
Dim 变量名 [As 数据类型] 语句中的“As 类型”子句是可选的。如果使用了该子句, 就可以定义变量的数据类型或对象类型。 声明变量后,系统将会为变量分配存储空间来存储变量
工具栏
工程窗口
代码 窗口
属性窗口
立即窗口
Page 16
二、进入VBE编程环境 三、VBE环境中编写VBA代码 例8.1 新建窗体并添加一个按钮,单击该按钮,弹出对话框显示信息 (1)新建一个窗体添加一个名为cmdTest的按钮 (2)按钮属性事件单击(…)代码生成器
Page 17
(3)确定编写代码
一、标准数据类型
数据类型 Byte (字节型) Boolean (布尔型) 存储空间(字节) 1 2 取值 0 ~ 255 True或False 范围 默认值 0 False
Integer (整型)
Long (长整型) Single (单精度型)
2
4 4
-32,768 ~ 32,767
-2,147,483,648 ~ 2,147,483,647 负数:-3.402823E38~-1.401298E-45 正数:1.401298E-45~3.402823E38 负数:-1.79769313E308 ~-4.94065648E-324
第八章 模块与VBA编程基础
Access数据库程序设计
模块与VBA编程基础
8.1 模块的基本概念 8.2 建立模块
8.3 VBA程序设计基础
8.4 VBA流程控制语句
8.5 过程调用和参数传递
8.6 VBA程序运行错误处理 8.7 VBA程序的调试
Page 2
Access的表、查询、窗体、报表和数据访问页不 能相互驱动和调用。使用模块和宏可以将数据库
函数格式: Function 函数名称() as 返回值的数据类型 [程序代码] End Function
Page 11
二、在模块中执行宏 在模块的定义过程中,使用Docmd对象的RunMacro方法可 以执行设计好的宏 Docmd.RunMacro MacroName [,RepeatCount][,RepeatExpression]
Page 29
2条语句是等价的
2.隐式声明 Dim x ,y 528 „x,y为变体Variant变量
Dim NewVar=528
„NewVar为Variant变量,值是
问题:如何确定以上声明的x,y和NewVar类型呢?
Page 30
二、强制声明
强制对模块中的所有变量进行显式声明的设置。 在VBA编程窗口 选择:工具| 选项 数据库所有新模块中自 动添加Option Explicit语 句,功能为:强制对模 块中的所有变量进行显 式声明。 也可直接将语句输入到 模块的声明节。
过程(Sub)为单元的集合方式存储。作为模块主要
是为了多次调用。
模块可分成两种基本类型:类模块和标准模块
区分:VB, VBA, VBE(Visual Basic Editor)
Page 4
8.1.1 类模块 窗体模块和报表模块是类模块的典型例子。 窗体和报表模块通常都含有事件过程,该过程用于响应窗 体或报表中的事件,可以使用事件过程来控制窗体或报表 的行为,以及它们对用户操作的响应。
Page 28
VBA声明变量有2种方式: 1. 显示声明
Dim MYName As String
Dim s1 As String *50 „说明定长字符串变量可存放 50字符 Dim x As Integer 或 Dim x% 可在同一行内声明多个变量。例如, Dim t1 As Boolean, D1 As Integer
Page 27
在VBA的代码中,过程、变量及常量的名称有如下规定: (l)最长只能有255个字符。 (2)必须用字母开头。 (3)可以包含字母、数字或下划线字符“_”。 (4)不能包含标点符号或空格。 (5)不能是Visual Basic关键字。关键字是那些在Visual Basic中用作语法的一部分的词,包括预定义语句(如If和 Loop)、函数(如Len和Abs)和运算符(如Or和Mod ) 等等
(4)ALT+F11返回窗体界面运行窗体,查看结果
Page 18
四、程序语句书写原则 1.语句书写规定
_ 续航符号:一行写不完一句程序时用来续航
: 在一行中分隔几句程序语句
2.注释
:Rem 注释语句
„
注释语句
视图工具栏编辑设置注释块/解除注释块
Page 19
8.3.3 数据类型和数据库对象
Page 13
2. 属性和方法 属性和方法:描述了对象的性质和行为。 引用:对象名.属性 或 对象名.方法[参数名表] 对象的属性例:label0.caption=“学生成绩表”
对象的方法例: text1.setfocus
DoCmd对象:有许多方法。如Openform 打开窗体 例如: DoCmd.Openform “学生登记”
可以引用过程名调用,或使用关键字Call 子过程格式: Sub 子程序名()
[程序代码]
End Sub
Page 10
函数过程:也称为Function过程,是一种能够返回具体值 的过程,返回的值可以在表达式中使用。 函数过程以关键字Function开始,并以End Function语句 作为结束。 不能使用call调用,直接引用函数过程名,函数名后要加 括号。
Page 32
1. 局部范围(Local) 过程级变量只有在声明它们的过程中才能被识别,也称它 们为局部变量。用Dim或者Static关键字来声明它们。例 如: Dim V1 As Integer
或
Static V1 As Integer 在整个应用程序运行时,用Static声明的局部变量中的值 一直存在,但是只有在过程中才能使用。而用Dim声明的 变量只在过程执行期间才存在。
Page 33
2. 模块范围(Module) 模块级变量对该模块的所有过程都可用,但对其
窗体模块和报表模块中的过程可以调用标准模块中已经定
义好的过程。 窗体模块和报表模块具有局部特性,其作用局限在所属窗 体或报表内部,而生命周期则是伴随着窗体的打开而开始、 关闭而结束。
Page 5
Page 6
8.1.2 标准模块 标准模块一般用于存放供其它Access数据库对象使用的公 共过程。 在Access中,可以通过创建新的模块对象而进入其代码设 计过程。 标准模块通常安排一些公共变量或过程供类模块里的过程 调用。在各个标准模块内部也可以定义私有变量和私有过 程仅供本模块内部使用。
Page 23
例8.3 定义一个学生信息的数据类型 在数据库窗口模块对象下,单击“新建”按钮输入定义学生信息数 据类型选择“插入”菜单中“过程”在对话框中选择“子程序”、
“公共的”或“函数”,输入过程名为cg1在过程中添加语句单
击“运行”按钮—打开“立即窗口”查看结果
可使用With关键字