收藏 分享(赏)

《Access_2002数据库应用实训教程》第10章:Access_VBA程序设计.ppt

上传人:saw518 文档编号:4529869 上传时间:2019-01-02 格式:PPT 页数:52 大小:798KB
下载 相关 举报
《Access_2002数据库应用实训教程》第10章:Access_VBA程序设计.ppt_第1页
第1页 / 共52页
《Access_2002数据库应用实训教程》第10章:Access_VBA程序设计.ppt_第2页
第2页 / 共52页
《Access_2002数据库应用实训教程》第10章:Access_VBA程序设计.ppt_第3页
第3页 / 共52页
《Access_2002数据库应用实训教程》第10章:Access_VBA程序设计.ppt_第4页
第4页 / 共52页
《Access_2002数据库应用实训教程》第10章:Access_VBA程序设计.ppt_第5页
第5页 / 共52页
点击查看更多>>
资源描述

1、第10章 Access VBA程序设计,10.1 模块的创建,模块是将VBA(Visual Basic for Applications)声明和 过程作为一个单元进行保存的集合。模块基本上是由声明、语 句和过程组成的,它们作为一个已命名的单元存储在一起,对 VBA代码进行组织,并完成特定的任务。Access有两种类型的模块:标准模块和对象类模块。不论哪种模 块中的每一个过程都可以是一个Function过程或一个Sub过程,如下图 10.1所示。 两个列表中,是“对象”框,是 “过程”框(即“事件”框),当 选择了任一个对象后,右边的“事件”也会随之切换,因为不同类型的对象,也有不同的事件,选择

2、任一事件后,即可显示该事件程序的内容,且光标会停留在程序的第一行,可以立即开始编写程序。,图10.1代码编辑窗口,“对象”框,“过程”框,声明,过程,“过程视图”按钮,“完整的模块视图”按钮,注意:在“事件”中,凡显示为粗体的,即表示该事件已内含程序。,模块和程序不同:模块只有两个任务,一个是保存程序, 另一个是声明可以在多个程序中使用的变量或常量,模块本 身不可以被运行。而程序也称为“运行程序”,一个模块中含 有若干个程序,所以程序是最基本的运行单位。创建模块,要在VBA编程环境VBE(Visual Basic Editor)中进 行。当我们选中一个需要编写代码的控件,并准备为其对应的某一事

3、 件的响应方法编写VBA代码时,就应该启动VBE,在此编辑环境中进行 VBA代码编辑操作。如图10.2所示为VBE窗口: 创建模块的方法有几种,如下: 1.在“数据库”窗口的对象栏中单击“模块”,然后单击工具栏上的“新建”按钮打开VBE编辑器,为数据库创建新的模块对象。,2.在Access菜单中单击“插入”“模块”来创建标准模块。 3.如果在已打开的VBE编辑器中,则可以在工具栏中单击 “插入模块”按钮“”,或者单击VBE菜单中“插入”“模块” 来创建新的标准模块。 读者可以任选一种适合自己的方法来创建模块。 除了自己新建模块外,还可以将宏转换为模块,在数据库窗口中选择 需要转换的宏,选择“工

4、具”菜单中“宏”子菜单中的“将宏转换为 Visual Basic代码”命令,系统会弹出“转换宏”对话框,如图10.3 所示,转换后的宏被保存为标准模块。,图10.2 VBE编辑窗口,图10.3 转换宏对话框,10.1.1 创建窗体和报表类模块,窗体和报表模块都是对象类模块,而且它们都依附于某一 窗体或报表而存在。窗体和报表中含有事件过程,通过事件 过程来控制窗体或报表的行为,以及它们对用户操作的响应。 操作一 窗体类模块创建的操作步骤如下: 1.在数据库窗口“对象”列表中的“窗体”对象有中选择要操作的窗 体名,此例选择“系统控制窗体”,如图10.4所示; 2.然后从“视图”菜单中选择“代码”命

5、令或单击视图中工具栏上的 (代码)图标,进入VBE编辑窗口,如图10.5所示; 3.从模块代码窗口中的“对象”列表框中选择要操作的对象名称,为“进货录入”控件的名称“command3”;4.选择对象后,从模块代码窗口中的“过程事件”列表框中选择相关联的过程名,此处选择“Click”事件,如图10.6所示;,图10.4 选择“系统控制窗体”,图10.5 VBE编辑窗口“空白代码窗口”,图10.6 选择“对象”和“事件”代码窗口,5.在代码窗口中出现的标准过程格式中添加要实现的代码。 代码如下: Private Sub Command3_Click() On Error GoTo Err_Comm

6、and3_Click Dim stDocName As String Dim stLinkCriteria As String stDocName = “商品进货数据录入“ DoCmd.OpenForm stDocName, , , stLinkCriteria Exit_Command3_Click: Exit Sub Err_Command3_Click:MsgBox Err.DescriptionResume Exit_Command3_ClickEnd Sub,6.根据需要重复选择对象和过程的操作,直至完成, 如图10.7所示; 对于 “系统控制窗体”中有七个命令按钮,将对应有七个事件

7、 的过程。 注意:这七个事件的过程代码同第(5)步,只是在粗体代码 stDocName = “商品进货数据录入”中引号之中的窗体名称要做相应 更改。,图10.7 完成全部事件代码的窗口,创建完窗体类模块以后,可以回到如图10.8所示的“ 系统控制窗体”窗体视图来单击各个按钮,查看是否运行。 操作二 报表类模块创建的步骤如下: 此例为“商品库存情况”的报表运行时,根据库存量来显示或隐 藏一个提示消息。当商品“库存量”小于10时,将有一个标签在打印 此节时显示消息“库存量不足,请速进货!”, 当商品“库存量”大 于10时,此标签将被隐藏。 1.从数据库窗口“对象”列表中的“报表”对象中选择要操作的

8、报表 名,如图10.9所示;,2.然后从“视图”菜单中选择“代码”命令或单击视图中 工具栏上的(代码)图标,进入VBE编辑窗口,从模块代码窗口中 “对象”列表框中选择要操作的对象名称。此处选择“主体” 对象; 3.选择对象后,从模块代码窗口中的“过程事件”列表框中选择相关 的过程名。选择Format事件。如图10.10所示; 4.在代码窗口中出现的标准过程格式中添加要实现的代码,如图10.11 所示;5.报表预览效果如下图10.12所示。此报表中包含一个名为“label24”的标签和主体节;,图10.8“系统控制窗体”,图10.9 选择报表“商品库存情况”报表,图10.10选择“对象”和“事件

9、”,图10.11添加代码窗口,图10.12 报表预览效果,10.1.2 编写函数和子过程,在普通类模块中可以自定义过程或函数,可以创建自定义 的对象。 1.函数与子过程的定义 在一个不包含过程和函数的模块中声明公共变量和常量,此公共 变量和常量可以在任 何模块中的任何函数和过程中使用。 函数定义的语法结构如下: Function 函数名(参数)AS 数据类型函数代码End Function,子过程定义的语法结构如下:Sub 子过程名()子程序代码End sub 可以在函数和子过程定义时使用Public、Private或Static前缀来 声明子过程和函数的作用范围。Private前缀表示为私有

10、的子过程和函数,只能在定义它们的模块中 使用,Public前缀代表公共的子过程和函数可能被任何其他模块调用, 当模块中子过程和函数没有使用Private进行声明,则系统默认为 Public(公共)子过程和函数。,2.创建函数与子过程 子过程和函数是指那些不与特定的对象或事件绑定的过程。 (1)在代码模块中创建子过程和函数 操作步骤如下: A.在“数据库”窗口的对象栏中单击“模块”。 B.单击工具栏的“新建”按钮创建新的模块,或者选择一个 现有的模块并单击“设计”按钮,打开VBE窗口。 C.选择“插入”“过程”命令,或单击工具栏上的“插入模块” 按钮的下拉列表三角形,然后选择下拉菜单中的“过程”

11、命令,打开“添加过程”对话框,如图10.13所示。,图10.13添加过程对话框,D.键入过程或函数名,此例过程名为“NewSub”。 E.选择过程的类型。可以选择新建过程类型为“子程序”、 “函数”或者“属性”。 F.要使用新建过程适用于整个适用程序,应将范围选为 “公共的”;如果要限定过程于当前模块,应该将范围选为 “私有的”。 G.选择是否需要将过程中所有变量声明为静态变量。 H.单击“确定”按钮,确认根据所做选择创建一个新过程。 上述步骤完成后,如果我们在对话框中选择创建一个静态的公共子 程序,单击“确定”按钮后,VBE自动在代码中加入如下语句: Public Static Sub Ne

12、wSub()End sub 光标停留在两条语句的中间,等待用户编加过程代码。此例为计算1到10的偶数之和。添加代码如图10.14所示。,图10.14编写子过程代码窗口,创建函数过程方法同上,创建好的函数如下图10.14所示。 此例函数为判断第几季度。,图10.15编写函数代码窗口,10.1.3将宏转换成模块,宏本身就是程序,只不过是一种控制方法简单的程序而已。 那么可以将宏转换为对应的VBA程序,Access数据库管理系统 为此提供了两种方式,将宏转换成模块。 方法一:在“超市信息管理系统”数据库设计视图的宏对象集合 中选中“系统控制窗体宏组”对象,在窗口菜单上单击“文件” “另存为”,即出现

13、如图10.16所示的“另存为”对话框,将对象命 名为“系统控制窗体宏组 的副本”,再将保存类型定义为“模块”, 单击对话框上的“确定”按钮完成了将宏对象转换为VBA程序模块的 操作。,回到数据库窗口,单击“模块”对象按钮,在“模块”对 象集合中会找到“被转换的宏 系统控制窗体宏组”这样 的模块,如图10.17所示。 方法二:在数据库设计视图宏对象集合中选中“系统控制 窗体宏组”,在窗口菜单栏上依次单击“工具” “宏” “将宏转换为Visual Basic代码”命令,随即弹出“转换宏” 对话框,如图10.18所示。根据需要在这个对话框中完成两个选项 的选定操作后,单击“转换”按钮可将宏对象“系统

14、控制窗体宏组” 转换成为一个名为“系统控制窗体宏组 的副本”的模块对象。,图10.16宏另存为模块对话框,10.17转换完成的模块对象集合,图10.18转换宏对话框,10.1.4 VBA代码的测试,VBA代码的调试由VBE提供调试工具,可以测试代码,查 找编写错误。 可以在VBE编辑器窗口中,打开将要进行调试的模块,单击 “调试”菜单项,可看到调试子菜单项,如图所示,根据子菜 单上的命令可以进行调试。 调试时,分为两个步骤:断点设置和单步跟踪。 1.断点设置Access提供的大部分调试工具,都必须在程序处于挂起状态才能 有效,这时就需要暂停Visual Basic程序代码。如果要使Visual

15、 Basic挂起代码,可以设置断点 设置断点的方式有两种: 在“Visual Basic代码编辑器”的代码窗口中,将光标移到要设置断点的行。单击调试工具栏上的“切换断点”按钮“ ”。,(2)在“Visual Basic代码编辑器”的代码窗口中,用鼠 标单击要设置断点行的左侧边缘部分。 如果要清除断点,可以将光标移到设置断点的代码行,然后 在调试工具栏上单击“切换断点”按钮。Access在运行到包含 断点的代码行时,暂停代码的执行,进入中断模式。设置断点会 加粗和突出显示该行。 如果要继续运行代码,可以单击调试工具栏上的“运行子过程/用 户窗体”按钮“ ”。 2.单步跟踪 在程序代码挂起后,便可

16、以逐步执行Visual Basic代码,帮助识 别发生错误的位置,并且可以查看是否每一行代码都产生了预期的结果。,用于代码调试的方式有3种: (1)逐语句执行 要单步执行每一行代码,包括被调用的过程中的代码,可以单 击调试工具栏上的“逐语句”按钮“ ”。 (2)逐过程执行 要单步执行每一行代码,但是将任何被调用的过程作为一个单位执 行,可以单击调试工具栏上的“逐过程”按钮“ ”。 (3)跳出执行 要运行当前过程中的剩余代码,可以单击调试工具栏上的“跳出”按钮“ ”,当执行完这个过程,程序返回到调用该过程的过程后,“跳出”命令执行完毕。,VBA程序设计有几种控制结构:选择控制结构、循环控制结构。

17、 选择控制结构有条件结构和选择结构两种。 (1)条件结构:只要执行一个语句,则可以使用条件结构。 语法如下:if 条件表达式 then 语句1 else 语句2 (2)选择结构:在多个语句块中有选择地执行其中的一个。 语法如下:Select case 表达式 case 表达式值列表1语句1case 表达式值列表2语句2case else 语句nEnd select,10.2.1 程序设计,当一个表达式与几个不同的值比较时,可以使用选择结构 语句。 例:根据某年某月来判断该月有多少天?,图10.19 分支结构窗体,在窗体上三个文本框控件(年份、 月份、天数),需要输入年份数和 月份数值后回车,或

18、单击“天数” 文本框,结果将显示在“天数”文 本框内。 将代码填加到文本框的“单击”事 件中。,Private Sub 天数_GotFocus()num = 月份.ValueSelect Case numCase 1, 3, 5, 7, 8, 10, 12天数.Value = 31Case 4, 6, 9, 11天数.Value = 30Case ElseIf (年份.Value Mod 4 = 0) And (年份.Value Mod 100 0) Or (年份.Value Mod 400 = 0) Then天数.Value = 29Else天数.Value = 28End IfEnd Se

19、lectEnd Sub,2.循环控制语句 VBA提供两种循环结构,即DO循环、FOR循环。 (1) DO循环:用于重复执行一个语句块,重复次数不定。 A)DO WHILE结构,语法如下: DO WHILE 条件表达式 循环语句块LOOP 只要表达式为真,循环就一直执行,直到表达式为假时结束循环。 B)DO UNTIL结构,语法如下: DO UNTIL 条件表达式 循环语句块LOOP,如果表达式为假,执行循环语句块,只要表达式为真时 结束循环。 (2)FOR循环结构:当不知道循环次数时,最好用DO循环, 但如果知道执行的次数,则最好还是用FOR循环。 语法如下: FOR 循环控制变量=循环初始值

20、表达式 to 循环终值表达式 STEP 步长数 循环语句块 NEXT 循环控制变量,例:求阶乘。 Option Compare Database Public s Private Sub 结果_GotFocus()Dim intI As Integer s = 1 For intI = 1 To 数字.Value s = s * intI Next 结果.Value = s End Sub上例程序可在窗体中显示其结果,如图10.20所示。,图10.20 阶乘窗体,在窗体中的“输入数值的阶 乘”文本框(数字)中输入 需要计算乘的数值后回车, 或单击下面的文本框(结果), 结果显示在“结果”文本框

21、中。,10.2.2对窗体中控件对象编程,一、对标签或文本框编程 标签和文本框都可以用来显示文本,但是,标签只能用于显 示文字,不能进行编辑,而文本框既可以显示文本,也可以输 入文本。 1.文本框或标签都有自己的基本属性,来控制文本框或标签的格式、 特征和位置。包含以下几个部分的属性: (1)外观属性包含:BackColor 、ForeColor 、BorderStyle属性 (2)位置属性 包含:Height、 Left、 Top、 Width属性,(3)行为属性 包含:Enabled、IMEMode、 Locked 、ScrollBars 、TabIndex 、TabStop、 Visibl

22、e属性。 (4)杂项包含:Name、 HelpContextId、 Text属性 (5)字体属性包含一些与文本框中字体相关的属性:FontBold、 FontItalic 、FontName、 FontSize 、FontUnderline、 FontWeight 、Format属性。 2.文本框控件又有自己的基本事件和方法 (1)数据响应类型事件包含:AfterUpdate 、BeforeUpdate、 Change事件,(2)鼠标动作类事件 包含:Click 、DblClick、 MouseDown、 MouseUp、 MouseMove、 MouseMove事件 (3)焦点类事件 包含:

23、Enter 、Exit、Gotfocus、 LostFocus事件 (4)键盘响应类事件 包含:KeyUp 、KeyPress事件 3.标签控件事件和方法 标签控件的事件要相对其它控件要少很多,主要有五个:MouseMove事件、MouseUp事件、 Click事件、 DblClick事件。 编程实例参见教材。,10.2.3 编程创建消息框,如要显示简短的消息(如警告),可使用称为消息框的预 定义对话框。显示消息框的方法一是将 MsgBox 操作添加到 一个宏中,另一种是将 MsgBox 函数添加到一个 Microsoft Visual Basic 过程中。 在过程中添加一个赋值语句,将 Ms

24、gBox 函数的返回值赋给一个 变量。该函数根据用户在消息框中所单击的按钮不同而返回不同的值。 然后过程可根据返回值的不同执行不同的操作。 例如,下面的赋值语句运行 MsgBox 函数,显示一则消息,并将函数 的返回值赋予 Rv 变量: Rv = MsgBox(“是否继续此操作?“, vbOKCancel),1.在窗体中设置这样一个“单击此处”按钮,此按钮的 单击事件“Click”的代码如下: Private Sub Command1_Click() rv = MsgBox(“是否继续此操作?“, vbOKCancel) If rv= vbOK Then MsgBox (“祝你成功!“) Else MsgBox (“错 误!“) End If End Sub 2.将上述代码写在VBE编辑器的代码窗口,如下图10.23所示;,图10.23编写消息框代码,3.运行此消息框,请回到“窗体”视图,单击“单击此 处”按钮,将会弹出如图所示的消息框。如图10.24所示; 4.当单击消息框中的“确定”按钮时,弹出如图10.24(a)所示 的消息框,单击“取消”按钮,将弹出另一个如图图10.25(b)所 示消息框; 以上创建消息框也可以在宏对象中完成。,图10.24 弹出“消息框”,图10.25结果“消息框”,(a),(b),

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 网络科技 > 数据库

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报