版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第八章模块Access2003
数据库技术1第八章模块8.1基本概念8.2模块的分类8.3模块的创建与调用8.4模块的调试8.5宏与模块的关系8.6VBA程序设计入门8.7VBA的数据库编程基础28.1基本概念
模块就是存储在一个单元中的VBA(VisualBasicForApplication)声明和过程的集合。它通过嵌入在Access中的VB(VisualBasic)程序设计语言编辑器和编译器实现与Access的完美结合。模块是基于VB程序设计语言而创建的。3基本概念模块由过程组成,每一个过程都由一个函数或一个子程序所组成。过程(Procedure):是由VB代码组成的单元。它包含一系列执行操作或计算数值的语句和调用对象方法的语句。过程可分为函数(Function)过程和子(Sub)程序两种。4子程序子程序:也称为Sub过程。是执行一项操作或一系列操作的过程。数据库中每个窗体或报表都有内置的窗体模块或报表模块,这些模块包含事件过程模板,可以向其中添加代码,使得当窗体、报表或其中的控件发生相应的事件时,执行相应的代码。许多向导(如命令按钮向导)在创建对象的同时也创建对象的事件过程。子程序以关键字“Sub”开始,并以“EndSub”语句结束。58.2模块的分类两种类型:类模块和标准模块类模块:类模块是可以定义新对象的模块。新建一个类模块,即新建了一个对象。模块中定义的任何过程都变成该对象的属性或方法。类模块既可以独立存在,也可以与窗体和报表同时出现。窗体和报表都属类模块,它们各自与某一窗体或报表相关联。(单击按钮可查看窗体或报表的模块。)标准模块:标准模块是指存储在整个数据库中可用的子程序和函数的模块。标准模块包含通用过程和常用过程,通用过程不与任何对象相关联,常用过程可以在数据库中的任何位置运行。6标准模块与类模块的主要区别标准模块与类模块的主要区别在于其作用范围和生命周期。窗体或报表模块中的过程可以调用已经添加到标准模块中的过程。Access2000以前版本的类模块只能在与窗体或报表相关联时出现。而Access2000以及更高版本中的类模块不仅可以脱离窗体或报表独立存在,而且可以在数据库窗口对象栏的模块列表中显示。78.3模块的创建与调用通过向窗体或报表上的事件添加代码来创建一个事件过程,也可以在类模块或标准模块中创建函数过程或子程序。
创建模块的一般操作步骤如下:
(1)在“模块”中单击“新建”按钮;
(2)在模块编辑窗口中编辑模块程序。8一个简单的Sub过程【例1】
创建一个Sub过程,自动弹出一个系统使用说明信息框。本例只有一句话:调用函数MsgBox显示一段文字PrivateSubaa()MsgBox("单击“进入系统”按钮,打开教务管理系统;单击“退出系统”按钮,关闭教务管理系统,并退出Access。")EndSubSub结尾Sub开头例1见窗体:启动9模块的调用(方法1)
在模块编辑窗口中,选择菜单“运行”“运行子过程/用户窗口”或按F5键特别注意:运行时,要要将光标置于过程体中任意位置。10模块的调用(方法2)使用调用语句Call格式:call子过程名([参数表])说明:使用Public定义的可以使该子过程适用于所有模块中的所有其它过程;使用Private定义的子过程只适用于同一模块中的其它过程。实例:Subabc()……EndsubSubss()……Callabc……Endsub11模块的调用(方法3)事件驱动:与宏一样,我们可以在窗体或报表的“事件”中编制事件驱动程序,当事件发生时,模块中相应的过程自动执行。(实例见后面)12VBA中对象的引用VBA中对象的引用有2种:引用对象引用对象的属性13对象的引用实例-11、设置窗体“改变颜色”中的标签Label1的字体颜色为红色
Forms![改变颜色]![Label1].ForeColor=RGB(255,0,0)2、设置窗体“改变字体”中的标签Label1的字体为隶书
Forms![改变字体]![Label1].FontName="隶书“3、设置窗体“改变字体”中的标签Label1的字体为加粗
Forms![改变字体]![Label1].FontBold=True4、设置窗体“改变字体”中的标签Label1的字体为倾斜
Forms![改变字体]![Label1].FontItalic=True5、取消窗体“改变字体”中的标签Label1的字体的下划线
Forms![改变字体]![Label1].FontUnderline=False14对象的引用实例-21、打开窗体"主控面板"
DoCmd.OpenForm"主控面板"2、关闭当前窗体
DoCmd.Close3、焦点置于文本框Text1Text1.SetFocus4、清空文本框Text1Text1="“5、n=Forms![改变字体]![Frame1](选项组的值)15常用的VBA命令打开操作关闭操作输入操作输出操作16打开操作
打开窗体。其命令格式如下:DoCmd.OpenForm
formname[,view][,filtername][,wherecondition][,datamode][,windowmode]例:以只读数据模式打开“教师信息”窗体。
DoCmd.OpenForm
”教师信息”,acFormReadOnly17关闭操作
其命令格式如下:DoCmd.Close[objecttype,objectname][,save]例:关闭“工资统计表”报表。DoCmd.Close
acReport,”工资统计表”18输入操作输入框(InputBox函数)格式如下:InputBox(prompt[,title][,default][,xpos][,ypos][,helpfile,context])A=InputBox("请输入半径:")19输出操作PrivateSubaa()Dima,ba=InputBox("请输入半径:")b=3.14*a^2
MsgBox("圆的面积="&b)b=MsgBox("圆的面积="&b,,"输出结果")'若用标题等其它参数时,必须用“变量=……EndSub20输出操作消息框(MsgBox
函数)其命令格式如下:MsgBox(prompt[,buttons][,title][,helpfile,context])PrivateSubaa()Dima
MsgBox("欢迎!")‘a=MsgBox("热烈欢迎!",,"输出文字")EndSubMsgBox详细说明点击打开Word文档2122记录操作跳到第一个:DoCmd.GoToRecord,,acFirst跳到最后一个:
DoCmd.GoToRecord,,acLast下一个:
DoCmd.GoToRecord,,acNext上一个:
DoCmd.GoToRecord,,acPrevious23VBA的基本控制结构
结构化程序设计方法有三种基本的程序控制结构:顺序结构分支(选择)结构循环结构。24分支(选择)结构
VBA提供了如下两种常用的选择语句If语句----分支结构SelectCase语句----多分支结构251、IF语句格式:If<条件表达式1>Then
<语句块1> [Else <语句块2>]Endif26【实例2】验证密码设计一个验证密码窗体,单击“确定”时,使用过程验证密码正确与否(正确密码大写ASDF)如果不对,信息窗标题“验证”,提示“密码错误,请重新输入!”,单击“重试”按钮时,将密码清空,焦点落在文本框;
若输入正确,打开主控面板,并关闭当前窗体(验证密码)。例2见窗体:验证密码27单击事件驱动程序代码PrivateSub确定_Click()DimaIFForms![验证密码]!Text1="ASDF"Then
DoCmd.Close
DoCmd.OpenForm"主控面板"Elsea=MsgBox("密码错误,请重新输入!",5+48+0,"验证")
Ifa<>4ThenQuitElseText1=""Text1.SetFocus
EndIfEndIfEndSub282、SelectCase语句格式:SelectCase<条件表达式> [Case<表达式1>
<语句块1>] [Case<表达式2>
<语句块2>] …… [Case
Else
<语句块n+1>]EndSelect29【实例3】评价等级制作窗体“A班成绩表”,添加2个按钮如图:单击“下(上)一记录”按钮,显示下(上)一记录的信息,并在信息框显示该生等级等级标准:平均分X<60:不及格70>X>=60,及格80>X>=70,中等90>X>=80,良好>=90,优秀例3见窗体:A班成绩表30添加翻页按钮操作步骤添加按钮,在弹出的向导中,选择记录导航:转至下(上)一项记录关闭向导后打开事件过程在事件过程中的语句DoCmd.GoToRecord,,acNext之后添加如下页程序:31相当于省略了>=60“下一记录”单击事件驱动程序代码PrivateSubCommand1_Click()Dimn,iAsIntegerDoCmd.GoToRecord,,acNext‘下一记录n=Forms![A班成绩表]![平均分]SelectCasenCaseIs<60i=MsgBox("不及格",,"该生等级")CaseIs<70i=MsgBox("及格",,"该生等级")CaseIs<80i=MsgBox("中等",,"该生等级")CaseIs<90i=MsgBox("良好",,"该生等级")CaseElsei=MsgBox("优秀",,"该生等级")EndSelectExit_Command1_Click:ExitSub“上一记录”程序代码与此类似32Case的顺序也可以反过来PrivateSubCommand1_Click()Dimn,iAsIntegerDimDjasstringDoCmd.GoToRecord,,acNext
n=Forms![A班成绩表]![平均分]SelectCasenCaseIs>=90
Dj=”优秀”CaseIs>=80
Dj=”良好”CaseIs>=70
Dj=”中等”CaseIs>=60
Dj=”及格”CaseIs<60
Dj=”不及格”EndSelecti=MsgBox(Dj,,"该生等级")Exit_Command1_Click:ExitSub33循环结构
在VBA中,可以通过使用循环语句来控制程序重复执行一组语句。
VBA提供了如下三种常用的循环语句:For…NextDoWhile…LoopDoUntil…Loop34
3、For…Next语句格式如下:For<循环变量>=<初值>To<终值>[Step<步长>] <循环体>Next[<循环变量>]35【实例4】求偶数和制作窗体“求偶数和”,添加控件如图:在TEXT1中输入上界单击“计算”按钮结果显示在TEXT2中例4见窗体:求偶数和36单击计算按钮驱动程序代码PrivateSub计算_Click()Dimn,sn=Forms![求偶数和]!Text1s=0Fori=2TonStep2s=s+iNextiForms![求偶数和]!Text2=sEndSub374、DoWhile…Loop
格式如下:DoWhile<条件表达式>
<循环体>Loop38【例5】程序运行后,消息框输出结果是多少?Dima,b,cAsIntegera=10:b=1:c=1DoWhilec<=a
b=b*2 c=c+1LoopMsgboxb‘(210=1024)Msgboxc‘(11)395、DoUntil…Loop
格式如下:DoUntil<条件表达式>
<循环体>Loop40【例6】用DoUntil…Loop完成【例4】Dima,b,cAsIntegera=10:b=1:c=1DoUntilc>a
b=b*2 c=c+1LoopMsgboxbMsgboxcDima,b,cAsIntegera=10:b=1:c=
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 个人借款房屋抵押合同
- 正规个人借款合同范本
- 《认识1元及1元以内的人民币》(教案)苏教版一年级下册数学
- 一年级上册美术教学设计-撕纸变成画-沪教版
- 三年级美术下册教案-《第11课 动物的花衣裳》人教版
- 六年级上册美术教案-第2课 图形的魔术组合 ▏人美版
- 仓储服务合同专业版
- 五星未来乡村展示馆建设项目招标文件
- 肾脏科医院感染诊断标准
- 罂粟碱在肿瘤治疗中的临床应用进展
- 优化库存配置方案
- 《烙铁的使用与保养》课件
- 铁路轨道检测-轨道动静态检测(铁路线路养护)
- 无人机装调与维修 课件 第十一课时 云台相机组装
- 承包商环境健康安全HSE培训课件
- 绝交协议书模板
- 绿化工具的使用保养及安全注意事项
- 学术规范与学术道德课件
- 汽车零部件项目开发时间管理计划表
- 2023年山东滨州市滨城区教育系统引进优秀人才109人笔试参考题库(共500题)答案详解版
- 湖南长沙市长郡教育集团2024届中考生物押题卷含解析
评论
0/150
提交评论