Access15过程调用与参数传递.ppt_第1页
Access15过程调用与参数传递.ppt_第2页
Access15过程调用与参数传递.ppt_第3页
Access15过程调用与参数传递.ppt_第4页
Access15过程调用与参数传递.ppt_第5页
已阅读5页,还剩29页未读 继续免费阅读

下载本文档

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

文档简介

Access数据库(第10章),2009年,1,第15讲VBA的过程调用与变量作用域:,复习:标准模块与类模块模块由过程组成:,一个模块有1到多个过程组成:所有模块都有一个声明区(过程),在模块的最前面,用来定义下面过程要用到的变量和字符比较方式等:P257,OptionBase0|1声明模块中数组下标的初始值,默认为0OptionCompareDatabase声明模块中字符串比较的方法。用数据库的区域ID确定排序级别进行比较。OptionExplicit强制显示声明模块中的所有变量。,Access数据库(第10章),2009年,2,第15讲子过程与函数过程,Sub(子程序)过程Sub过程也称为子程序,它一般执行某种操作或一系列运算,但没有返回值。用户可以自己创建Sub过程或使用Access已经创建好的事件过程模块。数据库的每一个窗体和报表都有内置的窗体模块或报表模块。这些模块包含事件过程模板,用户可以在其中添加自己的代码。当窗体、报表或在其上的控件中发生相应的事件时,Access将自动运行这些代码。例如,可以在“学生信息登记”窗体上添加一个“添加记录”的按钮,并在该按钮的单击事件中写上相应的代码,就可以为“学生信息”表增加记录。,Access数据库(第10章),2009年,3,Sub质数1to100()DimiAsInteger,jAsInteger,kAsIntegerk=1Fori=1To100Forj=2Toi-1If(i/j)=(ij)ThenExitForNextjIfj=iThenDebug.Printi,k=k+1EndIfIfk=7Thenk=1Debug.PrintEndIfNextiEndSub,Access数据库(第10章),2009年,4,Sub三角形()DimiAsInteger,jAsIntegerDebug.PrintFori=1To9Debug.PrintSpace(15-i);Forj=1Toi*2-1Debug.Print*;NextjDebug.PrintNextiEndSub,Access数据库(第10章),2009年,5,Sub循环()DimxAsInteger,aAsInteger,bAsIntegerx=8Fora=0To1DoWhileb25b=b+a+xLoopNextDebug.Printb=&bMsgBoxb=&bEndSub,Access数据库(第10章),2009年,6,第15讲子过程与函数过程,Function(函数)过程Function过程能够返回一个计算结果。Access提供了许多内置的标准函数以供程序直接调用。例如,Date()函数返回当前机器的系统日期。除了系统提供的内置函数以外,用户也可以自定义函数。编辑一个Function过程的过程就是用户自己定义一个函数的过程。Function过程的优点就是程序可以利用函数的返回值在表达式中,以便对语句或方法中的一些属性进行设置,或在筛选、查询的准则表达式中使用。,Access数据库(第10章),2009年,7,第13讲Access数据库的模块设计,函数过程:,格式1:Function()As=EndFunction,FunctionA(x)DimiAsIntegerA=1Fori=2ToxA=A*iNextEndFunction,计算阶乘的函数过程,FunctionFac(xAsInteger)AsLong函数Fac的参数x接受i传递过来的值DimiAsInteger,mAsLongm=1Fori=1Toxm=m*iNextFac=m将阶乘m的值赋给Fac,用来返回计算结果EndFunction,Access数据库(第10章),2009年,8,Subaa()Debug.PrintFac(4)EndSub_FunctionFac(xAsInteger)AsLong函数Fac的参数x接受4传递过来的值DimiAsInteger,mAsLongm=1Fori=1Toxm=m*iNextFac=m将阶乘m的值赋给Fac,用来返回计算结果EndFunction,Access数据库(第10章),2009年,9,第15讲VBA的过程调用,过程分类与过程调用:,格式1:(无参标准过程)Sub()EndSub调用语句:Call,说明:可在子过程的语句序列中,用Call语句调用另一个子过程;子过程已定义的变量,可在另一个子过程中引用或修改。,Access数据库(第10章),2009年,10,在过程中,用Dim或Static来声明的局部变量其作用域只限在本过程。两者不同之处在于用Dim语句声明的变量在退出过程时变量的值被清除,而用Static声明的变量其值在退出过程时还保持有效。这样,用Static声明的变量其值就可以一直保留。用Static声明的变量又称为静态变量。在过程中未声明就使用的变量默认为是过程级变量。在模块的申明区,用Private来声明的局部变量其作用域只限在本模块。是模块级变量,用Public声明的变量其作用域为整个VB应用程序,是全局变量。,第15讲变量作用域,变量作业域:,格式1:(静态变量定义)StaticAS,格式2:(静态变量定义)DimAS,说明:,Access数据库(第10章),2009年,11,Sub过程调用()DimxAsInteger,bAsIntegerStaticaAsIntegerx=8Debug.Printx=,x,a=,a,b=,bCall子过程MsgBoxx=&x&a=&a&b=&bEndSub_Sub子过程()x=x+8a=a+210b=a/2c=3Debug.Printx=,c,a=,a,b=,bEndSub,Access数据库(第10章),2009年,12,第15讲VBA的过程调用_形参与实参,过程分类与过程调用:,格式1:(无参标准过程)Sub()EndSub调用语句:Call,说明:可在子过程的语句序列中,用Call语句调用另一个子过程;子过程已定义的变量,可在另一个子过程中引用或修改。,格式1:(有参标准过程)Sub()EndSub调用语句:Call(),说明:在子过程的语句序列中,用Call语句调用另一个子过程时;实参必须和形参个数相同,类型相同;有按位置传递和按值传递两种方式。,Access数据库(第10章),2009年,13,按值传递参数:按值传递参数指的是形参与实参占用不同的内存单元,是两个不同的变量。这种传递方法是实参将其值赋给形参,形参的变化不会影响到实参的值。要按值传递,必须在形参前加ByVal关键字。,第15讲VBA的过程调用中的参数传递,按地址传递参数:按地址传递参数的方式无论实参与形参的名字是否相同,在内存中它们都占用相同的存储单元。当子过程的形参值发生变化时,主过程中的实参值也发生相应的变化。要显式地指定是按地址传递,可在形参前加ByRef关键字。VBA中默认的参数传递方式是按地址传递,所以这个ByRef也可以省略。,Access数据库(第10章),2009年,14,DimaAsIntegerOptionExplicitSubarea()DimxAsInteger,yAsInteger,zAsIntegerx=10:y=10Callcalcu(x,y,z)Debug.Printx&*&y&=&zEndSubSubcalcu(ByRefaAsInteger,bAsInteger,cAsInteger)c=a*bEndSub,Access数据库(第10章),2009年,15,Subfirst()DimxAsInteger,yAsIntegerx=10:y=20Debug.Print调用second(x,y)前:&x=&x&y=&yCallsecond(x,y)Debug.Print调用second(x,y)后:&x=&x&y=&yEndSubSubsecond(ByValaAsInteger,ByValbAsInteger)Debug.Printsecond(x,y)函数中,A,B赋值前:&a=&a&b=&ba=33:b=44Debug.Printsecond(x,y)函数中,A,B赋值后:&a=&a&b=&bEndSub,Access数据库(第10章),2009年,16,第13讲Access数据库的模块设计,面向对象的程序设计:,对象(Object):对象是一些相关的变量和方法的软件集合。在程序设计中需要处理的事物均可以看成一个对象。是一种将数据和操作过程结合在一起的数据结构。是应用程序的基本元素。例:我们创建的窗体或窗体上的任何一个具体控件。,类(Class):类是具有共同属性、共同行为的对象的集合。它是对客观对象的抽象和归纳。因此,类又可以认为是定义同一类所有对象的变量和方法的集合。例如,命令按钮、文本框、组合框等。,Access数据库(第10章),2009年,17,第13讲Access数据库的模块设计,面向对象的程序设计:,属性(Property):属性是对象具有的物理性质及特征的描述。通过对属性的设置,可以设置对象的外观和某方面的状态。在Access中,窗体、报表、和控件等都是对象,而窗体的大小、控件的位置等都是对象的属性。为了使所编的软件在运行的时候各种界面看起来更美观,我们必须在设计软件时对每个对象的有关属性做适当的设置。所谓有关,就是对于一个对象来说,在一个软件中只有部分与这个软件有关的属性需要设置,而大部分可能不需要设置,只需使用它们隐含的设置就行了,而同一个对象在另一个地方可能需要设置的属性就又不同了。对于属性的设置,有些只需用鼠标做适当的拖动即可,如长、宽、放的位置等,当然它们也可以在属性窗口中设置,另一些则必须在属性窗口中进行设置,如字体、颜色、标题等。而有些就只能在程序中设置。,Access数据库(第10章),2009年,18,第13讲Access数据库的模块设计,面向对象的程序设计:,方法(Method):也叫“方法程序”。它描述了对象的行为。对象的方法就是指对象完成某种任务所执行的操作。这些方法可以在我们需要的时候调用。在VBA中,调用属性和方法的格式如下:.(,.),Access数据库(第10章),2009年,19,第13讲Access数据库的模块设计,面向对象的程序设计:,事件(Event):事件就是可能会发生在对象上的事情,也可以说我们对对象所做的操作(或者系统对某个对象的操作)。它是Access预先定义好的能够被对象识别的动作。如单击鼠标(Click)事件、双击鼠标(DblClick)事件、移动鼠标(MouseMove)事件、加载(Load)事件等等。,事件过程:为了使得对象在某一事件发生时能够做出所需要的反应,我们就必须针对这一事件编出相应的程序代码来完成这一目标。如果一个对象的某个事件被编写了相应的代码,当这一事件发生时(如按钮被按动),相应的程序段就被激活,并开始执行,如这一事件不发生,则这段程序就不会运行。为这个事件而编写的代码就称为事件过程。而对于没有编写事件过程的事件,即使发生也不会有任何反应。,Access数据库(第10章),2009年,20,第13讲Access数据库的模块设计,面向对象的程序设计:,在Access中,事件过程总是与窗体、报表或控件等对象相关联的。,在VBE窗口中,通过“对象浏览器”窗口,可以查看到各种库中的类、由类创建对象以及对象的属性、事件和方法等。,Access数据库(第10章),2009年,21,第13讲Access数据库的模块设计,面向对象的程序设计:,Access中的对象:我们已学过了表、查询、窗体、报表、数据访问页、宏和模块;其中,在窗体、报表、数据访问页中创建的控件也是Access的对象;此外,Access中还有许多其它对象可用于您的Access应用程序中,其中最重要的是DoCmd、CurrentProject、CurrentData、CodeProject、CodeData和Screen等对象;它们的主要功能就是:通过调用包含在其内部的方法,实现在VBA编程中对Access数据库的操作;下面重点介绍DoCmd对象及其它对象的学习方法。,Access数据库(第10章),2009年,22,第13讲Access数据库的模块设计,面向对象的程序设计:,DoCmd对象:学习方法;按Crtl+F11进入VBA窗口,选【视图】菜单下的【对象浏览器】打开对象浏览器窗口:,1,2,3,4,5,Access数据库(第10章),2009年,23,第13讲Access数据库的模块设计,面向对象的程序设计:,OpenForm方法帮助信息,参阅应用于示例特性在VisualBasic中,OpenForm方法执行OpenForm操作expression.OpenForm(FormName,View,FilterName,WhereCondition,DataMode,WindowMode,OpenArgs)expression必需。返回“应用于”列表中的一个对象的表达式。,Access数据库(第10章),2009年,24,第13讲Access数据库的模块设计,面向对象的程序设计:,OpenForm方法帮助信息,参阅应用于示例特性FormName必需Variant型。字符串表达式(字符串表达式:任一求值为一列连续字符的表达式。表达式的元素可以是:返回字符串或字符串Variant(VarType8)的函数;字符串字面值、常量、变量或Variant。),表示当前数据库中窗体(窗体:Access数据库对象之一,可以在这种对象上放置控件,用于执行操作,或在字段中输入、显示、编辑数据。)的有效名称。如果在某类库数据库(类库数据库:可以从任意应用程序中调用的过程和数据库对象的集合。为了使用库中的项,必须先建立从当前数据库到类库数据库的引用。)中执行包含OpenForm方法的VisualBasic代码,则MicrosoftAccess将先在该类库数据库中查找具有相同名称的窗体,然后再在当前数据库中查找。,Access数据库(第10章),2009年,25,第13讲Access数据库的模块设计,面向对象的程序设计:,OpenForm方法帮助信息,View可选AcFormView。AcFormView可以是下列AcFormView常量之一:acDesignacFormDSacFormPivotChartacFormPivotTableacNormal默认。在“窗体”视图(“窗体”视图:一个显示窗体以便显示或接受数据的窗口。“窗体”视图是添加和修改表中数据的主要方式。在该视图中还可以更改窗体的设计。)中打开窗体。acPreview如果将该参数留空,将假定为默认常量(acNormal)。WhereCondition可选Variant型。字符串表达式,表示不包括词WHERE的有效SQLWHERE子句(WHERE子句:SQL语句中用于指定哪部分记录被检索的语素。)。,Access数据库(第10章),2009年,26,第13讲Access数据库的模块设计,面向对象的程序设计:,OpenForm方法帮助信息,FilterName可选Variant型。字符串表达式,表示当前数据库中查询(查询:有关表中所存数据的问题,或要对数据执行操作的请求。查询可以将多个表中的数据放在一起,以作为窗体、报表或数据访问页的数据源。)的有效名称。DataMode可选AcFormOpenDataMode。窗体的数据输入模式。它只应用于在“窗体”视图或“数据表”视图中打开的窗体。AcFormOpenDataMode可以是这些AcFormOpenDataMode常量之一:acFormAdd用户可以添加新记录,但是不能编辑现有记录。acFormEdit用户可以编辑现有记录和添加新记录。acFormPropertySettings默认acFormReadOnly用户只能查看记录。如果将该参数留空(将假定为默认常量,即acFormPropertySettings),则MicrosoftAccess将在由窗体的AllowEdits、AllowDeletions、AllowAdditions和DataEntry属性设置的数据模式中打开窗体。,Access数据库(第10章),2009年,27,第13讲Access数据库的模块设计,面向对象的程序设计:,OpenForm方法帮助信息,WindowMode可选,AcWindowMode。打开窗体时所采用的窗口模式。AcWindowMode可以是下列AcWindowMode常量之一:acDialog窗体的Modal和PopUp属性设为“是”。acHidden窗体隐藏。acIcon打开窗体并在Windows工具栏中最小化。acWindowNormal默认值窗体采用它的属性所设置的模式如果将该参数留空,将假定为默认常量(acWindowNormal)。,Access数据库(第10章),2009年,28,第13讲Access数据库的模块设计,面向对象的程序设计:,OpenForm方法帮助信息,OpenArgs可选Variant型。字符串表达式,用于设置窗体的OpenArgs属性。而后该设置可用于窗体模块(窗体模块:该模块中包含在指定的窗体或其控件上事件发生时触发的所有事件过程的代码。)中的代码,例如Open事件过程(事件过程:自动执行的过程,以响应用户或程序代码启动的事件或系统触发的事件。)。OpenArgs属性也可以在宏(宏:可用来使任务自动化的操作或操作集。宏在VisualBasicforApplications编程语言中录制。)和表达式(表达式:算术或逻辑运算符、常数、函数和字段名称、控件和属性的任意组合,计算结果为单个值。表达式可执行计算、操作字符或测试数据。)中引用。,Access数据库(第10章),2009年,29,第13讲Access数据库的模块设计,面向对象的程序设计:,OpenForm方法帮助信息,OpenArgs例:例如,假定打开的是一个客户列表的连续窗体(连续窗体:在“窗体”视图中,能在屏幕上显示多条记录的窗体。)。如果希望当窗体打开时焦点(焦点:一种接受通过鼠标或键盘操作或SetFocus方法进行的用户输入的能力。焦点可由用户或由应用程序设置。具有焦点的对象通常由突出显示的标题或标题栏指示。)移到特定的客户记录上,则可以使用openargs参数指定客户名称,然后使用FindRecord方法,将焦点移到指定的客户名称的记录上。该参数仅在VisualBasic中才可用。说明:有关该操作及其参数如何使用的详细信息,请参阅该操作的主题。,Access数据库(第10章),2009年,30,第13讲Access数据库的模块设计,面向对象的程序设计:,wherecondition参数的最大长度为32,768个字符(而在“宏”窗口中,WhereCondition操作参数的最大长度为256个字符)。语法中的可选参数可以留空,但是必须包含参数的逗号。如果位于末端的参数留空,则在指定的最后一个参数后面不必使用逗号。示例:下面的示例在“窗体”视图中打开“雇员”窗体,并只显示“姓氏”字段为King的记录。可以编辑显示的记录,也可以添加新记录。DoCmd.OpenFo

温馨提示

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

评论

0/150

提交评论