




已阅读5页,还剩112页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
* * 1 第8章 模块的设计与使用 1 本章要求: 1、了解VBA编程环境; 2、掌握VBA编程基础:常量,变量,表达式; 3、掌握顺序控制,选择控制,循环控制 4、了解VBA模块 本章要点: 掌握顺序控制,选择控制,循环控制 学时安排: 6学时(理论)+6学时(实践) 第8章 模块的设计与使用 2 第8章 模块的设计与使用 VBA程序设计基础 模块的概念 常用标准函数 VBA的程序结构 VBA的数据库编程 过程调用和参数传递 3 在Access系统中,把宏、窗体和报表等对象结 合起来,不用编写程序代码就可以建立功能较完善 的数据库管理系统。但宏的功能是有局限性的,它 只能处理一些简单的操作,如果要实现功能强大的 数据管理,以及灵活的控制功能,宏对象就无能为 力了。这时,就需要编写程序模块来实现上述的功 能。本章介绍模块的概念和用来建立模块的VBA语 言的基础知识。 第8章 模块的设计与使用 4 8.1认识模块 8.1.1模块的基本概念 在Access中,模块分为类模块和标准模块两种类型。 (1)类模块 类模块包括窗体模块和报表模块,它们与各自的窗体 或报表相关联。 窗体模块中的事件过程的代码用于响应窗体或窗体上控 件的触发事件。报表模块中的事件过程的代码用于响应报表 或报表上控件的触发事件。 1.模块的分类 5 8.1认识模块 (2)标准模块 标准模块包含与任何其他对象都无关的常规 过程,以及可以从数据库任何位置运行的经常使用 的过程。标准模块和某个特定对象无关的类模块的 主要区别在于其范围和生命周期。 8.1.1模块的基本概念 1.模块的分类 6 8.1认识模块 事件过程是专为特定事件编写的一组代码,被 窗体或报表的特定事件调用,实现特定的操作,并对 用户的操作做出响应。 例如,单击命令按钮,改变标签的标题。 事件过程只能在类模块中定义。当窗体或报表的 第一个事件过程创建后,系统会自动创建与之关联的 窗体模块或报表模块,通过特定事件激发事件过程执 行。所以,过程与类模块密不可分。 2事件过程 8.1.1模块的基本概念 7 8.1认识模块 通用过程是与特定事件无关的一组代码,能被 多个同类型或不同类型的事件调用。 类模块和标准模块中都可以定义通用过程 3通用过程 8.1.1模块的基本概念 4使用模块的几种情况 8 8.1认识模块 类模块与窗体或报表关联,有以下3种方法 方法1: 在窗体设计视图中选定窗 体控件, 单击属性窗口“事件”选 项卡,选定某个事件,单击单元 格右边的“生成器”按钮 ,在“选 择生成器”对话框中选择“代码生 成器”,单击“确定”按钮。 5建立第一个类模块 8.1.1模块的基本概念 9 8.1认识模块 方法2:在窗体设计视图中选定控件,单击标准工 具栏“生成器”按钮 ,在“选择生成器”对话框中选择“ 代码生成器”。 方法3:在窗体设计视图中选定控件,单击鼠标右 键,从快捷菜单中选择“事件生成器”,在“选择生成 器”对话框中选择“代码生成器”。 5建立第一个类模块 8.1.1模块的基本概念 10 8.1认识模块 例8.1 建立第一个类模块,创建如图8-2所示窗体,单击按钮时,显示“欢迎使用Access!” 例8.1 建立第一个类模块,单击按钮时显示“欢迎使用Access!” 操作步骤: (1)在数据库中,创建窗体,设置窗体属性,使“记录选择 器钮”、“导航按钮”、“分隔线”均不显示。 (2)选择命令按钮控件,单击鼠标右键,从快捷菜单中选择“ 事件生成器”,在“选择生成器”对话框中选择“代码生成器”。 (3)在事件过程中输入代码, (4)转到窗体视图,单 击“开始”按钮。 5建立第一个类模块 8.1.1模块的基本概念 11 8.1认识模块 6建立第一个标准模块 (1)建立标准模块的方法 选择数据库窗口“模块”对象,单击“新建”按钮,新 建标准模块。 (2)打开标准模块方法 方法1:在数据库窗口单击一个标准模块,单击“设计 ”按钮,打开该模块。 方法2:在数据库窗口双击一个标准模块,打开该模块 。 方法3:在数据库窗口单击一个标准模块,选择“工具/ 宏/Visual Basic 编辑器”命令,打开该模块。 8.1.1模块的基本概念 12 8.1认识模块 操作步骤: (1)在数据库中,选择“模块”对象,单击“新建”按钮。 (2) 输入代码。 例8-2 建立第一个标准模块,运行时显示“欢迎使用Access!” (3)单击“保存”按钮,为模块起名:Frist (4)选择“运行/运行子程序”命令,数据库窗口显示相 应信息。 6建立第一个标准模块 8.1.1模块的基本概念 13 8.1认识模块 8.1.2模块设计环境 14 8.1认识模块 8.1.2模块设计环境 15 8.2 VBA编程基本概念和步 骤 8.2.1基本概念 类是某种类型对象的原型,类本身不是一个对象,为了实际 使用相应对象,需要对相关的类进行实例化。 位于Access数据库窗口左边的7个对象:表、查询、窗体、 报表、页、宏、模块,应该准确地称为7个对象类 1对象 2类 在面向对象的程序设计中,基本概念包括对象、类、属性 、事件、方法等。 在自然界中,一个对象就是一个实体,如一个人就是一个对 象。面向对象程序设计的主要任务是以“对象”为中心设计模 块。Access中的对象代表应用程序中的元素,如表,窗体、按 钮等。 16 8.2 VBA编程基本概念和 步骤 8.2.1基本概念 属性描述了对象的性质 例如,文本框控件对象中的名称、字体的相关属性等。 引用方式为:对象.属性 例如: Text1.Forecolor= VbRed MsgBox Me.Caption 每个对象都有自己的属性,对象的类别不同,属性也会不 同。同一类型的不同对象,属性也会有差异。 3.属性 17 8.2 VBA编程基本概念和 步骤 8.2.1基本概念 事件是对象能够识别的动作。 如单击命令按钮,打开窗体,其中的“单击”事件是命令 按钮能识别的动作。 响应事件的方式有以下2种。 (1)用宏对象响应对象的事件。 (2)给事件编写VBA代码,用事件过程响应对象的事件。 如 Private Sub Command1_Click() End sub 其中,Command1是对象名,Click是事件名。 4事件 18 8.2 VBA编程基本概念和 步骤 8.2.1基本概念 方法描述了对象的行为,即在某个对象上执行的一个过程 , 例如, 打开和关闭报表对象。 引用方式为:对象.方法 例如: Text1.SetFocus 事件 方法 属性 5方法 19 8.2.2 用代码设置窗体属性和事件 Me是“包含这段代码的对象”的简称,可以代表当 前 对象。在类模块中,Me代表当前窗体或当前报表。 例如: (1)Me.Label1.Caption= “学生信息表“ 定义窗体中标签Label1的Caption属性。 (2) Me.Caption= “学生信息一览表“ 定义窗体本身的Caption属性。 8.2 VBA编程基本概念和 步骤 1.关鍵字Me 20 能用代码设置的窗体属性主要包括窗体标题、窗体数 据源、背景图片等。 8.2.2 用代码设置窗体属性和事件 8.2 VBA编程基本概念和 步骤 例8-3 创建窗体,并在窗体 中建立文本框txtXm和命令按 钮cmdStart,单击命令按钮时 ,窗体中插入一图片,并在 文本框中显示“学生信息表” 中的第一条记录的姓名。 2用代码设窗体置性 21 8.2.2 用代码设置窗体属性和事件 8.2 VBA编程基本概念和 步骤 2用代码设窗体置性 操作步骤: (1)创建窗体,建立文本框,并将其“名称”属性改为 txtXm;创建命令按钮,将其“名称”属性改为cmdStart,“ 标题”属性改为“开始”。 (2)编写窗体的Load事件和Click事件 (3)转到窗体视图,单击命令按钮“开始”, 22 8.2.3 编程步骤 8.2 VBA编程基本概念和 步骤 VBA编程有以下几个主要步骤: 1创建用户界面 2设置对象属性 3对象事件过程的编写 4运行和调试 5保存窗体 23 8.2.4 DoCmd对象 8.2 VBA编程基本概念和 步骤 使用DoCmd调用方法的格式如下: DoCmd.方法名 参数 例如: DoCmd.OpenForm ”学生信息” DoCmd. OpenTable “课程信息“ DoCmd. RunMacro “Macro1“ 24 8.3.1 VBA的基本数据类型 8.3 VBA编程基础 (2). 长整形 Long 类型申明符为“ Fix(x)返回数据的整数部分 Round( x,n) 返回有n位小数的x,n位以后的数 四舍五入 1数学函数 39 8.3 VBA编程基础 8.3.5 内部函数 2常用字符串函数 提示:常用函数的练习 进入VBE,单击”视图/立即窗口”,在立即窗口中输入相应 命令,敲回车执行 40 8.3 VBA编程基础 8.3.5 内部函数 3日期和时间函数 函数功能 Date返回当前的日期 Year(Now)返回当前的年份 Month(Now)返回当前的月份 Day(Now)返回当前的天数 WeekDay(Now ) 返回当前的星期 Time(Now)返回当前的时间 Hour(Now)返回当前的小 (023) Minute(Now)返回当前的分钟 (059) Second(Now)返回当前的秒 (059) 41 8.4 VBA程序的流程控制结 构 8.4.1 VBA常用语句 (1)将单行语句分成多行 (2) 将多个语句合并到同一行上 VBA允许将两个或多个语句放在同一行,要用冒号“:” 将它们分开。 (3)在语句代码中添加注释 为了增加程序的可读性,在程序中可以添加适当的注释 。 注释方式有两种“Rem”和“”。 1语句的书写规则 42 8.4 VBA程序的流程控制结 构 8.4.1 VBA常用语句 赋值语句用来为变量指定一个值。 格式如下: = 例如: x = 5 s = 3.14 * x 2 y = Int(s) x=y x=x+1 label0.caption=“总成绩” 2赋值语句 注:如果变量未被赋值 而直接引用,则数值 型变量的值为0,字 符型变量的值为空串 ,逻辑型变量的值为 False。 43 8.4 VBA程序的流程控制结 构 8.4.1 VBA常用语句 输入框函数用于在一个对话框中显示提示,等待用户输入 正文并按下按钮,然后返回包含文本框内容的数据信息。 函数格式: InputBox(Prompt,Titlel(,Default,Xpos,Ypos,Helpfile,Con text) 3输入框函数 例:Private Sub Command1_Click() q1 = InputBox(“请输入您的身份证号”,“输入身份证号”,“19781201”) msgbox “你的身份证号是:” & q1 End Sub 提示 缺省 标题 提示 标题 44 8.4 VBA程序的流程控制结 构 8.4.1 VBA常用语句 MsgBox使用消息框输出信息。消息框由标题栏信息、提示 信息,一个图标和一个或多个命令按钮4个部分组成,图 标的形式及命令按钮的个数可以由用户设置。 MsgBox函数的格式如下: 变量名=MsgBox(提示,按钮,标题) MsgBox语句的格式如下: MsgBox(提示,按钮,标题) 4. MsgBox函数和MsgBox语句 45 8.4 VBA程序的流程控制结 构 8.4.2顺序结构 计算机程序的执行控制流程有三种基本结构:顺 序结构、分支结构和循环结构。 面向过程的程序设计中,程序不论从宏观到微观 ,都是由这三种结构组成。 面向对象程序设计增加了事件驱动机制,由用户 触发某事件去执行相应的事件过程。 这些事件处理过程之间并不形成特定的执行次序 ,但对每一个事件过程内部而言,又包含这三种基 本结构。 46 8.4 VBA程序的流程控制结 构 8.4.2顺序结构 顺序结构是简单的一种结构,计算机按照语句的排列顺序 依次执行每一条语句。 例8-5 :计算鸡兔同笼 分析:h代表头, F代表脚,c代 表鸡. R代表兔子 R+C=H 2C+4R=F 2 -得: R=(F-2H)/2 C=H-R 47 8.4 VBA程序的流程控制结 构 8.4.2顺序结构 例8-5 :计算鸡兔同笼 Private Sub Command8_Click() Dim h%, f%, c!, r! h = Text0 f = Text2 r = (f - 2 * h) / 2 c = h - r Text4 = c Text6 = r End Sub 48 8.4 VBA程序的流程控制结 构 选择结构可以根据条件表达式的值来选择程序运行的分 支语句,主要有以下一些结构: 8.4.4 选择结构 格式1:If 条件 Then 语句序列 格式2: If 条件表达式 Then 语句序列 End If 当程序执行到这种格式的If语句时,如果条件 表达式为真,将执行Then后面的语句序列,如果条件 表达式为假,程序将跳过语句序列而直接执行End If 后面的语句。 1.单分支If语句 49 8.4 VBA程序的流程控制结 构 1.单分支If语句 例如: Sub Panduan() Dim x As Integer x = InputBox(“请输入X的值“) If x 0 Then MsgBox “这是一个正数“ End If End Sub 运行模块时,当输入的值大于零时,弹出消息框提示为 “这是一个正数”。 8.4.4 选择结构 50 8.4 VBA程序的流程控制结 构 8.4.4 选择结构 格式: If Then Else End If 执行过程:判断条件,如果为真,执行语句序列1;如果 为假,执行语句序列2。 2.双分支语句 8.4.4 选择结构 51 8.4 VBA程序的流程控制结 构 8.4.4 选择结构 例8-6 输入一个成绩,给出“及格”或“不及格”的信 息提示。 选择“模块”对象,单击“新建按钮”。在代码窗口输入以 下代码。 Sub Cjmark() Dim cj As Integer cj = InputBox(“请输入成绩:“) If cj = 60 Then MsgBox “及格“ Else MsgBox “不及格“ End If End Sub 2.双分支语句 52 8.4 VBA程序的流程控制结 构 8.4.4 选择结构 例8-7 完善鸡兔同笼问题,当计算结果为负数或小数时 ,提醒用户“数据有误”,并重新输入总头数和总脚数 。 53 8.4 VBA程序的流程控制结 构 8.4.4 选择结构 3If-Then-ElseIf多分支 执行过程:依次判断条件 ,如果找到一个满足的条 件,则执行其下面的语句 序列,然后跳过End If, 执行后面的程序。如果所 列的条件都不满足,则执 行Else语句后面的语句序 列;如果所列出的条件都 不满足,又没有Else子句 ,是直接跳过End If,不 执行后面的任何语句块。 If 条件l Then 语句序列1 ElseIf 条件2 Then 语句序列2 Else 语句序列n+1 End If 54 8.4 VBA程序的流程控制结 构 8.4.4 选择结构 例8-8 编写程序,将学 生的百分制成绩按要求 转换成相应的等次输出 。成绩在90,100为“ 优秀”;成绩在80, 90)为“良好”;成绩在 70,80)为“中等”; 成绩在60,70),60分 以下的为“不及格” 3If-Then-ElseIf多分支 55 8.4 VBA程序的流程控制结 构 8.4.4 选择结构 3If-Then-ElseIf多分支 例8-8: 56 8.4 VBA程序的流程控制结 构 8.4.4 选择结构 4Select Case 语句(情况语句) 执行过程:首先计算变量或表达式的值,然后依次 计算Case子句中表达式的值,如果变量或表达式的 值和某个Case表达式的值吻合,则执行相应的语句 序列,然后执行End Select下面的语句。当前Case 表达式的值不满足,则进行下一个Case语句的判断 。如果都不满足,有Case Else部分则执行语句序 列n+1,否则执行End Select后面的语句。 57 8.4 VBA程序的流程控制结 构 8.4.4 选择结构 4Select Case 语句(情况语句) Select Case Case Case Case Case Else End Select 58 8.4 VBA程序的流程控制结 构 8.4.4 选择结构 4Select Case 语句(情况语句) Case表达式可以是下列4种格式之一: l 单一数值,如Case 2。 l 一行并列的数值,数值之间用逗号隔开,如Case 5, 6,7 l 用关键字To分隔开两个数值或表达式之间的范围, 如Case 1 to 10 l 用关键字Is连接关系运算符,如=、= ,后面跟变量或具体的值,Is=15。 Case语句是依次测试的,并执行第一个符合Case条件的相关 的程序代码,即使再有其他符合条件的分支也不会再执行。如 果没有找到符合条件的,并且有Case Else语句,就会执行该语 句后面的程序代码。 59 8.4 VBA程序的流程控制结 构 8.4.4 选择结构 4Select Case 语句(情况语句) 例8-9 将例8-8的程 序代码用Select Case情况语句完成 60 8.4 VBA程序的流程控制结 构 8.4.4 选择结构 IIf(,) IIf函数首先要计算“条件表达式”,当“条件表达式”的值为“真 ”时,则IIf函数返回的值;否则,返回的 值。 例如,求x,y中大的数,将其存入MaxNum变量中,可以使用 如下语句: MaxNum = IIf(x y, x, y) 5IIf( ) 函数 61 在程序设计中,可以使用循环语句在满足条件的前提下重复 执行一行或几行程序代码。 在VBA中,循环语句有3种: ForNext DoLoop WhileWend 8.4 VBA的程序结构 8.4.4 循环语句 62 功能:能够重复执行程序代码区域特定次数。 格式: For 循环变量=初值 To 终值 Step步长 循环体 条件语句序列 Exit For 结束条件语句序列 Next 循环变量 8.4 VBA的程序结构 1ForNext语句 8.4.4 循环语句 63 For语句的执行步骤如下: (1)循环变量取初值。 (2)循环变量与终值比较, 确定循环是否进行. (3)执行循环体。 (4)循环变量值增加步长, 即循环变量=循环变量+步长, 程序跳转至(2)。 8.4 VBA的程序结构 1ForNext语句 8.4.4 循环语句 例8-10:使用ForNext语句计算 1100之间数的和。 Private Sub Command1_Click() Dim i%, sum% For i = l To 100 sum = sum + i Next i Label2.Caption = sum End Sub 思考:如何计算 2+4+.+100 1+1/2-1/3+1/4+. 64 8.4 VBA的程序结构 1ForNext语句 8.4.4 循环语句 例:输出1-10的数 For i = 1 To 10 s = s & “ “ & i Next Text0=s 例:输出10-1的数 For i = 10 To 1 step -1 s = s & “ “ & i Next Text0=s 思考:换成s=i & s ,程序结果如何? 65 8.4 VBA的程序结构 1ForNext语句 8.4.4 循环语句 例:输入任意10个数,求其最大数 Private Sub Command4_Click() Dim x!, max! x = InputBox(“第1个数“) Text0 = x: max=x For i = 2 To 4 x = InputBox(“第“ & i & “个数“) Text0 = Text0 & “ “ & x If x max Then max = x End If Next i Label3.Caption = “最大数为: “ & max End Sub 思考:如何求最大数 的位置? 66 (1)Do WhileLoop 功能:当条件式结果为真时,重复执行循环体。当条件式结果 为假或执行到Exit Do时,结束循环。 语句格式: Do While 条件式 循环体 条件语句序列 Exit Do 结束条件语句序列 Loop 8.4 VBA的程序结构 2DoLoop语句 8.4.4 循环语句 67 例:用Do WhileLoop语句计算1100之间数的和 。 Dim i As Integer Dim Sum As Integer i=1 Do While i100 Sum=Sum+i i=i+1 Loop 返 回 8.4 VBA的程序结构 2DoLoop语句 8.4.4 循环语句 对比:用Do WhileLoop语句 计算1100之间数的和。 Dim i As Integer Dim Sum As Integer i=1 Do While i av Then Txt2 = Txt2 & “ “ & a(I) End If Next I End Sub 8.5 数组 8.5.2 数组的使用 77 例:求波斐那契数列,已经数列第一二项的值,从第三项开始每 一项的值等于前两项之和 Private Sub Command4_Click() Dim a(10) As Single a(1) = Text0 a(2) = Text1 For i = 3 To 10 a(i) = a(i - 1) + a(i - 2) Text3 = Text3 & “ “ & a(i) Next i End Sub 8.5 数组 8.5.2 数组的使用 78 8.6 过程调用与参数传递 一个过程在执行过程中可以调用另外一个过程, 同时将参数传递过去。调用完成后,再回到本过程继 续执行。 过程是一段独立的程序代码,用来执行特定任务 ,这段代码能被反复调用。模块包括一个声明区域和 多个过程,过程是模块的组成单元。 过程名是标识符,命名规则与变量的命名规则相 同。过程不能与模块重名,所有标准模块中的过程都 不能重名,否则调用过程会出现混乱。 VBA根据是否有返回值将过程分为两类:Sub过 程和Function过程。 79 8.6 过程调用与参数传递 8.6.1 Sub过程 Sub过程又称为子过程,调用Sub过程只执行一 系列操作,无返回值。 1Sub过程定义格式 Sub 过程名(形参l as 数据类型,形参2 as 数据 类型,) 语句序列 End Sub 80 8.6 过程调用与参数传递 8.6.1 Sub过程 格式1:Call 过程名(实参1,实参2,) 格式2:过程名 实参1,实参2, 2. Sub过程调用格式 (1)参数之间用逗号分隔,形参与实参要个数相同,类 型匹配。 (2)调用Sub过程时,格式1的实参必须加括号,格式2 的实参不能加括号。 (3)用Exit Sub语句可以立即从Sub过程退出。 (4)标准模块中的过程可以被所有对象调用,类模块中 的过程只在本模块中有效。 3说明 81 8.6 过程调用与参数传递 8.6.1 Sub过程 例8-14 创建两个 子程序过程Add和 Substract ,Add 过程实现两个参 数相加, Substract实现两 个参数相减。输 入两个数,调用 这两个子程序, 计算相加和相减 的结果。 82 8.6 过程调用与参数传递 8.6.2 Function过程 Function过程又称为自定义函数,因为Function过程 有返回值,所以建立过程时要给返回值定义数据类型。 Function过程通常在标准模块中定义,使用方法与内置 函数相似。 83 8.6 过程调用与参数传递 8.6.2 Function过程 2Function过程调用格式 调用Function过程的方式是直接引用过程名,过程名通 常用在表达式中。 1Function过程定义格式 Function 过程名(形参l as 数据类型,形参2 as数据类 型,)as数据类型 语句序列 过程名=表达式 End Function 84 8.6 过程调用与参数传递 8.6.2 Function过程 (l)形参与实参要个数相同、类型匹配。 (2)“过程名=表达式”是定义Function过程不可 缺少的语句。 (3)用Exit Function可以中途退出Function过程 。 (4)可以用Public或Private或Static定义过程的作 用域。 3说明 85 8.6 过程调用与参数传递 8.6.2 Function过程 例8-15 使用Function过程,计算阶乘。 86 8.6 过程调用与参数传递 8.6.3参数传递 在调用过程中,一般主调过程和被调过程之 间有数据传递,也就是主调过程的实参传递给被 调过程的形参,然后执行被调过程。 实参向形参的数据传递有两种方式:传值方 式和传址方式。 87 8.6 过程调用与参数传递 8.6.3参数传递 在形参前面加ByVal说明符,表示参数传递是传 值方式,是一种单向的数据传递。即调用时只能由 实参将值传递给形参,调用结束后不能由形参将操 作结果返回给实参。 实参可以是常量或表达式。 1传值方式 88 8.6 过程调用与参数传递 8.6.3参数传递 在形参前面加ByRef说明符或省略不写,表示参 数传递是传址方式,是一种双向的数据传递。即调 用时由实参将值传递给形参,调用结束后由形参将 操作结果返回给实参。 实参只能是变量。 2传址方式 89 8.6 过程调用与参数传递 例8-17 阅读下面程序代码,分析程序运行 结果 8.6.3参数传递 90 8.6 过程调用与参数传递 8.6.4 变量的作用域 在模块的过程内部用Dim或Static关键字声明的变量,称为 局部变量。局部变量的作用范围是局部的,只在过程执 行期间才存在。 变量可被访问的范围称为变量的作用范围,也称为变量 的作用域。变量的作用域有三个层次:局部范围、模块 范围和全局范围。 1局部范围 91 8.6 过程调用与参数传递 8.6.4 变量的作用域 变量定义在模块的所有子过程或函数过程的外部,在 模块的通用声明区域,用Dim或Private关键字声明的变 量,称为模块级变量。 模块级变量在声明它的整个模块中的所有过程中都能 使用,但其他模块过程却不能访问。一旦模块运行结束 ,模块变量的内容自动消失。 2模块范围 92 全局变量 全局变量就是在标准模块的所有过程之外的起始 位置定义的变量,运行时在所有类模块和标准模块的 所有子过程与函数过程中都可见,在标准模块的变量 定义区域,用下面的语句定义全局变量: Public 全局变量名 As 数据类型 8.6 过程调用和参数传递 8.6.4 变量作用域 93 例:如窗体所示,有三个同名变量,定义不用的作用域,观察其使用 8.6 过程调用和参数传递 8.6.4 变量作用域 94 8.6 过程调用与参数传递 8.6.5 变量的生存期 在过程中,用Dim关键字声明的局部变量属于动态变量。动态 变量的生存期是指:从变量所在的过程第一次执行,到过程 执行完毕,自动释放该变量所占的内存单元为止的这一段时间。 从变量的生存期来分,变量又分为动态变量和静态变量。 1动态变量 2静态变量 在过程中,用Static关键字声明的局部变量属于静态变量。 静态变量在过程运行时可保留变量的值,即每次调用过程时 ,用Static说明的变量保持上一次的值。 95 8.6 过程调用与参数传递 例8-18 比较动态变量和静态变量的应用 窗体界面如图所示。代码如下: Private Sub Cmd1_Click() Dim x% Static y% x = x + 1 y = y + 1 b1.Caption = x b2.Caption = y End Sub 连续单出“开始”按钮5次,分析结果. 8.6.5 变量的生存期 96 要想快速、有效地管理好数据,开发出更具实用价值的 Access数据库应用程序,应当了解和掌握VBA的数据库编程方法 。 8.7 VBA的数据库编程 在VBA中主要提供了3种数据库访问接口: (1)开放数据库互联应用编程接口 (2)数据访问对象DAO (3)Active数据对象 8.7.1 数据库引擎及其接口 97 数据访问对象(DAO)是VBA提供的一种数据访问接口。包 括数据库创建、表和查询的定义等工具,借助VBA代码可以 灵活地控制数据访问的各种操作。 DAO模型是一个复杂的可编程数据关联对象的层次,DAO的 对象层次说明如下: 8.7 VBA的数据库编程 8.7.2 数据访问对象(DAO) 1DAO模型结构 98 8.7 VBA的数据库编程 99 要想使用DAO访问数据库的对 象,首先应该增加一个对DAO库 的引用。其引用设置方式为: (1)先进入VBA编程环境。 (2)执行“工具/引用”命令,在对 话框的,单击“Microsoft DA03.6 object Library”列表项前面的复 选框。 (4)单击“确定”按钮,完成设 置。 8.7 VBA的数据库编程 2设置DAO库的引用 100 通过DAO编程实现据库访问时,首先要创建对象变量,然后通过 对象方法和属性来进行操作。下面给出数据库操作一般语句和 步骤: (1)创建对象变量 定义工作区对象变量:Dim ws As Workspace 定义数据库对象变量:Dim db As Database 定义记录集对象变量:Dim rs As RecordSet (2)通过Set语句设置各个对象变量的值 Set ws=DBEngine.Workspace(0) Set db=ws.OpenDatabase(数据库文件名) Set rs=db.OpenRecordSet(表名、查询名或SQL语句) 8.7 VBA的数据库编程 3利用DAO访问数据库 101 (3)通过对象的方法和属性进行操作 通常使用循环结构处理记录集中的每一条记录。 Do While Not rs.EOF Rs.MoveNext Loop (4)操作的收尾工作 rs.close cn.close Set rs=Nothing Set cn=Nothing 8.7 VBA的数据库编程 3利用DAO访问数据库 102 3利用DAO访问数据库 例:例用DAO编程,完成对表记录的添加、查找、删除、修改等功能 103 104 ADO为开发者供一个强大的逻辑对象模型,以便开发者通过 OLE DB系统接口以编程方式访问、编辑、更新各式各样的数 据源。 8.7 VBA的数据库编程 8.7.3 ActiveX数据(ADO) 1ADO模型结构 Connection Command Recordset Fields 105 要想使用ADO访问数据库的对 象,首先应该增加一个对AOD库 的引用。其引用设置方式为: (1)先进入VBA编程环境。 (2)执行“工具/引用”命令,在对 话框的,单击“Microsoft ActiveX Data Object 2.1”列表项前面的 复选框。 (4)单击“确定”按钮,完
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 设备设备卫生管理制度
- 设置宿舍卫生管理制度
- 设计单位施工管理制度
- 设计顾问公司管理制度
- 诊所安全用药管理制度
- 2025年中国滑雪用护目镜行业市场全景分析及前景机遇研判报告
- 试验检测资料管理制度
- 财务账目健全管理制度
- 账户托管服务管理制度
- 货运码头货场管理制度
- 《女性经期营养》课件
- 炎症性肠病营养指南
- DB1501-T 0048-2024《园林绿化工程资料管理规范》
- 农机安全生产培训课件
- 神经系统体格检查课件(共81张课件)
- 小学三年级下册英语(牛津上海一起点)全册语法知识点总结
- 2024秋期国家开放大学《建筑工程项目管理》一平台在线形考(作业1至4)试题及答案
- 班主任家校共育胜任力:内涵、现状及培养路径
- 个人的述职报告
- 江西省南昌地区2024-2025学年数学六年级第一学期期末质量检测试题含解析
- 森林抚育作业设计
评论
0/150
提交评论