您好,欢迎访问三七文档
数据库编程基础主编:李京文中国铁道出版社第6章VBA6.1引例6.2模块的基本概念6.3模块的创建6.4VBA编程基础6.5VBA流程控制语句6.6过程6.7VBA中常用对象及属性6.8小结使用Access的表、查询、窗体等对象,可以实现一般化的数据库设计,但当程序复杂到一定程度时,有些操作是前述对象都实现不了的或是很难实现的,就可以通过编写程序来实现。模块是Access中存放程序的声明和过程的集合体。模块中的编程通过VBA语言来实现。VBA(VisualBasicforApplication)是Microsoft公司推出的集成于Office办公软件中的应用程序开发语言,是VB(VisualBasic)语言的一个子集,其语法与VB语言相兼容。6.1引例制作一个图6-1所示的登录窗体,用于进入学生档案录入窗体。本系统设定了学生处有此权限,其用户名为“xsc”,密码为“xsc123”。对于用户名、密码为空,以及用户名、密码错误的情况能够给予错误警告,如图6-2、6-3所示;对于正确的用户名、密码能够给予欢迎界面,然后再进入对应的录入窗体,如图6-4所示。读者学习了本章的模块的类型与创建、VBA编程后,不仅可以完成本例,还可以根据需要完成各种复杂的功能6.2模块的基本概念模块是Access系统提供给用户实现自由编程的一个重要对象。模块以VBA语言为编程基础,每个模块中包含了若干的声明、过程,以实现其各自的功能。模块分为类模块和标准模块。6.2.1类模块类模块分为窗体模块、报表模块和自定义模块。类模块与Access中的对象相关联。如窗体模块和报表模块,都各自与某一特定的窗体或报表相关联。自定义模块是为自定义对象创建的类模块。窗体模块和报表模块通常都含有事件过程,而过程的运行用于响应窗体或报表上的事件。如当用户单击窗体或报表上的某个命令按钮时,Access则会自动调用对应的窗体模块或报表模块中的该按钮的单击事件过程来做出响应,从而达到控制窗体或报表的行为,以及对用户操作的响应。6.2.2标准模块标准模块包含与任何其他对象都无关的常规过程,以及可以从数据库任何位置运行的经常使用的过程。通常将Access对象使用的公共过程、公共变量等放置于标准模块中,以供类模块里的过程调用。6.2.2类模块和标准模块的异同类模块和标准模块通常都包含若干的变量和过程。其区别主要体现于作用范围和生命周期。窗体模块、报表模块具有局部特性,其作用范围局限于所属窗体或报表,生命周期是伴随着窗体或报表的打开而开始、关闭而结束。标准模块中的公共变量和公共过程具有全局特性,其作用范围在整个应用程序里,生命周期是伴随着应用程序的运行而开始、关闭而结束。在类模块中,可以调用标准模块中已经定义好的公共变量和公共过程。6.3模块的创建在Access中,常用的创建模块的方式有如下几种:一、创建类模块在窗体或报表设计视图下,有两种方法进入对应的类模块:1.点击工具栏的代码按钮时在窗体或报表的设计视图下,当用户点击图6-5所示的工具栏的代码按钮时,Access则会打开对应模块的代码设计区域。2.为窗体或报表创建事件过程时①如图,当用户右击窗体中的按钮,选择快捷菜单中的事件生成器时,则会打开图所示的对话框,选择表达式生成器后点击确定按钮即可打开图所示的窗口。二、创建标准模块在数据库窗口中,选择“模块”对象,再点击右侧的“新建”按钮,即可打开标准模块的代码窗口三、将宏转换为模块在Access中,可以根据需要将已经设计好的宏转换为模块代码。如图6-11所示,选择某个宏后,点击菜单“将宏转换为VisualBasic代码”,即可将宏转换为模块6.4VBA编程基础VBA,即VisualBasicforApplication,是Microsoft公司推出的集成于Office办公软件中的应用程序开发语言,是面向对象的,其语法与VB语言相兼容。6.4.1面向对象程序设计的基本概念VBA是面向对象的。面向对象主要包括如下几个基本概念:1.对象对象是一组相关的程序和数据。一个对象就是一个实例。如在现实生活中,一个人是一个对象,一扇门也是一个对象。在Access中,一个窗体、一个报表、窗体中的一个按钮等都是对象。每个对象都会有一些属性用于描述这个对象。对象的属性因类别不同会有所不同。如人有身高、体重等属性,门有长、宽等属性。同一类型的对象的不同实例因属性值不同也会有区别。如张三这个人的年龄属性值是20,李四这个人的年龄属性值是21。在Access中,对象主要包括数据库窗口的对象列表中的表、查询、窗体、报表等对象以及工具箱中文本框、按钮等控件对象。每种类型的对象都具有相同的属性集,同一类型的对象的不同实例因不同的属性值而相互区分。2.属性属性是描述一个对象的一系列特征。如人有姓名、身高等属性,苹果有颜色、重量等属性,Access中的标签对象有标题、前景色等属性。同一类型的对象具有相同的属性集。如通过查看Access的属性窗口,可以发现,所有的标签对象的属性窗口列出的属性名称是相同的,所有的窗体对象的属性窗口列出的属性名称也是相同的。同一类型对象的不同实例因属性值不同而相互区分。如在Access窗口中有两个按钮对象cd1和cd2,第一个按钮对象的名称属性值是“cd1”,而第二个按钮对象的名称属性值是“cd2”。在Access中,各种类型的对象的属性是VBA事先规定好的,用户只能够修改具体对象即某一实例的属性值。3.事件VBA采用事件驱动机制。事件是Access对象可以“识别”的特殊“动作”,这些“动作”是VBA事先规定好的。如单击窗体、双击按钮等。当某个事件被触发时,Access会调用相应的事件过程去响应。如当用户点击了某个按钮cd1,则Access会“识别”出按钮cd1的单击事件被触发了,然后到代码中寻找cd1对象的单击事件过程。该事件过程中代码则会被执行一次。若事件不发生,则对应的事件过程不会被执行。4.方法方法是Access中的对象能够执行的动作。每个方法实现某些特定的功能,用户看不到方法的实现细节,只能按照约定去调用。如使用Access的DoCmd对象调用OpenForm方法,则用户书写代码时候,只需按照该方法的要求输入需要被打开的窗体名称等参数,即可实现打开对应的窗体,整个调用过程中用户并不能也不需要看到该方法是如何实现的。6.4.2VBA编程环境熟悉VBA开发环境是利用VBA编程的首要条件。VBA是在VBE中编写的。VBE即VisualBasicEditor,与VisualBasic中的代码编辑器是一样的。熟悉VB的用户可以使用自己对该环境已经掌握的知识完成一般的程序设计任务。一、VBE特性VisualBasic编辑器提供了与其他Microsoft可视化编程工具相似的开发环境。通过VBE可以快速地在整个工程中定位、编辑和运行代码。通过窗体设计器可以建立包含ActiveX控件的自定义对话框。VBE还包括完整的调试工具,可以执行代码、设置断点和监视点等。在Office2003中,所有的Office应用程序都使用相同的开发环境来编辑和调试代码。VBE提供的开发环境存在于宿主应用程序外的多文档窗口中。这给程序开发提供了很大的便利,例如用户能够在一个窗口中运行代码的同时,查看另一个窗口中应用程序对代码的响应情况。二、VBE窗口简介图6-13所示的是Access数据库的VBE窗口。该窗口主要由菜单栏、标准工具栏、工程窗口、属性窗口、代码窗口等组成。1.菜单栏VBE的菜单栏包含文件、编辑等菜单。通过菜单栏可以打开标准工具栏、工程窗口等。2.标准工具栏标准工具栏中提供创建VBA程序的一些常用命令。如图6-14所示。表6-1列出了工具栏中的主要的命令按钮及功能。标准工具栏的主要命令按钮及功能3.工程资源管理器图6-15所示即为工程资源管理器。在窗体程序设计中,常常会把不同的功能在不同的窗体中显示。一个窗口程序除了可能会包含很多不同的窗体之外,也可能包含其他种类的文件,所以VisualBasic编辑器使用“工程”来管理这些文件。其中,标题栏下的三个命令按钮分别是查看代码按钮、查看对象按钮和切换文件夹按钮。4.属性窗口图6-16所示即为属性窗口。在这个窗口中可以设置窗体、控件等对象的属性。每种类型的对象都有一系列特定的属性。在属性窗口中,可以按字母序或按分类序来快速查看、设置属性的值。此外,大部分的属性还可以在代码窗口通过编码为其动态赋值。若要能够在属性窗口中展现某对象的属性列表,应先打开对应的类对象的设计视图。5.代码窗口在代码窗口中可以输入和编辑VBA代码。各种通用过程和事件过程的代码均在此窗口中编写和修改。可以同时打开多个代码窗口来查看多个模块的代码。代码窗口中不同的过程之间会自动加上一条灰色分割线,以便于查看代码。6.4.3数据类型数据是程序的必须组成部分,也是程序处理的对象,在高级语言中数据的使用都需要指定数据类型。数据类型即将数据以何种格式存放。VBA提供的基本数据类型如表6-2所示。此外用户还可以根据基本数据类型用Type自定义数据类型。一、基本数据类型表6-2VBA的基本数据类型数据类型类型标识占内存符号取值范围字符串型String1字符$0字符~65500字符字节型Byte1无0~255布尔型Boolean2无True或False整数型Integer2%-3276832767长整数型Long4&-2147483648~2147483647单精度型Single4!负数-3.402823E38-1.401298E-45正数1.401298E-45~3.402823E38双精度型Double8#负数-1.79769313486232E308~-4.94065645841247E-324正数4.94065645841247E-324~1.79769313486232E308日期型Date8无100年1月1日~9999年12月31日货币型Currency8@-922337203685477.5808~922337203685477.5807变体型Variant任意类型无二、用户自定义类型VBA允许用户创建自定义数据类型,这种数据类型由VBA的内部数据类型、数组、对象或其他用户定义类型组成,其存储空间为各个组成部分的存储空间的总和,取值范围与各个组成部分的数据类型的取值范围一致,缺省值为各个组成部分的缺省值。VBA中用户自定数据类型使用Type关键字来定义,其语法格式如下:Type[数据类型名]元素1as数据类型元素2as数据类型……………EndType例6.1创建一个自定义数据类型Student来表示学生类型,要求包含学生的学号、姓名和总分信息。可以使用Type来定义自定义数据类型Student为:TypeStudentNumasstringNameasstringScoreasstringEndType6.4.4常量和变量一、常量常量即在程序执行过程中不发生改变的值或字符串。常量可以分为文字常量、符号常量和系统常量。1.文字常量如267、“hello”、#2009-8-24#等都是文字常量。2.符号常量对于程序中使用频度较高或难以记忆的常数,可以使用Const将其定义为符号常量,以便于阅读和修改程序。使用Const定义符号常量的格式如下:Const符号常量名[as数据类型]=表达式如ConstRate=0.25定义了一个值为0.25的符号常量Rate;ConstNumMonthAsInteger=12定义了一个值为12的整形的符号常量NumMonth。3.系统常量VBA自身包含有许多内置常量,它们的值都是VBA预先定义好的,使用内部常量时无需定义这些常量的值。如True、False、Yes、No等。可以通过对象浏览器窗口查看更多常量及其值。如在该窗口中,选择“工程/库”列表为Access,再选择“类”为“全局”,然后单击右侧的A
本文标题:vba教学
链接地址:https://www.777doc.com/doc-2865685 .html