access15过程调用与参数传递

上传人:tian****1990 文档编号:74532158 上传时间:2019-01-28 格式:PPT 页数:34 大小:511.81KB
返回 下载 相关 举报
access15过程调用与参数传递_第1页
第1页 / 共34页
access15过程调用与参数传递_第2页
第2页 / 共34页
access15过程调用与参数传递_第3页
第3页 / 共34页
access15过程调用与参数传递_第4页
第4页 / 共34页
access15过程调用与参数传递_第5页
第5页 / 共34页
点击查看更多>>
资源描述

《access15过程调用与参数传递》由会员分享,可在线阅读,更多相关《access15过程调用与参数传递(34页珍藏版)》请在金锄头文库上搜索。

1、Access数据库(第10章),2009年,1,第15讲 VBA的过程调用与变量作用域:,复习:标准模块与类模块 模块由过程组成:,一个模块有1到多个过程组成:所有模块都有一个声明区(过程),在模块的最前面,用来定义下面过程要用到的变量和字符比较方式等:P257,Option Base 0 | 1 声明模块中数组下标的初始值, 默认为0 Option Compare Database 声明模块中字符串比较的方法。 用数据库的区域ID确定排序级别 进行比较。 Option Explicit 强制显示声明模块中的所有变量。,Access数据库(第10章),2009年,2,第15讲 子过程与函数过程

2、,Sub(子程序)过程 Sub过程也称为子程序,它一般执行某种操作或一系列运算,但没有返回值。用户可以自己创建Sub过程或使用Access已经创建好的事件过程模块。 数据库的每一个窗体和报表都有内置的窗体模块或报表模块。这些模块包含事件过程模板,用户可以在其中添加自己的代码。当窗体、报表或在其上的控件中发生相应的事件时,Access将自动运行这些代码。例如,可以在“学生信息登记”窗体上添加一个“添加记录”的按钮,并在该按钮的单击事件中写上相应的代码,就可以为“学生信息”表增加记录。,Access数据库(第10章),2009年,3,Sub 质数1to100() Dim i As Integer,

3、 j As Integer, k As Integer k = 1 For i = 1 To 100 For j = 2 To i - 1 If (i / j) = (i j) Then Exit For Next j If j = i Then Debug.Print i, k = k + 1 End If If k = 7 Then k = 1 Debug.Print “ “ End If Next i End Sub,Access数据库(第10章),2009年,4,Sub 三角形() Dim i As Integer, j As Integer Debug.Print For i = 1

4、 To 9 Debug.Print Space(15 - i); For j = 1 To i * 2 - 1 Debug.Print “*“; Next j Debug.Print Next i End Sub,Access数据库(第10章),2009年,5,Sub 循环() Dim x As Integer, a As Integer, b As Integer x = 8 For a = 0 To 1 Do While b 25 b = b + a + x Loop Next Debug.Print “b=“ & b MsgBox “b=“ & b End Sub,Access数据库(第

5、10章),2009年,6,第15讲 子过程与函数过程,Function(函数)过程 Function过程能够返回一个计算结果。Access提供了许多内置的标准函数以供程序直接调用。例如,Date()函数返回当前机器的系统日期。除了系统提供的内置函数以外,用户也可以自定义函数。编辑一个Function过程的过程就是用户自己定义一个函数的过程。 Function过程的优点就是程序可以利用函数的返回值在表达式中,以便对语句或方法中的一些属性进行设置,或在筛选、查询的准则表达式中使用。,Access数据库(第10章),2009年,7,第13讲 Access数据库的模块设计,函数过程:,格式1: Fun

6、ction () As = End Function,Function A(x) Dim i As Integer A = 1 For i = 2 To x A = A * i Next End Function,计算阶乘的函数过程,Function Fac(x As Integer) As Long 函数Fac的参数x接受i传递过来的值 Dim i As Integer, m As Long m = 1 For i = 1 To x m = m * i Next Fac = m 将阶乘m的值赋给Fac, 用来返回计算结果 End Function,Access数据库(第10章),2009年,

7、8,Sub aa() Debug.Print Fac(4) End Sub _ Function Fac(x As Integer) As Long 函数Fac的参数x接受4传递过来的值 Dim i As Integer, m As Long m = 1 For i = 1 To x m = m * i Next Fac = m 将阶乘m的值赋给Fac, 用来返回计算结果 End Function,Access数据库(第10章),2009年,9,第15讲 VBA的过程调用,过程分类与过程调用:,格式1:(无参标准过程) Sub () End Sub 调用语句: Call ,说明: 可在子过程的

8、语句序列中,用Call语句调用另一个子过程;子过程已定义的变量,可在另一个子过程中引用或修改。,Access数据库(第10章),2009年,10,在过程中,用Dim 或 Static来声明的局部变量其作用域只限在本过程。两者不同之处在于用Dim语句声明的变量在退出过程时变量的值被清除,而用Static声明的变量其值在退出过程时还保持有效。这样,用Static声明的变量其值就可以一直保留。用Static声明的变量又称为静态变量。在过程中未声明就使用的变量默认为是过程级变量。 在模块的申明区,用Private来声明的局部变量其作用域只限在本模块。是模块级变量,用Public声明的变量其作用域为整个

9、VB应用程序,是全局变量。,第15讲 变量作用域,变量作业域:,格式1:(静态变量定义) Static AS , 格式2:(静态变量定义) Dim AS , ,说明:,Access数据库(第10章),2009年,11,Sub 过程调用() Dim x As Integer, b As Integer Static a As Integer x = 8 Debug.Print “x=“, x, “a=“, a, “b=“, b Call 子过程 MsgBox “x=“ & x & “ a=“ & a & “ b=“ & b End Sub _ Sub 子过程() x = x + 8 a = a+

10、2 10 b = a / 2 c = 3 Debug.Print “x=“, c, “a=“, a, “b=“, b End Sub,Access数据库(第10章),2009年,12,第15讲 VBA的过程调用_形参与实参,过程分类与过程调用:,格式1:(无参标准过程) Sub () End Sub 调用语句: Call ,说明: 可在子过程的语句序列中,用Call语句调用另一个子过程;子过程已定义的变量,可在另一个子过程中引用或修改。,格式1:(有参标准过程) Sub () End Sub 调用语句: Call (),说明:在子过程的语句序列中,用Call语句调用另一个子过程时;实参必须和形

11、参个数相同,类型相同;有按位置传递和按值传递两种方式。,Access数据库(第10章),2009年,13,按值传递参数:按值传递参数指的是形参与实参占用不同的内存单元,是两个不同的变量。这种传递方法是实参将其值赋给形参,形参的变化不会影响到实参的值。要按值传递,必须在形参前加ByVal关键字。,第15讲 VBA的过程调用中的参数传递,按地址传递参数:按地址传递参数的方式无论实参与形参的名字是否相同,在内存中它们都占用相同的存储单元。当子过程的形参值发生变化时,主过程中的实参值也发生相应的变化。要显式地指定是按地址传递,可在形参前加ByRef关键字。VBA中默认的参数传递方式是按地址传递,所以这

12、个ByRef也可以省略。,Access数据库(第10章),2009年,14,Dim a As Integer Option Explicit Sub area() Dim x As Integer, y As Integer, z As Integer x = 10: y = 10 Call calcu(x, y, z) Debug.Print x & “*“ & y & “=“ & z End Sub Sub calcu(ByRef a As Integer, b As Integer, c As Integer) c = a * b End Sub,Access数据库(第10章),2009

13、年,15,Sub first() Dim x As Integer, y As Integer x = 10: y = 20 Debug.Print “调用second(x, y)前:“ & “x=“ & x & “ y=“ & y Call second(x, y) Debug.Print “调用second(x, y)后:“ & “x=“ & x & “ y=“ & y End Sub Sub second(ByVal a As Integer, ByVal b As Integer) Debug.Print “second(x, y)函数中,A,B赋值前:“ & “a=“ & a & “

14、 b=“ & b a = 33: b = 44 Debug.Print “second(x, y)函数中,A,B赋值后:“ & “a=“ & a & “ b=“ & b End Sub,Access数据库(第10章),2009年,16,第13讲 Access数据库的模块设计,面向对象的程序设计:,对象(Object):对象是一些相关的变量和方法的软件集合。在程序设计中需要处理的事物均可以看成一个对象。是一种将数据和操作过程结合在一起的数据结构。是应用程序的基本元素。例:我们创建的窗体或窗体上的任何一个具体控件。,类(Class):类是具有共同属性、共同行为的对象的集合。它是对客观对象的抽象和归

15、纳。因此,类又可以认为是定义同一类所有对象的变量和方法的集合。例如,命令按钮、文本框、组合框等。,Access数据库(第10章),2009年,17,第13讲 Access数据库的模块设计,面向对象的程序设计:,属性(Property):属性是对象具有的物理性质及特征的描述。通过对属性的设置,可以设置对象的外观和某方面的状态。在Access中,窗体、报表、和控件等都是对象,而窗体的大小、控件的位置等都是对象的属性。为了使所编的软件在运行的时候各种界面看起来更美观,我们必须在设计软件时对每个对象的有关属性做适当的设置。所谓“有关“,就是对于一个对象来说,在一个软件中只有部分与这个软件有关的属性需要设置,而大部分可能不需要设置,只需使用它们隐含的设置就行了,而同一个对象在另一个地方可能需要设置的属性就又不同了。 对于属性的设置,有些只需用鼠标做适当的拖动即可,如长、宽、放的位置等,当然它们也可以在属性窗口中设置,另一些则必须在属性窗口中进行设置,如字体、颜色、标题等。而有些就只能在程序中设置。,Access数据库(第10章),2009年,18,第13讲 Access数据库的模块设计,面向对象的程序设计:,方法(Method):也叫“方法程序”。它描述了对象的行为。对象的方法就是指对象

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 高等教育 > 大学课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号