Access循序渐进教程第7章_第1页
Access循序渐进教程第7章_第2页
Access循序渐进教程第7章_第3页
Access循序渐进教程第7章_第4页
Access循序渐进教程第7章_第5页
已阅读5页,还剩50页未读 继续免费阅读

下载本文档

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

文档简介

第7章学习使用VBA“超级货架〞——什么是VBA“内部结构〞——VBA程序的根本语法与书写格式“增加内涵〞——功能模块的创立“兢兢业业〞——VBA程序的调试典型实例:给“考勤管理系统〞添加功能代码7.1“超级货架〞——什么是VBAVBA〔VisualBasicforApplication〕是MicrosoftOffice系列的内置编程语言,其功能十分强大。在Access2007中,VBA的功能是通过模块来实现的。事实上,在Access2007中,程序设计的核心工作就是编写模块和事件过程。如以下图所示为Access2007中VBA程序的编写界面。打开此窗口的方法为在“创建”选项卡中单击“宏”下拉按钮,在打开的列表中选择“模块”项功能模块的事件过程(不同的功能模块,具有不同的事件过程,实际上这里就是所谓的程序源代码)功能模块属性窗格7.2“内部结构〞——VBA程序的根本语法与书写格式7.2.1变量和常量在任何编程语言中,都要用到变量和常量,它们都是用来存储数据的。变量存储的是经常需要变动的数据,常量储存的是不用改变的数据〔或对象〕。1.变量变量在引用之前必须被声明,声明一个变量就是事先将变量的有关信息告诉程序,声明变量要使用Dim语句,其语法格式为:DimStr1AsString'声明一个名为Str1的字符串变量Str1="Hello"'给变量赋值Str1="Goodbye"'改变变量的值Dim变量名[As类型]

以上语句中的“As类型〞子句是可选的。如果选择了该子句,就可以定义变量的数据类型或对象类型。例如以下语句:2.常量在VBA中,声明常量的语法格式为:Const常量名[As类型]=表达式在这个表达式中,“常量名〞的命名规那么同变量一样,语句中的“表达式〞是由数值常量和字符串常量以及运算符组成的。例如:PublicConstPI=3.1415926

’声明一个在整个程序中都能使用的常量PI7.2.2流程控制语句程序员最根本和最重要的工作就是告诉计算机何时要做出什么样的动作。就像一个交通警察指挥大量的车辆和行人何时该走、何时该停、该向哪边走一样。本节主要介绍If语句、SelectCase语句、Do...Loop语句、For...Next语句、GoTo语句以及With语句等流程控制语句,下面我们分开详细介绍。1.If语句If语句是我们最常用的一种分支语句。它符合人们通常的语言习惯和思维习惯。比方if〔如果〕绿灯亮是真,then〔那么〕车就可以通行,else〔否那么〕车辆要等待行人通过。If语句有三种语法形式。1〕最简单的形式if<条件>then<该条件产生的结果〔过程语句〕>2〕带有else的形式if<条件>then

<过程语句1>

else

<过程语句2>endifif<条件1>then

<过程语句1>

elseif<条件2>then

<过程语句2>......

else<过程语句n>endif3〕带有多重条件的形式2.SelectCase语句根据表达式的值,来决定执行多组语句中的哪一组,这就是SelectCase语句。它的语法如下:SelectCase表达式

[Case表达式列表1[语句陈述1]][Case表达式列表2[语句陈述2]]......[Case表达式列表n[语句陈述n]]EndSelect下面的实例可以使我们进一步了解SelectCase语句的用法。DimScoreAsIntegerSelectCaseScore

CaseIs>=90

MsgBox"YougotanAonthetest."

Case80To89

MsgBox"YougotaBonthetest."

Case60To79

MsgBox"YougotaConthetest."

CaseElse

MsgBox"Youfailed."EndSelect在此例子中,Case语句按照先后顺序进行比较,首先执行与第一个Case条件相匹配的代码,假设不存在匹配的条件,那么执行CaseElse语句,然后程序将执行EndSelect语句后面的代码。3.Do…Loop语句用Do...Loop语句可以定义要屡次执行的语句块。我们也可以定义一个条件,当这个条件为假时,就结束这个循环。Do...Loop语句有以下两种形式。第1种: Do[{While|Until}<条件>]

[<过程语句>]

[ExitDo][<过程语句>]

Loop第2种:Do[<过程语句>][ExitDo][<过程语句>]Loop[{While|Until}<条件>]上面格式中,<条件>是用来检查真〔非零〕或假〔零或Null〕的一个比较谓词或表达式。While子句和Until子句的作用正好相反。如果指定了一个While子句,那么当<条件>是真,就继续执行。如果指定了Until子句,那么当<条件>为真时,循环执行结束。4.For…Next语句按照指定次数来重复执行同一组语句,这就是For...Next语句。在事先不知道循环需要执行多少次时,应该使用Do循环。而事先知道要执行多少次时,最好使用For...Next语句。For…Next语句的语法格式为:For循环控制变量=初值To终值Step步长循环语句Next其中,“Step步长〞可以省略,省略时步长为1。循环控制变量可以为整型、长整型、实型以及字符串;但最常用的还是整型和长整型。在循环中可以通过ExitFor跳出循环体,下面的例子说明了For…Next语句的使用方法:Fori=1To100Step2

Score=Score+10Next上边语句的意义是:将初值赋予循环控制变量,即循环控制变量的值从1开始,在执行完一次循环体后,将循环控制变量加上步长2,当i的值大于100时,跳出循环。<条件>是一个逻辑表达式,if语句通过检查<条件>的真或假来进行语句判断。比方,假设<条件>为True〔真〕,那么执行紧接在关键字Then后面的一条或多条语句。假设<条件>为False〔假〕,那么无论接下来是什么语句,程序都检查下一个Else<条件>或执行Else关键字后面的语句。6.With语句在引用对象的时候,我们通常会感到冗长的对象限定,繁琐而又累赘。如果你喜欢简单,那么用With可以简化代码中对复杂对象的引用。可以用With语句建立一个“根本〞对象,然后用一个速记符号来引用这个对象上的对象、集合、属性或方法。With<对象引用>[<过程语句>]EndWith例如,下面的代码来自一个Access窗体,它设置了一个组件框控件的“可见性〞属性,并调用了该组件框的两个方法。WithMe![cboAuthorSearchList]

.Visible=True

‘设置为可见

.Dropdown

‘点击下拉菜单EndWith7.2.3过程与函数简单地讲,过程和函数就是指能够执行特定功能的语句块,都是为编写程序而效劳的。但是它们之间是有区别的。1.过程过程是VBA代码的一个单元,它包括一系列用于执行某个任务或是进行某种计算的语句。过程只执行一个或多个操作,没有返回值。比方下面就是一个过程的例子。SubcmdSmallFont_Click()WithSelection.Font.Name="Arial".Size=16EndWithEndSub上面列出的代码就是一个简单的过程。实际上在With下的所有操作,默认访问的都是cmdSmallFont对象通常用Sub声明一个新的过程,其语法格式如下:[Private|Public|Friend][Static]Subname〔arglist〕statementsEndSub各项的意义请参考书中表格7-1。2.函数函数其实也是过程,不过它是一种特殊的、能够返回具体值的过程,返回的值通常是计算的结果或测试的结果,能够在表达式中使用。用Function语句可以声明一个新函数。其语法形式如下:[Public|Private|Friend][Static]Functionname[(arglist)][Astype][statements][name=expression][ExitFunction]EndFunction各项的意义请参考书中表格7-27.2.4注释语句注释语句就是穿插在程序代码中并对代码的意义和功能进行说明的语句,它不参与程序的运行。在VBA程序中,添加注释可以通过两种方式来实现:一是使用Rem语句,二是使用“’〞符号。DimMystr1,Mystr2Mystr1=〞Welcome〞:Rem为Mystr1赋值。Mystr2=〞Goodbye〞’为Mystr2赋值。这也是一条注释,无需使用冒号。“Rem注释〞在语句之后要用冒号隔开。7.2.5语句的连写和换行DimMyNOAsStringMyNo=“2002091229〞可以写成下面的一行:

DimMyNoAsString:MyNo=“2002091229〞一般而言,程序语句都是一句一行,但是有些时候可能需要在一行中连写几句代码。这时需要用冒号“:〞来分开这些不同用途的语句。例如:另外,还有一种情况在编程中经常遇到,那就是程序代码过长,虽然一行能够写完。但是书写起来不方便,看上去也不美观,希望将这句代码分开写成几行。这时要用到空格加下划线“_〞,比方下面的例子。PublicConstDate=#1/1/2000#,Author="Nancy",_Tel="62774059"空格加下划线〔“_〞〕被称为续行号,它可以把语句分成两行或多行,用于解决程序代码中语句过长的问题。7.3“增加内涵〞——功能模块的创立7.3.1模块简介模块作为Access数据库中的一个重要对象,它是将VBA声明、表达式和程序作为一个单元进行保存的集合。模块由一个通用声明局部以及一个或多个子程序或函数组成的。模块的通用声明局部用来对要在模块中或模块之间使用的变量、常量、自定义数据类型以及模块级的Option语句进行声明。其它局部为子程序或函数局部,具体如以下图所示。这是多功能模块(写在窗体的模块就是窗体操作模块,写在报表里边的就是报表模块)模块的声明部分模块里边的函数和代码7.3.2创立具有密码验证的主窗体模块1翻开“计件工资管理系统〞数据库,翻开新建“窗体〞的设计视图单击组合框按钮,将鼠标光标移动到要添加组合框的位置单击鼠标左键,添加一个组合框23将组合框的标签修改为“请选择要翻开的表格〞。然后双击组合框,翻开组合框的“属性〞窗口单击“数据〞标签,在“行来源类型〞下拉列表中选择“值列表〞项在“行来源〞中输入几个已经创立好的窗体的名称:“人事表〞;“加班表〞;“请假表〞456在组合框的下面添加两个命令按钮,并更名为“翻开〞和“关闭〞选中“翻开〞按钮,然后单击代码按钮,翻开该窗体的代码编辑窗口79在事件列表中选择“Click〞项在对象选择下拉列表中选择“Command2〞项为“翻开〞按钮的单击事件输入代码81012在事件列表中选择“Click〞项在对象选择下拉列表中选择“Command3〞项为“关闭〞按钮的单击事件输入代码111315在对象列表中选择“Form〞,在事件过程列表中选择“Load〞事件为Load事件输入代码1416双击翻开“密码窗体〞,将首先弹出要求输入密码的窗口,输入密码,单击“确定〞按钮 单击组合框的下拉按钮,从下拉列表中选择一个窗体名称〔这里选择“人事表〞〕后,单击“翻开〞按钮即可翻开相应的表格了177.3.3创立查询窗体模块1翻开“计件工资管理系统〞数据库,翻开新建窗体的“设计视图〞2创立一个命令按钮,将其标题更改为“查询〞添加一个文本框,将其标签的标题更改为“请输入员工编号:〞重复相同的操作创立另外一个标签为“返回的员工姓名:〞的文本框34创立一个函数Search,编写如下代码在对象列表中选择“Command4〞,在事件过程列表中选择“Click〞事件,为“查询〞按钮〔Command4〕的单击〔Click〕事件编写“Text2.Value=Search(Text0.Value,〞PrimaryKey“,〞人事表“)〞代码56通过以上步骤我们就完成了函数的创立和调用,双击翻开“查询员工姓名〞窗体,执行的效果如下图7.3.4边学边练:使用VBA增加“计件工资管理系统〞的功能我们这里主要需要添加在“系统设置〞窗口实现“人事调整〞功能的代码。“工资录入和查询〞、“加班录入和查询〞和“请假录入和查询〞在这三个窗体中都需要添加代码来实现各自的功能。需要在“本月工资统计〞和“上月工资统计〞报表中添加代码实现动态打印报表。1、给“系统设置〞窗体添加代码这是“系统设置〞窗体的操作界面我们首先需要实现的功能是:在下拉标签中进行选择时,员工编号列表框和右侧的“员工列表〞同时跟着改变2添加当单击“打印个人档案〞按钮时应执行的操作添加中选择下拉列表时,应执行的操作添加中选择列表项时,应执行的操作135添加错误提示窗口设置代码添加用于自动添加班组操作的代码添加“同步更新操作〞函数,完成代码的添加46调用更新过程72、给“录入和查询〞窗体添加代码在此窗体我们主要应实现,当输入或选择了员工编号后,在姓名栏中自动显示出此人的姓名,然后中选择用户或添加记录时,应在下边员工列表中显示其当天的工作记录,以及合计的工资数1另外需要定义两个函数――“chaxun〞和“chaxun2〞〔至于代码请到书中查询〕,并在此处进行调用,然后保存就可以了对“件数〞文本框的限制操作,即让其只能输入数字23、给“工资统计和打印〞报表添加代码翻开“本月工资统计〞的设计视图,添加三个标签控件,分别位于“报表页眉〞、“页面页眉〞和“主体〞节,其中位于“报表页面〞的节我们将会在代码中动态更新其内容,所也我们这里将其命名为“月〞在“主体〞节中,添加一个文本框――“工资合计〞,此文本框用于显示最后的工资统计记录21这是窗体的最终执行效果,关于报表代码,由于代码较多,我们这里不再列举,请大家到正文中查询和分析7.4“兢兢业业〞——VBA程序的调试1、调试工具栏及功能简单地讲,“调试〞就是查找错误并对错误进行排除的过程。以下我们从调试工具栏及功能、设置断点、跟踪和设置监视点等方面对VBA程序调试进行介绍。当您对程序进行调试时,可以使用VBA的“调试〞工具栏,它提供了一些非常实用的工具。翻开“调试〞工具栏的方法为:选择【视图】→【工具栏】→【调试】命令,即可调出“调试

温馨提示

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

评论

0/150

提交评论