站内搜索

ACCESS入门教程(十六)模块与“VBA”语言

  虽然宏很好用,但它运行的速度比较慢,也不能直接运行很多WINDOWS的程序。尤其是不能自定义一些函数,这样当我们要对某些数据进行一些特殊的分析时,它就无能为力了。

  由于宏具有这些局限性,所以在给数据库设计一些特殊的功能时,需要用到“模块”对象来实现,而这些“模块”都是由一种叫做“VBA”的语言来实现的。使用它编写程序,然后将这些程序编译成拥有特定功能的“模块”,以便在Access2000中调用。

  VB,就是微软公司推出的可视化BASIC语言,用它来编程非常简单。因为它简单,而且功能强大,所以微软公司将它的一部分代码结合到OFFICE中,形成我们今天所说的VBA。它的很多语法继承了“VB”,所以我们可以像编写VB语言那样来编写VBA程序,以实现某个功能。当这段程序编译通过以后,将这段程序保存在Access中的一个模块里,并通过类似在窗体中激发宏的操作那样来启动这个“模块”,从而实现相应的功能。

  “模块”和“宏”的使用是差不多的。其实Access中的“宏”也可以存成“模块”,这样运行起来的速度还会更快呢。“宏”的每个基本操作在“VBA”中都有相应的等效语句,使用这些语句就可以实现所有单独“宏”命令,所以“VBA”的功能是非常强大的。如果你要用Access来完成一个负责的桌面数据库系统,你就应该掌握“VBA”,它可以帮你实现很多功能。但如果你只是偶尔使用一下Access或者只是用Access来做一些简单的工作,你只要简单了解一下它就可以了。

 

插图

 

  既然我们要编写“VBA”程序,就需要先看看“VBA”的开发环境。“VBA”的开发环境开发“VBA”程序相应的“设计器”,但我们不这么称呼它,而是叫它“VBA开发环境”,这种说法是继承了计算机语言对开发器的一种统一叫法。

  我们首先要打开一个数据库,然后选定数据库窗口上的“模块”选项,再用鼠标单击数据库窗口上的“新建”按钮,这时就会弹出一个窗口,这就是“VBA”的“开发环境”,如下图所示。

VBA开发环境

  VBA开发环境分为“主窗口”、“模块代码”、“工程资源管理器”和“模块属性”这几部分。“模块代码”窗口用来输入“模块”内部的程序代码。“工程资源管理器”用来显示这个数据库中所有的“模块”。当我们用鼠标单击这个窗口内的一个“模块”选项时,就会在模块代码窗口上显示出这个模块的“VBA”程序代码。而“模块属性”窗口上就可以显示当前选定的“模块”所具有的各种属性。

  所有的“VBA”程序都是写在“模块代码”窗口中的。我听说程序光写完还不行,还要“编译”什么的,这又是怎么回事呀? 小博士:任何一种高级计算机语言都不能直接被计算机看懂,它们必须通过编译器的编译才能使计算机明白这些语句所要表达的数值运算和逻辑关系。就像我们和外国人交谈一样,如果我们相互之间都不懂对方的语言,就需要一个翻译将所说的话翻译过来,这样双方才能明白对方想要表达的意思。同样编译器也起了相互沟通的中介作用。

  在VBA中,由于我们在编写代码的过程中会出现各种各样的问题,所以编写的代码很难一次通过,并正确地实现既定功能。这时就需要一个专用的调试工具,帮助我们快速找到程序中的问题,以便我们消除代码中的错误。“VBA”的开发环境中“本地窗口”、“立即窗口”和“监视窗口”就是专门用来调试“VBA”的,如下图所示。

调试工具

  在做这个程序之前必须要申请变量,并对其中要用到的常量进行定义。

  这儿的变量和我们在数学中所遇到的变量的概念基本上是一样的,它是一个数据,但随时可以改编它所对应的数值。 常量这个概念和变量是对应的,变量的值在程序运行过程当中允许变化,而常量的值却是不变的。

变量插图

常量插图

  在计算机中,变量和常量在使用之前都必须先定义,不然在程序当中就会被认为是非法的字符。 在VBA中,有几种定义变量和常量的方法,首先,我们可以用“Public Const 常量名= 常量表达式”来定义一个常量,就像
  Public const PI = 3.1415926
这个语句就定义了一个很常用的常量,以后当我们想使用圆周率的时候只要用“PI”代替就可以了。在这个语句中“Public”用来表示这个常量的作用范围是整个数据库的所有过程。如果我们这时用“Private”来代替它,则这个常量只能在现在的这个模块中使用了。“Const”语句用来表示要申明的是个常量而非变量。

定义常量和变量插图

  申请变量和申请常量差不多,通常我们用“Dim 变量 As 变量类型”语句来申明一个变量,其中“Dim”和常量申请语句中的“Const”作用类似,它告诉Access,现在申请的是“变量”而不是常量。比如
  Dim number As Integer
就是说现在我们申明了一个整数类型的变量“number”,以后在程序中“number”就表示一个变量,而不再是普通的字符组合了。变量在程序中可以被赋予新的值,“number = 4”这个语句就是一个赋值语句。这样变量“number”就有了一个值“4”。如果后来又有一个相似的语句“number = 3223”,则变量“number”的值就会变成“3223”了。 让我们看一个例子:
  Public Const PI=3.1415926
  DIM a,number As Integer
  number = 159
  a = number *23/ PI+323
在四个语句中,第一条申明了一个常量“PI”,第二条申明了两个整数类型的变量“a”和“number”,第三条是一个赋值语句,通过它将变量“number”赋予值“159”,而第四条语句则是将变量“number”的值乘以“23”,然后除以常量“PI”,也就是除以“3.1415926”,然后将所得的值加上“323”,并把最终的值赋给变量“a”。

  讲了变量,现在也要讲讲“函数”和“子程序”了。

  像“sin( )”、“abs( )”这些都是函数都是内部函数,现在我们要来讲讲外部函数,外部函数和变量一样在使用之前也是要先申明。它们的结构如下图所示。

函数结果

举例

  
函数则会把“a+b-c”的值返回给函数名“Getnumber”,如果我们输入Getnumber(9,4,2),则会返回“9+4-2”即“11”给函数“Getnumber”。“Function”的英文含意就是“函数”。它在这儿用来作为函数申明的一个内容。在它后面跟着的就是这个函数的函数名。在这个函数名后面的括号中,列的是这个函数中的参数。每个函数之间要用逗号隔开,并用“As”语句后跟“数据类型”来定义数据的类型。 括号外面的“As 数据类型”用来定义“函数名”的。它表示函数返回的数据的数据类型。

  其实子程序和函数很相似,两者结果对比如下图所示。

两者结果对比


  这两种类型的过程都可以接收参数,函数可以返回单一的数据值,但子程序不能。另外,你可以从ACCESS中任何地方执行一个函数,包括从查询中的表达式中和宏中。然而你只能从一个函数、子程序或作为一个窗体或报表中的一个事件过程来执行子程序。

 

  • 上一篇:ACCESS入门教程(十七)SQL语言妙用
  • 下一篇:ACCESS入门教程(十五)宏的使用