Access数据库系统与应用 第8章 VBA编程语言.ppt_第1页
Access数据库系统与应用 第8章 VBA编程语言.ppt_第2页
Access数据库系统与应用 第8章 VBA编程语言.ppt_第3页
Access数据库系统与应用 第8章 VBA编程语言.ppt_第4页
Access数据库系统与应用 第8章 VBA编程语言.ppt_第5页
已阅读5页,还剩104页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、第8章 VBA编程语言,学而不思则罔,思而不学则殆。,全体编者,Compute Center, Qiqihar University,本章内容提要:,VBA概述 VBA编程基础 VBA基本控制结构 VBA模块 面向对象程序设计,一、VBA概述,1、VBA介绍 VBA是(Visual Basic for Application)是Microsoft Office系列软件的内置编程语言。 Basic语言 Visual可视化的程序设计 2、与宏的比较 在Access中,VBA与宏的作用类似,只是宏由系统给定,而VBA是需要用户自己编写程序。但在完成下列操作时,必须使用VBA。 数据库的移植 建立用户

2、自定义函数,3.VBA编程环境,VBE(Visual Basic Editor) 打开VBE窗口的方法: 独立程序模块 “数据库”窗口“模块”对象选项“新建”按钮 菜单栏“工具” “宏” “ Visual Basic编辑器”命令项 绑定型程序模块 VBE窗口的组成 标准工具栏、工程窗口、属性窗口 代码窗口,操作演示,3.VBA编程环境,设计人员可以在代码窗口中进行代码编写、修改与调试等处理。 “视图”菜单: 对象浏览器 立即窗口 本地窗口 监视窗口 在标准模块中调试程序示例,二、VBA编程基础,数据类型 常量和变量 运算符与表达式 常用内置函数的使用方法 数组,1.数据类型,VBA提供的基本数

3、据类型主要有字符串型数据和数值型数据,此外还提供了货币、对象、变体等数据类型。VBA共有12种数据类型。此外用户还可以根据以下类型用Type自定义数据类型。 有效使用数据类型,应该尽量明确变量的具体数据类型。如: Dim X As Integer,VBA基本数据类型,2.常量和变量,常量:在程序运行过程中保持不变的量。 常量的种类: 直接常量,如:344、3.14159、-23等; 符号常量,如:const pi=3.14; 固有常量,如: acForm、adAddNew、vbCuruency等; 系统定义常量,如True、False、Null等。 常量的数据类型参考-VBA基本数据类型 符号

4、常量的声明和使用: const 符号常量名=常数,2.常量和变量,变量:程序运行过程中,值可以改变的量。 变量的类型参考-VBA基本数据类型。 变量的定义: 使用类型符定义,如:BookNumber%=1234 【例8.6】 使用Dim语句定义,如:Dim I As integer 【例8.7】 使用DefType语句,如:DefInt a,b,c,e-h 【例8.8】 变量的命名同标识符的命名,思考:变量与常量的区别?,Sub ConstSample( ) Const PI As Single =3.1415926 PI=3.14 错误,PI的值不能改变 r%=5 S!=PI*r2 End

5、Sub,3. 运算符与表达式,VBA中基本的运算符有五种:算术运算符、关系运算符、逻辑运算符、字符串运算符、对象运算符。 表达式是由运算符、函数和数据等内容组合而成。 根据运算符的不同,可以将表达式分成以下几类:算术表达式、关系表达式、逻辑表达式、字符串表达式和对象表达式。,算术运算符与表达式,算术运算符 + 加、- 减 、* 乘 、/ 除 整除、MOD求余 、乘方 例如: 3+5、5-4、5*4、4/6 43=1、 7 MOD 4=3 、23=8 运算符的优先级: 括号取负乘方*/MOD+- 算术表达式 -4+3*6 MOD 5(24),关系运算符和表达式,关系运算符: 大于、不等于 =大于

6、等于、6 (true 或 1) 4-20 (false 或 0),逻辑运算符与表达式,逻辑运算符: And逻辑与、OR逻辑或、Not逻辑非 逻辑运算结果是: 真(true或-1表示)或 假(false或0表示) 优先级:NotAndOr 逻辑运算的运算规则是:,逻辑运算的运算规则,例如: 2+34 And 62 2-49 Not 4+510,字符连接符与表达式,字符连接符: +:连接字符串 在立即窗口输出 Next j For k = 1 To 2 * i - 1 Debug.Print *; Next k Debug.Print Next i End Sub,小结,本部分主要讲述了VBA的基

7、本语句和基本的语句控制结构,主要包括顺序、选择、循环三种。 其中,重点内容是选择和循环结构;难点内容是循环结构。,课堂练习,课堂作业 1、Access VBA有哪些程序控制语句? 2、选择结构的几种形式? 3、for循环的结构? 4、do循环的5种格式?彼此之间的区别?,四.VBA模块,1、模块对象 Access数据库7个对象之一,其实质就是没有界面的VBA程序。 模块一般是由声明、语句和过程组成的集合,作为一个已命名的单元存储在一起,并对 VBA 代码进行组织。 模块可分为两种基本类型: 类模块 标准模块 建立一个标准模块示例,2.过程,过程由VBA语句组成,是一段相对独立的代码。 过程将程

8、序分割成较小的程序单元,这样就可以简化程序设计任务。 创建过程 过程可以分为: Sub 过程(子过程) 事件过程 Function 过程(函数),Sub过程,定义Sub过程的格式: Private|Public|StaticSub (参数表) 语句块 End Sub Sub过程的调用,两种方式: Call 过程名(实际参数表) 直接使用过程名调用 例如,Hello过程,事件过程,事件过程是与对象的事件相关联的程序。 为窗体、报表或控件的事件来编写事件程序,这样当该事件被引发时便会执行其事件程序来完成所需的处理。 例:在窗体上建立一个“获得当前时间”按钮,按下按钮便能执行VBA程序代码来显示当前

9、时间。 方法一:利用窗体的控件中的事件标签 方法二:利用“视图” 菜单中的“代码”命令,操作演示,Function过程,定义Function过程的格式: Private|Public|StaticFunction (参数表) As类型 End Function 调用Function过程 与使用VBA内部函数相同 例如,GetCurDate过程,模块与过程,注意:过程不是Access的一个独立对象,不能单独保存,只能存在于模块中。,sub,Function,3.参数传递,在调用过程中,主调过程和被调过程之间的数据传递。即主调过程的实参传递给被调过程的形参,然后执行被调过程。 实参向形参的数据传递

10、有2种方式: 值传递(ByVal) 地址传递(ByRef) * 说明: 值传递时,形参的变化不影响实参; 地址传递时,形参与实参使用相同的存储单元。,【例8.34】 参数传递示例,问题描述: 创建有参子过程Test(),通过主调过程Main_Click()调用,观察实参值的变化。 程序代码:,被调子过程Test() Sub Test (ByRef x As Integer) 形参x说明为传址形式的整型量 x =x+10 改变形参x的值 End Sub 主调过程Main_click() Private Sub Main_Click() Dim n As Integer 定义整型变量n n =6

11、变量n赋初值6 Call Test(n) Msgbox n 显示n值 End Sub,4.过程和变量的作用域,过程或变量可被访问的范围称为过程或变量的作用域。 过程的作用域: 模块级(使用Private) 全局级(使用Public) 变量的作用域 表8.2 局部变量 【例8.35】 模块变量 【例8.36】 全局变量 【例8.37】,五、面向对象程序设计,1、理解面向对象编程: 面向对象是观察世界和编写计算机程序的自然方式。 优点:结构清晰完整,数据独立、易于管理 缺点:性能方面要做些牺牲 2、理解类与对象: 在面向对象的方法中,类是具有共同属性、共同行为方法的对象的抽象。 一个对象代表应用程

12、序中的一个元素 窗体或是其上的按钮、标签和文本框等,对象三要素,一个对象通过属性、方法和事件来描述。 属性是指一个对象所具备的特征 比如:按钮控件的Caption属性 方法是指对象可以执行的动作 比如:文本框控件可以SetFocus方法 事件是指对象所能检测的动作 比如,按钮的Click事件,3. 对象声明和引用,(1)对象的声明 声明对象变量的语法格式: Dim 对象变量 As New 对象类 说明: 使用new,则不必使用Set引用特定对象 Set 对象变量= New 对象表达式 例如,【例8.38】 Dim myForm As New Form Dim myText As TextBox

13、 Set myText=New TextBox,(2)对象的使用,对象引用一般格式: !.| 引用运算符:!和 . 例如: Forms!登陆窗体!text0.text=“1” DoCmd.Close SELECT 学生表.姓名 FROM 学生表,对象引用规则注意事项,引用规则:引用窗体或报表必须从集合开始。 例如: Forms!窗体1.Caption Reports!学生成绩!学分+10 Reports!学生成绩!学分.Visible Forms!窗体1!Label1.FontName Label1.FontName(当前窗体),改变对象的属性设置,例如: Forms!窗体1.Caption=

14、Date&Space(2) Label1.FontName=“隶书” Label1.FontBold=True Label1.FontSize=18 Label1.FontItalic=True Text0.FontColor=255 Text0. Height=Text0.Width*0.5,4. Application的对象模型,VBA使用Application对象操作当前活动的窗体、报表、数据访问页及它们所包含的控件。 Application对象层次关系如图 Application对象 Form对象、Forms集合和Control对象、Controls集合 DoCmd对象,(1)Appl

15、ication对象,Application对象引用活动的Access应用程序 创建Application类的新实例: Dim appAccess As Object Set appAccess=CreateObject(Access.Application) 例如,【例8.40】,Sub GetAccessData() Dim strDB As String Dim appAccess As Access.Application StrDB=”C:Program FilesMicrosoft OfficeOffice11SamplesNorwind.mdb” AppAccess.OpenCur

16、rentDatabase strDB aapAccess.DoCmd.OpenReport 图书编目表 End Sub,(2)Form对象、Forms集合和Control对象、Controls集合,Forms是一个集合对象,Form是Forms集合中的一个成员。 Forms集合包含Access数据库中当前打开的所有窗体。 每个窗体对象都有一个Controls集合,该集合包含了窗体上的所有控件。 例如, 【例8.41】,Sub GetControlsData( ) Forms!OrderForm!NewData 隐式引用 Forms!OrderForm.Controls!NewData 显示引用

17、 End Sub,(3)DoCmd对象,DoCmd对象可以调用Access内置的方法 DoCmd又可以看作AccessVBA中提供的一个命令 【例8.42】DoCmd对象应用举例 DoCmd.OpenForm 图书编目表“ 说明: DoCmd对象的大多数方法都有参数,某些参数是必需的,其他一些是可选的。,5.事件驱动工作方式,事件包括事件的触发和执行程序两方面。 一个事件可对应一个程序-事件过程或宏。 在Access中事件一旦被触发,系统马上就去执行与该事件相关的程序(事件过程或宏)。执行完毕后,系统又处于等待某事件发生的状态,这种程序执行方式应用程序的事件驱动工作方式。 事件触发方式可细分为

18、3种: 由用户触发、由系统触发、由代码引发,例: 改变文本框中日期的颜色,若单击主体,窗体文本框中的日期即以红色显示;若双击主体,该日期则以蓝色显示。 理解事件驱动: 主体节中,单击右键,在菜单中选择事件生成器。 在代码窗口中观察: Private Sub 主体_Cilck( ) Text0.ForeColor=vbRed 文本框前景色设为红色 End Sub “双击”事件代码类似:Text0.ForeColor=vbBlue 思考:使用Text0.Move方法和MouseDown事件使文字跟随鼠标移动。,操作演示,小结,本章主要讲解了面向对象编程(OOP)基础、VBA概述、VBA编程基础、V

19、BA基本控制结构等方面的知识。 教学重点: VBA语法规则,选择结构及循环结构 教学难点: 选择结构,循环结构,课堂练习,课堂作业 1、模块在结构上由哪几部分组成? 2、过程有几类?有何区别? 3、什么是对象和类?举例说明。 4、对象的使用方法?,附录:,VBE窗口的组成 代码编辑器 【例8.18.5】 标识符的命名规则 使用数值型函数,字符串函数 使用日期/时间函数,类型转换函数 计算费用窗体与主要代码 新建模块对象示例 表8.2变量使用规则和作用范围 【例8.3537】 常用属性 常用方法 常用事件1-2,VBE窗口的组成,标准工具栏,工程窗口,属性窗口,代码窗口,视图切换,插入模块,运行

20、、中断、停止,设计模式,工程资源浏览器,属性窗口,对象浏览器,查看代码,查看对象,切换文件夹,对象框,属性列表,代码编辑器,系统自动生成事件过程框架,在此处填写事件响应代码,选择对象框,选择对应的事件过程,【例8.1】程序的调试过程,问题描述: 建立两个标准过程,功能为:求1100之和和由键盘输入学生考试分数判定学生的成绩等级,并运行调试这两个标准模块。 操作步骤: 打开VBE窗口,录入代码 设置断点 运行时,可以查看程序运行状态(F9) 运行程序,调试程序 利用立即窗口、本地窗口、监视窗口协助调试,操作演示,【例8.2】变体类型定义应用举例,问题描述: 变体类型定义应用 示例代码:,Dim

21、MyVar As Variant 变体类型也可用Dim定义 MyVar = 98052 a = 20 a = 1234 a = Null 变量a没有显式声明,a的类型发生三次变化 MyVar=a,【例8.3】对象类型定义应用举例,问题描述: 对象类型定义应用 示例代码:,Dim objDb As Object Set objDb=OpenDatabase _ (c:高校图书馆管理系统高校图书馆管理系统.mdb),【例8.4】自定义类型定义举例,问题描述: 自定义类型定义举例 示例代码:,Type Book BookName As String*20 定义定常字符串变量存储书名 BookDate

22、 As Date 定义日期变量存储出版日期 BookNumber As Integer 定义整型变量存储书的数量 End Type,用户自定义类型的语法格式如下: private|public Type 数据类型名 变量名1 As 数据类型 变量名2 As数据类型 End Type,【例8.5】符号常量定义应用举例,问题描述: 对象类型定义应用 示例代码:,Const PI = 3.1415926 Public Sub area() Dim r As Integer Dim l, area As Single r = InputBox(请输入圆的半径) l = 2 * PI * r : are

23、a = PI * r * r h = MsgBox(周长: & l & 面积: & area, 1 + _ vbQuestion + vbDefaultButton1 + 0, 计算圆的周长和面积) End Sub,标识符的命名规则,当在VBA的模块中为常数、变量等标识符命名时,必须遵循下列规则: 只能由字母、数字、汉字和下划线组成,不能含有空格和除了下划线字符“_”以外的其他任何标点符号,长度不能超过255。 例如,dim sys_AC as string 必须以字母开头,不区分大小写。 例如,Bxy、BXY、BxY、bxy系统都认为是相同的。 不能和VBA保留字重名。 例如:不能以IF命名

24、一个变量。,使用数值型函数,问题描述:计算数学表达式的值。,Sub Expression() Dim s S=y*y+abs(x)+exp(3) +sin(30*3.14/180)-sqr(x*y)+log(3) Msgbox s= & s end sub,使用字符串函数,例:利用字符串函数将数值321分解成3、2、1并输出3*100+2*10+1。 Sub Convert() Dim Num As Integer Dim strNum As String Dim Num1 As String, Num2 As String, Num3 As String Num = 123 : strNum

25、 = Trim(Str(Num) Num1 = Left(strNum, 1) : Num2 = Right(strNum, 1) Num3 = Mid(strNum, 2, 1) MsgBox Num1 & *100+ & Num3 & *10+ & Num2 End Sub,使用日期/时间函数,例:计算一下你还有多少天毕业。 Sub GetDays() Dim GraduateDate As Date Dim Days As Long GraduateDate = CDate(InputBox(请输入你的毕业时间:) Days = DateDiff(d, Now, GraduateDate) MsgBox 你还有 & Days & 毕业! End Sub,使用类型转换函数,例:计算一下你还有多少天毕业。 Sub GetDays() Dim GraduateDate As Date Dim Days As Long GraduateDate =

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论