您好,欢迎访问三七文档
当前位置:首页 > 行业资料 > 冶金工业 > 第8章模块与vba程序设计
为了能解决一些实际开发活动中的复杂的数据库应用问题,Access数据库系统提供了“模块”对象来解决此类难题。本章主要介绍Access数据库的模块的基本概念及VBA语言的程序设计。模块与VBA程序设计第8章模块与VBA程序设计本章主要内容退出8.1模块概述8.2VBA程序设计概述8.3VBA编程环境——VBE窗口8.4VBA编程基础9.5VBA程序语句8.6VBA中的常用操作方法8.7VBA程序调试和错误处理8.1模块概述模块是Access数据库中的一个数据库对象,它以VBA(VisualBasicforApplication)语言为基础编写。通俗来说,模块是Access数据库中用于保存VBA程序代码的容器。模块基本上是由声明、语句和(Sub和Function)过程组成的集合,它们作为一个已命名的单元存储在一起,对VBA程序代码进行组织。Access有两种类型的模块:标准模块和类模块。8.1.1模块类型1.标准模块标准模块包含与任何其他对象都无关的常规过程,以及可以从数据库任何位置运行的经常使用的过程。在标准模块中,可以放置希望供整个数据库的其他过程使用的Sub过程和Function过程。标准模块中的公共变量或公共过程具有全局特性,其作用范围在整个应用程序里,生命周期是伴随着应用程序的运行而开始、关闭而结束。8.1.1模块类型(续)类模块是可以包含新对象的定义的模块。一个类的每个实例都新建一个对象。窗体模块和报表模块都是类模块,它们从属于各自的窗体和报表。窗体模块和报表模块通常都含有事件过程,而过程的运行用于响应窗体或报表上的事件。窗体模块和报表模块中的过程可以调用标准模块中已经定义好的过程。为窗体或报表创建第一个事件过程时,Access将自动创建与之关联的窗体模块或报表模块。窗体模块和报表模块具有局部特性,其作用范围局限在所属窗体或报表内部,而生命周期则是伴随着窗体或报表的打开而开始、关闭而结束。8.1.2模块的组成模块是装着VBA代码的容器。一个模块包含一个声明区域,包含一个或多个过程。如图9-1所示。过程是模块的单元组成,用VBA代码编写而成。过程分为Sub过程和Function过程两种类型。1.声明区域声明部分主要包括:Option声明、变量或常量或自定义数据类型的声明。模块中可以使用的Option声明语句包括:(1)OptionBase1声明模块中数组下标的默认下界为1,不声明则默认下界为0。(2)OptionCompareDatabase声明模块中需要字符串比较时,将根据数据库的区域ID确定的排序级别进行比较;不声明则按字符ASClI码进行比较。(3)OptionExplicit强制模块用到的变量必须先进行声明。此外,有关变量或常量的声明的语句格式将在8.4节介绍。2.Sub过程Sub过程又称为子过程。执行一系列操作,无返回值。Sub过程的定义格式如下:Sub过程名(形参列表)[VBA程序代码]EndSubVBA提供了一个关键字Call,可以调用该子过程。此外,可以引用该过程名来调用该子过程,此时,过程名后不能带有一对圆括号。3.Function过程Function过程又称为函数过程。执行一系列操作,有返回值。Function过程的定义格式如下:Function过程名(形参列表)[VBA程序代码]EndFunction函数过程不能使用Call来调用执行,需要直接引用函数过程名并必须后带一对圆括号。8.2VBA程序设计概述VB(VisualBasic)是一种面向对象程序设计语言,微软公司将其引用到其他常用的应用程序中,例如,在Office的成员Word、Excel、Access中,这种夹在应用程序中的VisualBasic版本称之为VBA(VisualBasicforApplication)。VBA是VB的子集。Access中使用的编程语言是VBA语言。当某些操作不能用其他Access对象实现或实现起来很困难时,就可以在模块中编写VBA程序代码,以完成这些复杂任务。Access内部提供了功能强大的向导机制,能处理基本的数据库操作。在此基础上再编写适当的程序代码,可以极大的改善程序功能。VBA是面向对象的程序设计语言。面向对象程序设计是一种以对象为基础,以事件来驱动对象的程序设计方法。8.2.1对象和对象名对象是VBA应用程序的基础构件。在开发一个Access数据库应用系统时,必须先建立各种对象,然后围绕对象进行程序设计。在Access中,表、查询、窗体、报表等是对象,字段、窗体和报表中的控件(如标签、文本框、按钮等)也是对象。每个对象均有名称,称为对象名。每个对象都有其属性、方法、事件等。对象有效的名称必须符合Access的标准命名规则,窗体、报表、字段等对象的名称不能超过64个字符,控件对象名称长度不能超过255个字符。8.2.1对象和对象名(续)对于未绑定控件,默认名称是控件的类型加上一个唯一的整数。例如,对于新建的文本框控件,其默认名称为:Text0、Text1等,以此类推。对于绑定控件,如果通过从字段列表中拖放字段来创建控件,则对象的默认名称是记录源中字段的名称。在“设计视图”(如窗体“设计视图”)窗口中,如果要修改某个对象的名称,可在该对象“属性表”对话框中,对“名称”属性赋予新的对象名称。注意:同一窗体或报表上的控件的名称不能相同。但不同窗体或报表上的控件的名称可以相同。8.2.1对象和对象名(续)Access数据库由表、查询、窗体、报表、页、宏和模块对象列表构成,形成不同的类。在“导航”窗格中可列出所有的数据库对象,单击“导航”窗格“浏览类别”中的任一对象类(如“窗体”),就展开相应对象(如“窗体”)类的对象列表。集合表达的是某类对象所包含的实例构成。8.2.2对象的属性对象属性是描述对象的特征。对象的每个属性都有一个默认值,这在“属性表”对话框中可以看到。如果不改变该值,应用程序就使用该默认值,如果默认值不能满足要求,就要对它重新设置。在VBA代码中,对象属性的引用方式:对象名.属性名Access中“对象”可以是单一对象,也可以是对象的集合。例如,Label0.caption中的Label0表示一个“标签”对象,Reports.Item(0)表示报表集合中的第一个报表对象。8.2.2对象的属性(续)在可视化的“设计视图”(如窗体“设计视图”)窗口中,若要查看或设置某一对象的属性,可以通过“属性表”对话框来进行,不过此时在“属性表”对话框中列出的属性名是中文的,如图8-2所示。但在VBE窗口中,输入某一对象名及“.”后弹出的“属性及方法”列表框中的属性名或方法名全都是英文的,如图8-3所示。中文的英文的表8-1窗体常用的格式属性(P214)窗体常用格式属性作用AutoCenter用于设置窗体打开时,是否放置屏幕中部BorderStyle用于设置窗体的边框样式Caption用于设置窗体的标题内容CloseButton用于设置是否在窗体中显出关闭按钮ControlBox用于设置是否在窗体中显出控制框MinMaxButtons用于设置是否在窗体显出最小化和最大化按钮NavigationButtons用于设置是否显出导航按钮Picture用于设置窗体的背景图片RecordSelector用于设置是否显出记录选定器ScrollBars用于设置是否显出滚动条表8-2窗体常用的数据属性(P215)窗体常用数据属性作用RecordSource用于设置窗体的数据来源OrderBy用于设置窗体中的记录的排序方式AllowAdditions用于设置窗体中的记录是否可以添加AllowDeletions用于设置窗体中的记录是否可以删除AllowEdits用于设置窗体中的记录是否可以编辑AllowFilters用于设置窗体中的记录是否可以筛选表8-3文本框常用的属性(P215)文本框属性作用BackColor用于设置文本框的背景颜色,如设置蓝色:text0.BackColor=RGB(0,0,255)ForeColor用于设置文本框的前景(字体)颜色BorderColor用于设置文本框的边框颜色BorderStyle用于设置文本框的边框样式Enabled用于设置文本框是否可用Name用于设置文本框的名称Locked用于设置文本框是否可编辑Value用于设置文本框中显显示的内容Visible用于设置文本框是否可见Text用于设置在文本框中显示的文本(要求文本框先获得焦点)InputMask用于设置文本框的输入掩码。若将InputMask属性设为“密码”,则在该文本框中键入的任何字符都将以原字符保存,但显示为星号(*)。Text0.visble=False表8-4命令按钮常用的属性(P215)命令按钮常用属性作用Caption用于设置命令按钮上要显示的文字Cancel用于设置命令按钮是否也是窗体上的“取消”按钮Default用于设置命令按钮是否是窗体上的默认按钮Enabled用于设置命令按钮是否可用Picture用于设置命令按钮上要显示的图形8.2.3对象的方法对象的方法就是对象可以执行的行为。如果说,对象的属性是静态特性,那么对象的方法便是动态操作,目的是改变对象的当前状态。在VBA代码中,对象方法的引用方式:对象名.方法名例如,将光标插入点移入名为Text0文本框内的SetFocus方法引用方式为:Text0.SetFocus8.2.3对象的方法(续)Access应用程序的各个对象都有一些方法可供调用。在VBE窗口中,输入某一对象名及“.”后弹出的“属性及方法”列表框中,列出了该对象可用的的属性名或方法名。此外,Access还提供一个重要的对象:DoCmd对象。它的主要功能是通过调用包含在内部的方法来实现VBA编程中对Access的操作。例如,利用DoCmd对象的OpenReport方法来打开“课程信息”报表的语句格式为:DoCmd.OpenReport课程信息8.2.4对象的事件事件是Access窗体或报表及其上的控件等对象可以“辩识”的动作,是对象对外部操作的响应。如在程序执行时,单击命令按钮会产生一个Click事件。事件的发生通常是用户操作的结果。事件在某个对象上发生或对某个对象发生。Access可以响应多种类型的事件:鼠标单击、数据更改、窗体打开或关闭及许多其他类型的事件。8.2.5对象的事件(续)Access数据库系统里,可以通过两种方式来处理窗体、报表或控件的事件响应。一是使用宏对象来设置事件属性;二是为某个事件编写VBA代码过程,完成指定动作,这样的代码过程称为事件过程或事件响应代码。每个对象都有一系列预先定义的事件集。例如,命令按钮能响应单击、获取焦点、失去焦点等事件,可以通过属性对话框中的“事件”选项卡查看。实际上,Access窗体、报表或控件的事件有很多,其中一部分对象事件如表8-5、表8-6、表8-7、表8-8、表8-9所示。表8-5窗体对象的部分事件事件说明load窗体加载时发生事件Unload窗体卸载时发生事件Open窗体打开时发生事件Close窗体关闭时发生事件Click窗体单击时发生事件DblClick窗体双击时发生事件MouseDown窗体鼠标按下时发生事件KeyPress窗体上键盘击键时发生事件KeyDown窗体上键盘按下键时发生事件注意:首次打开窗体时,下列事件将按如下顺序发生:Open事件→Load事件→Resize事件→Activate事件→Current事件表8-6报表对象的部分事件事件说明Open报表打开时发生事件Close报表关闭时发生事件表8-7命令按钮对象的部分事件事件说明Click按钮单击时发生事件DblClick按钮双击时发生事件Enter按钮获得输入焦点之前发生事件GetFoucs按钮获得输入焦点时发生事件MouseDown按钮上鼠标按下时发生事件KeyPress按钮上键盘击键时发生事件KeyDown按钮上键盘按下键时发生事件表8-8标签对象的部分事件事件说明Click标签单击时发生事件DblClick标签双击时发生事件MouseDown标签上鼠标按下时发生事
本文标题:第8章模块与vba程序设计
链接地址:https://www.777doc.com/doc-1338721 .html