210 likes | 430 Views
Access VBA 程序设计. 本章重点 Access Basic 编程语言 运算符、函数与表达式 Access Basic 语句 模块的使用 Access Basic 的扩展性. VBA 程序的开发环境. VBA 中的程序与函数共有4种,分别是:一般程序( Sub )、事件程序( Event )、属性程序( Property )和函数( Function ) VBA 程序窗口有代码窗口、立即窗口、本地窗口、监视窗口、工程资源管理器和属性窗口等6种窗口。. Access Basic 编程语言.
E N D
Access VBA程序设计 本章重点 • Access Basic编程语言 • 运算符、函数与表达式 • Access Basic语句 • 模块的使用 • Access Basic的扩展性
VBA 程序的开发环境 • VBA中的程序与函数共有4种,分别是:一般程序(Sub)、事件程序(Event)、属性程序(Property)和函数(Function) • VBA程序窗口有代码窗口、立即窗口、本地窗口、监视窗口、工程资源管理器和属性窗口等6种窗口。
Access Basic编程语言 • 在进行Access的VBA编程之前,要了解Access Basic的基本编程语言 • 一、数据类型 • 二、变量定义 • 三、变量的作用域
一、数据类型 在Access中可用的数据类型分为3种:标准型、自定义型、对象型。 1 .标准型,共有7种。 (1)整数:后缀符为“%” (2)长整数:后缀符为“&” (3)单精度:后缀符为“!” (4)双精度:后缀符为“#” (5)货币:后缀符为“@” (6)字符串:后缀符为“$” (7)变体:可用于任何数据类型。 2. 自定义型:它是用关键词Type标本的,如:
例如 Type Point X as Integer Y as integer End Type 即定义了一个点(point )的数据结构,声明和使用变量形式如: Dim pCurPoint as Point PCurPoint.X=10 PCurPoint.Y=10
3.对象型 Access中有17种对象型,是在程序中操作数据库的途径,操作数据库都是通过操作各种数据库对象的属性和方法来实现的。分别为: Database,Workspace,Document,Container,User,Group,Report,Control,TableDef,QueryDef,Recordset,Field,Index,Relation,Parameter,Property.
二、变量定义 在Access中用来定义变量的关键词有:Dim,Static,Global,ReDim. 1.Dim,这是使用最多的一个关键词,其语法定义如下: Dim 变量名 As 类型名 Dim 数组名(下标范围)As 类型名 Dim 动态数组名() As 类型名 Dim 数组名(下标开始值 To 下标结束值) As 类型名
例如 • Dim nNum(10,10) As Integer • Dim nNum(-10 To 10,1To 5) As Integer 2.Static,用来定义一个模块级的静态变量。语法格式为: Static 变量名 As 类型 Static 数组名(下标)As 类型 3.Global,用来定义一个全局变量。语法格式为: Global 变量名 As 类型名 Global 数组名(下标范围) As 类型名 Global 动态数组名()As 类型名
例如:Global nNumber As Integer Global nNumber ()As Integer Global nNum(10,10) As Integer
4.ReDim • 4.ReDim,该语句与Dim语句联合起来使用,来实现在Access中动态分配内存。使用方法为:首先在代码中使用Dim或Global来声明一个动态数组,但不确定数组的宽度和维数,在需要使用数组来存储数据时,使用ReDim来声明数组的宽度和维数,但这时已经不能更改数组的类型了。使用ReDim可以为一个动态数组分配内存,多次指定不同的宽度,但多次定义时,维数必须和第一次使用ReDim定义的维数一致,不能再次进行修改了。另外,ReDim语句之后还可以使用修补词“Preserve”将原数组中已经分配的单元保留下来,这时当第二次使用R分配内存时,只能在最后一维上变动。例如:
下面的例子是非法操作: ReDim nNum(5,5,10) ReDim Preserve nNum(5,7,10) 应该使用下面的代码: ReDim nNum(5,5,10) ReDim Preserve nNum(5,5,30) 动态分配数组后,有时需要知道数组的上、下界,在A中使用LBount(),UBound()就可以测试出数组的上、下界。具体语法如下:
Lbound(数组名[,维数]) 例如: ReDim strName(0,To 10,2 To 10,-1 To 10) LBount(strName,1)的返回值为0;LBount(strName,2) 的返回值为2;LBount(strName,3)的返回值为-1。 UBound( 数组名[,维数])可以返回数组的上界,使用情况和LBount相同。
三、变量的作用域 程序中声明的每个变量都有作用域,超出它的作用域后,变量就失去作用,成为没有定义的字符。Access中变量的作用域有3类。 (1)全局变量,这种变量在数据库应用系统中的所有地方都可以使用,定义一个全局变量只能在模块对象中进行,使用Global来定义。 (2)对象级变量,可以在一个对象(窗体、报表、模块)中的任何地方使用,不能跨越所在的对象。在对象的General中进行定义,使用Dim关键词。 (3)模块级变量,只能在一个模块中使用,不能跨出模块,这种变量即常用的局部变量。
10.4 Access Basic 语句 Access支持结构化语言中的顺序、分支、循环语句,另外还有一些特殊作用的功能语句。 一、GOTO语句 VBA的GOTO Labal语句可以跳过一些代码块到Labal的位置,并从该点继续执行。Labal标号要从代码的最左边(第一列)开始写,这个位置通常会影响代码的缩进格式。 一般情况下不要使用GOTO语句。在VBA程序中使用GOTO语句的唯一一个目的就是用On Error GoTo Labal语句来处理错误。
二、IF语句 If/Then/End if语句是典型的判断分支控制语句。语法格式为: If 条件[=True] Then …条件为真时执行的语句 End if 另外还可以使用嵌套IF语句格式: If条件1[=True]Then …条件为真时执行的语句 Elself条件2[=True] Then …条件1不成立但条件2成立时,执行的语句 End if
例如 下面的IF语句用来判断一个字符是否是字母,而且判断它的大小写。 If Asc(strChar)>63 And Asc(strChar<91) Then strCharType=“大写字母子” Elself Asc(strChar)>96 And Asc(strChar<123) Then strCharType=“小写字母” End If
二、Select语句 当有多种选择时,使用If …Else语句,这样的语句需要多重嵌套,使得程序十分复杂,不容易读,这时就可以使用Select语句,Select语句是一个多分支控制语句。语法格式为: Select Case表达式 Case值1 语句1 Case值2 语句2 … Case Else 语句 End select
例如:下面语句用来对字母进行判断 Select Case strChar Case “A”To “Z” strCharType=“大写字母” Case “a”To “z” strCharType=“小写字母” Case “0”To “9” strCharType=“数字字母” Case “!”,”?”,”.”,”,””;” strCharType=“标点符号” Case “” strCharType=“空格” Case <32 strCharType=“特殊字母” Case Else strCharType=“其它字母” End Select
四、For语句 For语句是最常用的循环控制语句。语法格式为: For 变量=开始值 To 结束值 Step 步长 循环执行语句 Next 变量 例如:下面使用For语句为数值赋初始值。 For nLeter=1 To 26 strChar(nLeter)=Char(nLeter+63) Next nLeter 注意 当STEP不写时,默认的步长是1。
五、DO语句 Do语句是另外一种循环语句,有两种格式: Do While…Loop和Do Until…Loop. 1.Do while 条件[= True] 循环语句,含有“条件”的变更语句 Loop 2.Do Until 条件 <>True(或Not 条件) 循环语句 Loop
六、功能语句 • Appactivate • Beep • ChDrive • Data • Delete Control • Delete Report Control • DoCmd • Erase • MsgBox 使用格式为:MsgBox(msg [,type[,title]]]) • Set 使用格式为:Set ObjName=ObjectValue. • Time