Access_15过程调用与参数传递.ppt
《Access_15过程调用与参数传递.ppt》由会员分享,可在线阅读,更多相关《Access_15过程调用与参数传递.ppt(34页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、 第第1515讲讲 VBAVBA的过程调用与变量作用域的过程调用与变量作用域:n复习:标准模块与类模块复习:标准模块与类模块复习:标准模块与类模块复习:标准模块与类模块n n模块由过程组成:模块由过程组成:模块由过程组成:模块由过程组成:n n一个模块有一个模块有一个模块有一个模块有1 1 1 1到多个过程组成:所有模块都有到多个过程组成:所有模块都有到多个过程组成:所有模块都有到多个过程组成:所有模块都有一个声明区一个声明区一个声明区一个声明区(过程过程过程过程),在模块的最前面,用来,在模块的最前面,用来,在模块的最前面,用来,在模块的最前面,用来定义下面过程要用到的变量和字符比较方式定义
2、下面过程要用到的变量和字符比较方式定义下面过程要用到的变量和字符比较方式定义下面过程要用到的变量和字符比较方式等:等:等:等:P257P257P257P257OptionBase0|1声明模块中数组下标的初始值,声明模块中数组下标的初始值,默认为默认为0OptionCompareDatabase声明模块中字符串比较的方法。声明模块中字符串比较的方法。用数据库的区域用数据库的区域ID确定排序级别确定排序级别进行比较。进行比较。OptionExplicit强制显示声明模块中的所有变量。强制显示声明模块中的所有变量。2009年1AccessAccess数据库(第数据库(第数据库(第数据库(第1010
3、章)章)章)章)第第1515讲讲 子过程与函数过程子过程与函数过程SubSub(子程序)过程(子程序)过程(子程序)过程(子程序)过程ppSubSub过程也称为子程序,它一般执行某种操作或一系列运过程也称为子程序,它一般执行某种操作或一系列运过程也称为子程序,它一般执行某种操作或一系列运过程也称为子程序,它一般执行某种操作或一系列运算,但没有返回值。用户可以自己创建算,但没有返回值。用户可以自己创建算,但没有返回值。用户可以自己创建算,但没有返回值。用户可以自己创建SubSub过程或使用过程或使用过程或使用过程或使用AccessAccess已经创建好的事件过程模块。已经创建好的事件过程模块。已
4、经创建好的事件过程模块。已经创建好的事件过程模块。pp数据库的每一个窗体和报表都有内置的窗体模块或报表模数据库的每一个窗体和报表都有内置的窗体模块或报表模数据库的每一个窗体和报表都有内置的窗体模块或报表模数据库的每一个窗体和报表都有内置的窗体模块或报表模块。这些模块包含事件过程模板,用户可以在其中添加自块。这些模块包含事件过程模板,用户可以在其中添加自块。这些模块包含事件过程模板,用户可以在其中添加自块。这些模块包含事件过程模板,用户可以在其中添加自己的代码。当窗体、报表或在其上的控件中发生相应的事己的代码。当窗体、报表或在其上的控件中发生相应的事己的代码。当窗体、报表或在其上的控件中发生相应
5、的事己的代码。当窗体、报表或在其上的控件中发生相应的事件时,件时,件时,件时,AccessAccess将自动运行这些代码。例如,可以在将自动运行这些代码。例如,可以在将自动运行这些代码。例如,可以在将自动运行这些代码。例如,可以在“学生学生学生学生信息登记信息登记信息登记信息登记”窗体上添加一个窗体上添加一个窗体上添加一个窗体上添加一个“添加记录添加记录添加记录添加记录”的按钮,并在该的按钮,并在该的按钮,并在该的按钮,并在该按钮的单击事件中写上相应的代码,就可以为按钮的单击事件中写上相应的代码,就可以为按钮的单击事件中写上相应的代码,就可以为按钮的单击事件中写上相应的代码,就可以为“学生信息
6、学生信息学生信息学生信息”表增加记录。表增加记录。表增加记录。表增加记录。2009年2AccessAccess数据库(第数据库(第数据库(第数据库(第1010章)章)章)章)Sub Sub 质数质数质数质数1to100()1to100()Dim i As Integer,j As Integer,k As Integer Dim i As Integer,j As Integer,k As Integer k=1 k=1 For i=1 To 100 For i=1 To 100 For j=2 To i-1 For j=2 To i-1 If(i/j)=(i j)Then Exit For
7、If(i/j)=(i j)Then Exit For Next j Next j If j=i Then If j=i Then Debug.PrintDebug.Print i,i,k=k+1 k=k+1 End If End If If k=7 Then If k=7 Then k=1 k=1 Debug.PrintDebug.Print End If End If Next i Next iEnd SubEnd Sub2009年3AccessAccess数据库(第数据库(第数据库(第数据库(第1010章)章)章)章)Sub Sub 三角形三角形三角形三角形()()Dim i As Int
8、eger,j As Integer Dim i As Integer,j As Integer Debug.PrintDebug.Print For i=1 To 9 For i=1 To 9 Debug.PrintDebug.Print Space(15-i);Space(15-i);For j=1 To i*2-1 For j=1 To i*2-1 Debug.PrintDebug.Print*;*;Next j Next j Debug.PrintDebug.Print Next i Next iEnd SubEnd Sub2009年4AccessAccess数据库(第数据库(第数据库(
9、第数据库(第1010章)章)章)章)Sub Sub 循环循环循环循环()()Dim x As Integer,a As Integer,b As Integer Dim x As Integer,a As Integer,b As Integer x=8 x=8 For a=0 To 1 For a=0 To 1 Do While b 25 Do While b 25 b=b+a+x b=b+a+x Loop Loop Next Next Debug.PrintDebug.Print b=&b b=&b MsgBoxMsgBox b=&b b=&bEnd SubEnd Sub2009年5Acc
10、essAccess数据库(第数据库(第数据库(第数据库(第1010章)章)章)章)第第1515讲讲 子过程与函数过程子过程与函数过程n nFunctionFunction(函数)过程(函数)过程(函数)过程(函数)过程n nFunctionFunction过程能够返回一个计算结果。过程能够返回一个计算结果。过程能够返回一个计算结果。过程能够返回一个计算结果。AccessAccess提供了许多提供了许多提供了许多提供了许多内置的标准函数以供程序直接调用。例如,内置的标准函数以供程序直接调用。例如,内置的标准函数以供程序直接调用。例如,内置的标准函数以供程序直接调用。例如,Date()Date()
11、函数返函数返函数返函数返回当前机器的系统日期。除了系统提供的内置函数以外,回当前机器的系统日期。除了系统提供的内置函数以外,回当前机器的系统日期。除了系统提供的内置函数以外,回当前机器的系统日期。除了系统提供的内置函数以外,用户也可以自定义函数。编辑一个用户也可以自定义函数。编辑一个用户也可以自定义函数。编辑一个用户也可以自定义函数。编辑一个FunctionFunction过程的过程就过程的过程就过程的过程就过程的过程就是用户自己定义一个函数的过程。是用户自己定义一个函数的过程。是用户自己定义一个函数的过程。是用户自己定义一个函数的过程。n nFunctionFunction过程的优点就是程序
12、可以利用函数的返回值在表过程的优点就是程序可以利用函数的返回值在表过程的优点就是程序可以利用函数的返回值在表过程的优点就是程序可以利用函数的返回值在表达式中,以便对语句或方法中的一些属性进行设置,或在达式中,以便对语句或方法中的一些属性进行设置,或在达式中,以便对语句或方法中的一些属性进行设置,或在达式中,以便对语句或方法中的一些属性进行设置,或在筛选、查询的准则表达式中使用。筛选、查询的准则表达式中使用。筛选、查询的准则表达式中使用。筛选、查询的准则表达式中使用。2009年6AccessAccess数据库(第数据库(第数据库(第数据库(第1010章)章)章)章)第第1313讲讲 Access
13、Access数据库的模块设计数据库的模块设计 n函数过程函数过程:格式格式1 1:FunctionFunction()As)As =EndFunctionEndFunctionFunctionA(x)DimiAsIntegerA=1Fori=2ToxA=A*iNextEndFunctionn计算阶乘的函数过程计算阶乘的函数过程FunctionFunctionFac(xFac(xAsInteger)AsLongAsInteger)AsLong 函数函数函数函数FacFac的参数的参数的参数的参数x x接受接受接受接受i i传递过来的值传递过来的值传递过来的值传递过来的值DimiAsInteger
14、,mAsLongDimiAsInteger,mAsLongm=1m=1Fori=1ToxFori=1Toxm=m*im=m*iNextNextFacFac=m=m 将阶乘将阶乘将阶乘将阶乘mm的值赋给的值赋给的值赋给的值赋给FacFac,用来返回计算结果用来返回计算结果用来返回计算结果用来返回计算结果EndFunctionEndFunction2009年7AccessAccess数据库(第数据库(第数据库(第数据库(第1010章)章)章)章)Sub Sub aaaa()()Debug.PrintDebug.Print Fac(4)Fac(4)End SubEnd Sub_Function Fu
15、nction Fac(xFac(x As Integer)As Long As Integer)As Long 函数函数函数函数FacFac的参数的参数的参数的参数x x接受接受接受接受4 4传递过来的值传递过来的值传递过来的值传递过来的值 Dim i As Integer,m As LongDim i As Integer,m As Long m=1 m=1 For i=1 To x For i=1 To x m=m*i m=m*i Next Next FacFac=m =m 将阶乘将阶乘将阶乘将阶乘mm的值赋给的值赋给的值赋给的值赋给FacFac,用来返回计算结果用来返回计算结果用来返回计
16、算结果用来返回计算结果End FunctionEnd Function2009年8AccessAccess数据库(第数据库(第数据库(第数据库(第1010章)章)章)章)第第1515讲讲 VBAVBA的过程调用的过程调用n过程分类与过程调用过程分类与过程调用:格式格式1 1:(无参标准过程无参标准过程)SubSub()()1EndSubEndSub调用语句:调用语句:调用语句:调用语句:CallCall 说明:可在子过程的语句序列中,用Call语句调用另一个子过程;子过程已定义的变量,可在另一个子过程中引用或修改。2009年9AccessAccess数据库(第数据库(第数据库(第数据库(第10
17、10章)章)章)章)在过程中,用Dim 或 Static来声明的局部变量其作用域只限在本过程过程。两者不同之处在于用Dim语句声明的变量在退出过程时变量的值被清除,而用Static声明的变量其值在退出过程时还保持有效。这样,用Static声明的变量其值就可以一直保留。用Static声明的变量又称为静态变量。在过程中未声明就使用的变量默认为是过程级变量过程级变量。在模块的申明区模块的申明区,用Private来声明的局部变量其作用域只限在本模块模块。是模块级变量模块级变量,用Public声明的变量其作用域为整个VB应用程序,是全局变量全局变量。第第1515讲讲 变量作用域变量作用域n变量作业域变量
18、作业域:格式格式1 1:(静态变量定义静态变量定义)StaticStaticASAS,格式格式2 2:(静态变量定义静态变量定义)DimDimASAS,说明:说明:2009年10AccessAccess数据库(第数据库(第数据库(第数据库(第1010章)章)章)章)Sub Sub 过程调用过程调用过程调用过程调用()()Dim x As Integer,b As Integer Dim x As Integer,b As Integer Static a As Integer Static a As Integer x=8 x=8 Debug.PrintDebug.Print x=,x,a=,
19、a,b=,b x=,x,a=,a,b=,b Call Call 子过程子过程子过程子过程 MsgBoxMsgBox x=&x&a=&a&b=&b x=&x&a=&a&b=&bEnd SubEnd Sub_Sub Sub 子过程子过程子过程子过程()()x=x+8 x=x+8 a=a+2 10 a=a+2 10 b=a/2 b=a/2 c=3 c=3 Debug.PrintDebug.Print x=,c,a=,a,b=,b x=,c,a=,a,b=,bEnd SubEnd Sub2009年11AccessAccess数据库(第数据库(第数据库(第数据库(第1010章)章)章)章)第第1515讲
20、讲 VBAVBA的过程调用的过程调用_ _形参与实参形参与实参形参与实参形参与实参n过程分类与过程调用过程分类与过程调用:格式格式1 1:(无参标准过程无参标准过程)SubSub()()1EndSubEndSub调用语句:调用语句:调用语句:调用语句:CallCall 说明:可在子过程的语句序列中,用Call语句调用另一个子过程;子过程已定义的变量,可在另一个子过程中引用或修改。格式格式1 1:(有参标准过程有参标准过程)SubSub()1EndSubEndSub调用语句:调用语句:调用语句:调用语句:CallCall()说明:在子过程的语句序列中,用Call语句调用另一个子过程时;实参必须和
21、形参个数相同,类型相同;有按位置传递和按值传递两种方式。2009年12AccessAccess数据库(第数据库(第数据库(第数据库(第1010章)章)章)章)按值传递参数:按值传递参数:按值传递参数指的是形参与实参占用按值传递参数指的是形参与实参占用不同的内存单元,是两个不同的变量。这种传递方法是不同的内存单元,是两个不同的变量。这种传递方法是实参将其值赋给形参,形参的变化不会影响到实参的值。实参将其值赋给形参,形参的变化不会影响到实参的值。要按值传递,必须在形参前加要按值传递,必须在形参前加ByValByVal关键字。关键字。第第15讲讲VBA的过程调用中的的过程调用中的参数传递参数传递按地
22、址传递参数按地址传递参数:按地址传递参数的方式无论实参与按地址传递参数的方式无论实参与形参的名字是否相同,在内存中它们都占用相同的存形参的名字是否相同,在内存中它们都占用相同的存储单元。当子过程的形参值发生变化时,主过程中的储单元。当子过程的形参值发生变化时,主过程中的实参值也发生相应的变化。要显式地指定是按地址传实参值也发生相应的变化。要显式地指定是按地址传递,可在形参前加递,可在形参前加ByRefByRef关键字。关键字。VBAVBA中默认的参数传中默认的参数传递方式是按地址传递,所以这个递方式是按地址传递,所以这个ByRefByRef也可以省略。也可以省略。2009年13AccessAc
23、cess数据库(第数据库(第数据库(第数据库(第1010章)章)章)章)Dim a As IntegerDim a As IntegerOption ExplicitOption ExplicitSub area()Sub area()Dim x As Integer,y As Integer,z As Integer Dim x As Integer,y As Integer,z As Integer x=10:y=10 x=10:y=10 Call Call calcu(xcalcu(x,y,z),y,z)Debug.PrintDebug.Print x&*&y&=&z x&*&y&=&z
24、End SubEnd SubSub Sub calcu(ByRefcalcu(ByRef a As Integer,b As Integer,c As a As Integer,b As Integer,c As Integer)Integer)c=a*b c=a*bEnd SubEnd Sub2009年14AccessAccess数据库(第数据库(第数据库(第数据库(第1010章)章)章)章)Sub first()Sub first()Dim x As Integer,y As Integer Dim x As Integer,y As Integer x=10:y=20 x=10:y=20
25、 Debug.PrintDebug.Print 调用调用调用调用second(xsecond(x,y),y)前:前:前:前:&x=&x&x=&x&y=&yy=&y Call Call second(xsecond(x,y),y)Debug.PrintDebug.Print 调用调用调用调用second(xsecond(x,y),y)后:后:后:后:&x=&x&x=&x&y=&yy=&yEnd SubEnd SubSub Sub second(ByValsecond(ByVal a As Integer,a As Integer,ByValByVal b As Integer)b As Inte
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Access_15 过程 调用 参数 传递
限制150内