《VBA应用实例》PPT课件.ppt

上传人:cl****1 文档编号:568546436 上传时间:2024-07-25 格式:PPT 页数:30 大小:250.46KB
返回 下载 相关 举报
《VBA应用实例》PPT课件.ppt_第1页
第1页 / 共30页
《VBA应用实例》PPT课件.ppt_第2页
第2页 / 共30页
《VBA应用实例》PPT课件.ppt_第3页
第3页 / 共30页
《VBA应用实例》PPT课件.ppt_第4页
第4页 / 共30页
《VBA应用实例》PPT课件.ppt_第5页
第5页 / 共30页
点击查看更多>>
资源描述

《《VBA应用实例》PPT课件.ppt》由会员分享,可在线阅读,更多相关《《VBA应用实例》PPT课件.ppt(30页珍藏版)》请在金锄头文库上搜索。

1、Access 基础教程(第三版)基础教程(第三版)第第10章章 VBA应用实例应用实例第第10章章 VBA应用实例应用实例10.1 程序流程控制程序流程控制10.2 文件文件10.3 过程调用过程调用10.4 计时器计时器Timer10.5 ADO数据库编程实例数据库编程实例10.1 程序流程控制程序流程控制10.1.1 选择结构选择结构例例1:窗体中有一名为:窗体中有一名为Command1的命令按钮,其单击事件过程如下所示的命令按钮,其单击事件过程如下所示,试分析单击该命令按钮后消息框中的显示内容。,试分析单击该命令按钮后消息框中的显示内容。实例:实例:10_1Private Sub Com

2、mand1_Click()() a=75 If a60 Then k=1 ElseIf a70 Then k=2 ElseIf a80 Then k=3 ElseIf a90 Then k=4 End If MsgBox kEnd Sub本例是块本例是块If语句的应用,执行的过程是:按条语句的应用,执行的过程是:按条件出现的顺序依次判断每一个条件,发现第一件出现的顺序依次判断每一个条件,发现第一个成立的条件后,则立即执行与该条件相对应个成立的条件后,则立即执行与该条件相对应的语句组,然后跳出该条件语句,去执行的语句组,然后跳出该条件语句,去执行End If后的第一条语句。因为后的第一条语句。因

3、为a=75,满足,满足a60的条件,所以的条件,所以k=1,End If后的第一条语句后的第一条语句为为MsgBox k,所以消息框中显示的结果为,所以消息框中显示的结果为1。10.1 程序流程控制程序流程控制例例2:窗体中有一名为:窗体中有一名为Command1的命令按钮,其单击事件过程如下所示的命令按钮,其单击事件过程如下所示,试分析单击该命令按钮后消息框中的显示内容。,试分析单击该命令按钮后消息框中的显示内容。 实例:实例:10_2Private Sub Command1_Click()() A=75 If A60 Then I=1 If A70 Then I=2 If A80 Then

4、 I=3 If A90 Then I=4 MsgBox IEnd Sub本例是四个行本例是四个行If语句的顺序结构。与标准的语句的顺序结构。与标准的IfThenEnd If结构相比较,缺少了结构相比较,缺少了End If,但这在,但这在VBA中是允许的,所以判断中是允许的,所以判断的过程也应该是顺序的,执行过程应该是的过程也应该是顺序的,执行过程应该是A=75,A大于大于60所以所以I=1;A大于大于70所以所以I=2;A不大于不大于80,所以,所以I值不发生变化;值不发生变化;A值不大于值不大于90,所以,所以I值不发生变化;最终消息值不发生变化;最终消息框中显示的结果应为框中显示的结果应为

5、I的最后值的最后值2。10.1 程序流程控制程序流程控制例例3:分析如下窗体单击事件过程的显示结果。:分析如下窗体单击事件过程的显示结果。 实例:实例:10_3Private Sub Form_Click()() a=1 For i=3 To 1 Step -1 Select Case i Case 1,3 a=a+1 Case 2,4 a=a+2 End Select Next i MsgBox aEnd Sub本例是本例是Select Case选择结构和选择结构和For循环结循环结构的应用集合,分析的重点在于构的应用集合,分析的重点在于Select Case的选择分支,分支一的选择分支,分

6、支一Case 1,3,也就,也就是说当是说当i值为值为1或或3时执行的操作为时执行的操作为a=a+1;分支二分支二Case 2,4,也就是说当,也就是说当i值为值为2或或4时时执行的操作为执行的操作为a=a+2。a的初值为的初值为1,循环变,循环变量量i的变化过程是由的变化过程是由3到到1,那么在整个循环过,那么在整个循环过程中,要执行两次程中,要执行两次a=a+1的操作和一次的操作和一次a=a+2的操作,所以最终消息框显示的结果的操作,所以最终消息框显示的结果为为5。10.1 程序流程控制程序流程控制例例4:试用:试用IfThenEnd If选择结构实现三个数由大到小的顺序排列。选择结构实现

7、三个数由大到小的顺序排列。要求在如图要求在如图10.1所示的所示的“排序排序”窗体中名为窗体中名为“text1”、“text2”和和“text3”的三个文本框中输入三个数,单击的三个文本框中输入三个数,单击“排序排序”(名为(名为Command1)按钮后,三个数按由大到小的顺序排列;单击)按钮后,三个数按由大到小的顺序排列;单击“重新输入重新输入”(Command2)按钮后,清空文本框,以便于重新输入。结果如图)按钮后,清空文本框,以便于重新输入。结果如图10.2所示。所示。图图10.1-10.2实例:实例:10_4解题思路解题思路:要想将三个数进行排序,首先要将这三个数中任意两个数进行比:要

8、想将三个数进行排序,首先要将这三个数中任意两个数进行比较,如果比较过程中较大数在较小数之前,则不需要改变它们的顺序,否则较,如果比较过程中较大数在较小数之前,则不需要改变它们的顺序,否则需要将两个数的位置进行交换。对于三个数排序要进行需要将两个数的位置进行交换。对于三个数排序要进行(32)/(21)次比较。)次比较。 本例中使用了去掉前导空格函数本例中使用了去掉前导空格函数LTrim()、类型转换函数()、类型转换函数Val()和()和Str()及对象获得焦点的方法()及对象获得焦点的方法SetFocus;同时在做较大数和较小数的置换;同时在做较大数和较小数的置换过程使用了中间变量过程使用了中

9、间变量t,这是本例中需要注意的。三个,这是本例中需要注意的。三个IfThenEnd If之间是顺序结构,实现了三次比较的过程。之间是顺序结构,实现了三次比较的过程。10.1 程序流程控制程序流程控制例例5:试用:试用Select Case选择结构实现一个收取货物运费的程序。要求:选择结构实现一个收取货物运费的程序。要求:在固定两地之间,收取货物运费的原则是:在固定两地之间,收取货物运费的原则是:10吨以内(不含吨以内(不含10吨)的货物,吨)的货物,每吨收取运费每吨收取运费100元;元;10吨至吨至50吨(不含吨(不含50吨)的货物,每吨收取运费吨)的货物,每吨收取运费70元;元;50吨以上的

10、货物,每吨收取运费吨以上的货物,每吨收取运费50元。在如图元。在如图10.3所示的所示的“计算计算运输费用运输费用”窗体中窗体中“Weight”文本框(关联标签为文本框(关联标签为“货物重量货物重量”)内输入货)内输入货物重量后,单击物重量后,单击Command1(标题为(标题为“计算计算”)按钮,在)按钮,在“Cost”文本文本框(关联标签为框(关联标签为“运输费用运输费用”)中显示出运输费用;单击)中显示出运输费用;单击Command2(标题为(标题为“清除清除”)按钮,清空两个文本框。结果如图)按钮,清空两个文本框。结果如图10.4所示。所示。图图10.3-10.4实例:实例:10_5解

11、题思路解题思路:这是一个最为简单的多路分支选择结构实例,只需要根据货物重:这是一个最为简单的多路分支选择结构实例,只需要根据货物重量的不同,选择不同运费计算公式即可。量的不同,选择不同运费计算公式即可。 本例中使用了去掉前导空格函数本例中使用了去掉前导空格函数LTrim()、类型转换函数()、类型转换函数Val()和()和Str()及对象获得焦点的方法()及对象获得焦点的方法SetFocus;同时在显示计算结果的过程中使;同时在显示计算结果的过程中使用了连接运算符用了连接运算符“+”(实现字符串的连接),这是本例中需要注意的。(实现字符串的连接),这是本例中需要注意的。Select Case选

12、择结构的执行过程是在找到满足条件的第一分支并执行其选择结构的执行过程是在找到满足条件的第一分支并执行其后的语句组,然后后的语句组,然后End Select。 10.1 程序流程控制程序流程控制10.1.2 循环结构循环结构例例6:窗体中有一名为:窗体中有一名为Command1的命令按钮,其单击事件过程如下所示的命令按钮,其单击事件过程如下所示,试分析单击该命令按钮后,试分析单击该命令按钮后sum的值。的值。实例:实例:10_6Private Sub Command1_Click()() Dim sum As Double,j As Double sum=0 n=0 For i=1 To 5 j

13、=n/i n=n+1 sum=sum+j Next iEnd Sub为显示结果,实例中稍有变化。为显示结果,实例中稍有变化。本例是本例是For循环语句的应用,循环变量循环语句的应用,循环变量i的取值的取值为为1到到5。当。当i值为值为1时,时,x的值为的值为0,n值值1,sum值为值为0(注意赋值语句的顺序结构);当(注意赋值语句的顺序结构);当i值为值为2时,时,x值为值为1/2,n值为值为2,sum值为值为1/2;当;当i值为值为3时,时,x值为值为2/3,n值为值为3,sum值为值为1/2+2/3;以此类推,当循环结;以此类推,当循环结束之后束之后sum的值为的值为1/2+2/3+3/4

14、+4/5。10.1 程序流程控制程序流程控制例例7:窗体中有一名为:窗体中有一名为Command1的命令按钮,其单击事件过程如下所示的命令按钮,其单击事件过程如下所示,试分析单击该命令按钮后消息框中的显示内容。,试分析单击该命令按钮后消息框中的显示内容。实例:实例:10_7Private Sub Command1_Cllick()() Dim M(10) As Integer For k=1 to 10 M(k)=12-k Next k x=6 MsgBox M(2+M(x)End Sub本例是本例是For循环语句和数组的集合应用,一维循环语句和数组的集合应用,一维数组数组M的下限为的下限为0

15、、上限为、上限为10,循环变量,循环变量k的的取值为取值为1到到10。For循环的作用在本例中是为循环的作用在本例中是为数据数据M中的元素赋值,下标为中的元素赋值,下标为k的元素其值为的元素其值为12-k,如:,如:M(1)值为)值为11,M(10)值为)值为2。消息框中显示的消息为。消息框中显示的消息为M(2+M(x),),首先要计算出首先要计算出M(x)的值,)的值,x=6,所以,所以M(x)=6;因此;因此M(2+M(x)实际上)实际上是是M(8),所以最终消息框的显示结果为),所以最终消息框的显示结果为4。10.1 程序流程控制程序流程控制例例8:试分析如下程序运行结束之后变量:试分析

16、如下程序运行结束之后变量J的值。的值。实例:实例:10_8Private Sub Fun()() Dim J As Integer J=10 Do J=J+3 Loop While J19End Sub为显示结果,实例中稍有变化。为显示结果,实例中稍有变化。本例是本例是DoLoop While循环结构的应用,循环结构的应用,分析的重点在于条件式分析的重点在于条件式J19和其位置。当和其位置。当J19时执行循环体中的语句;另外需要注意时执行循环体中的语句;另外需要注意的是条件式在的是条件式在Loop后,循环体至少要执行一后,循环体至少要执行一次,它决定了是否回到循环体起始处。循环体次,它决定了是

17、否回到循环体起始处。循环体中的语句为中的语句为J=J+3,也就是说每执行一次循,也就是说每执行一次循环环J的值要加的值要加3。当执行两次循环体操作后。当执行两次循环体操作后J=16,仍然满足,仍然满足J19的条件,所以还要执的条件,所以还要执行第三次循环;而当第三次循环结束后行第三次循环;而当第三次循环结束后J=19,已经不满足,已经不满足J8为显示结果,实例中稍有变化。为显示结果,实例中稍有变化。本例是本例是DoLoop Until循环结构和循环结构和For循环循环的嵌套,分析的重点在于变量的嵌套,分析的重点在于变量i值的变化过程,值的变化过程,它即是它即是For循环的终止值,又控制了循环的

18、终止值,又控制了DoLoop Until循环的条件。循环的条件。i值的变化在值的变化在DoLoop Until循环中由循环中由i=i+2赋值语句赋值语句来进行,当来进行,当i8时程序运行结束,所以时程序运行结束,所以i可能可能的值为的值为1、3、5、7。For循环中步长为循环中步长为2,当当i=1时,时,k=k+1=1;当;当i=3时,时,k=k+1+3=5;当;当i=5时,时,k=k+1+3+5=14;当;当i=7时,时,k=k+1+3+5+7=30。当循环结束之后。当循环结束之后k的值为的值为30。 10.1 程序流程控制程序流程控制例例14:试分析如下程序运行结束之后消息框中显示的内容:

19、试分析如下程序运行结束之后消息框中显示的内容.实例:实例:10_14Dim str1,str2 As StringDim I As Integerstr1=”abcdef”For i=1 To Len(str1) Step 2 str2=UCase(Mid(str1,i,1)+str2Next iMsgBox str2为显示结果,实例中稍有变化。为显示结果,实例中稍有变化。本例中使用了字符串函数本例中使用了字符串函数Len()、()、Mid()和大小写转换函数()和大小写转换函数Ucase()。()。由于字符串由于字符串str1的值不发生变化,的值不发生变化,所以所以Len(str1)的值固定

20、为)的值固定为6。因此因此For循环变量循环变量i的取值为的取值为1、3和和5(步长为(步长为2),),Ucase(Mid(str1,i,1)实际)实际上就是取上就是取str1中第中第i个字符然后再个字符然后再转换为大写字母,当转换为大写字母,当i=1时,时,str2=A;当;当i=3时,时,str2=CA;当;当i=5时,时,str2=ECA。当程序。当程序运行结束之后,消息框中显示的内运行结束之后,消息框中显示的内容为容为ECA。10.1 程序流程控制程序流程控制例例15:窗体中有一名为:窗体中有一名为Command1的命令按钮,其单击事件过程如下所的命令按钮,其单击事件过程如下所示,试分

21、析当单击该命令按钮后消息框中显示的内容。示,试分析当单击该命令按钮后消息框中显示的内容。实例:实例:10_15Private Sub Command1_Click()() Dim a(10,10) For m=2 To 4 For n=4 To 5 a(m,n)=m*n Next n Next m MsgBox a(2,5)+a(3,4)+a(4,5)End Sub本例是本例是For循环嵌套和二维数组的循环嵌套和二维数组的应用。应用。For循环的作用在于为数组循环的作用在于为数组元素赋值元素赋值a(m,n)=m*n,因此,因此需要考虑的是循环过程中,数组元需要考虑的是循环过程中,数组元素素a(

22、2,5)、a(3,4)和和a(4,5)是是否已经赋值,由于否已经赋值,由于m为为24,n为为45,三者都在范围内,所以,三者都在范围内,所以a(2,5)=10、a(3,4)=12、a(4,5)=20,因此,因此a(2,5)+a(3,4)+a(4,5)=42。当程序运行结束之后消息框中显示当程序运行结束之后消息框中显示的内容为的内容为42。 10.1 程序流程控制程序流程控制例例16:计算:计算要求要求:在如图:在如图10.5所示的所示的“计算计算”窗体中有一名为窗体中有一名为Text1(关联标签为(关联标签为“请输入请输入N值值”)的文本框和一名为)的文本框和一名为Command1(标题为(标

23、题为“计算计算”)的命)的命令按钮,在文本框中输入一个正整数,单击令按钮,在文本框中输入一个正整数,单击Comman1后在消息框中显示后在消息框中显示计算结果。计算结果。解题思路解题思路:该表达式每一项均是一个求:该表达式每一项均是一个求 的多项式。每个多项式有相同的的多项式。每个多项式有相同的特点:从特点:从1不断除到某一个数。(或者理解为:分母都是从不断除到某一个数。(或者理解为:分母都是从1一直累乘到某一直累乘到某一个数)这样,表达式中的每一项就都可以通过一个相同的求值过程来完成。一个数)这样,表达式中的每一项就都可以通过一个相同的求值过程来完成。需要注意的是终止值是不断变化到需要注意的

24、是终止值是不断变化到n的。的。在在Text1中输入中输入5,单击,单击Command1命令按钮后的结果如图命令按钮后的结果如图10.6所示。所示。图图10.5-10.6实例:实例:10_16 10.1 程序流程控制程序流程控制例例17:在如图:在如图10.7所示的所示的“质数质数”窗体中有一标题为窗体中有一标题为“筛选筛选”的命令按钮的命令按钮(名称为(名称为Command1)和一名为)和一名为Label1的标签控件。要求:单击的标签控件。要求:单击“筛选筛选”按钮后,在标签框中显示出按钮后,在标签框中显示出50100之间的所有质数。试用循环结构和之间的所有质数。试用循环结构和IfThenEl

25、seEnd If选择结构实现。选择结构实现。 解题思路解题思路:首先,应该清楚怎样判断一个数是否是质数。作为质数,除了:首先,应该清楚怎样判断一个数是否是质数。作为质数,除了1和它本身之外,不能再被其他数整除。那么只需判断该数是否存在和它本身之外,不能再被其他数整除。那么只需判断该数是否存在1和它本和它本身之外的因子,如果存在,这两个因子必然是一个大于或等于该数的平方根,身之外的因子,如果存在,这两个因子必然是一个大于或等于该数的平方根,另一个小于或等于该数的平方根,并且这两个因子是成对出现的。所以只要另一个小于或等于该数的平方根,并且这两个因子是成对出现的。所以只要找出其中较小的一个因子即可

26、认为该数不是质数,否则,该数就是质数。然找出其中较小的一个因子即可认为该数不是质数,否则,该数就是质数。然后,依次判断其他的数是否是质数。后,依次判断其他的数是否是质数。图图10.7实例:实例:10_17 10.1 程序流程控制程序流程控制例例18:试用:试用For循环结构实现一个用循环结构实现一个用“*”在消息框中打印矩形的程序。在消息框中打印矩形的程序。要求要求:在如图:在如图10.8所示的所示的“打印矩形打印矩形”窗体中关联标签为窗体中关联标签为“个数个数”(名称(名称为为Text1)的文本框内输入一个数字)的文本框内输入一个数字N,单击标题为,单击标题为“显示结果显示结果”(名称为(名

27、称为Command1)的命令按钮后,在消息框中显示由)的命令按钮后,在消息框中显示由“*”构成的构成的N行行N列矩列矩形。形。解题思路解题思路:首先,应该考虑由:首先,应该考虑由“*”组成的矩形是由行和列构成的,行数和组成的矩形是由行和列构成的,行数和列数由用户输入的数字列数由用户输入的数字N(取值于文本框控件(取值于文本框控件Text1)来决定,因此要用)来决定,因此要用For循环的嵌套来实现,并且终止值都为循环的嵌套来实现,并且终止值都为N;其次,结果要在循环结束之后;其次,结果要在循环结束之后显示,因此在每行结束之后都要加上回车符显示,因此在每行结束之后都要加上回车符Chr(13)和换行

28、符)和换行符Chr(10)。)。 单击单击“显示结果显示结果”按钮后的结果如图按钮后的结果如图10.9所示。所示。图图10.8-10.9实例:实例:10_18 10.2 文件文件例例19:通过文件的应用破解:通过文件的应用破解Access密码。密码。解题思路解题思路:Access在加密中引入了该文件的创建日期。所以,第一步,调在加密中引入了该文件的创建日期。所以,第一步,调整系统时间后新建一个整系统时间后新建一个Access文件,使得新建的文件和要破解密码的文件,文件,使得新建的文件和要破解密码的文件,在创建日期上是相同的。第二步,需要知道在创建日期上是相同的。第二步,需要知道Access密码

29、存放在文件的什么密码存放在文件的什么位置。对一个位置。对一个Access文件,它的密码存放的位置的偏移地址是文件,它的密码存放的位置的偏移地址是H43。第。第三步,需要知道的是,三步,需要知道的是,Access文件的密码在存储中与实际输入的密码字符文件的密码在存储中与实际输入的密码字符之间的关系是什么。实际上,之间的关系是什么。实际上,Access密码在存储中是经过异或运算得到的。密码在存储中是经过异或运算得到的。异或运算具有如下特点:如果异或运算具有如下特点:如果A Xor B = C,那么,那么A Xor C = B 和和C Xor B = A都成立。由上述已知条件,就不难编写该解密程序。

30、都成立。由上述已知条件,就不难编写该解密程序。10.3 过程调用过程调用例例20:在窗体有一名为:在窗体有一名为Command1的命令按钮和一名为的命令按钮和一名为Text1文本框,文本框,命令按钮的单击事件过程如下所示,试分析单击命令按钮的单击事件过程如下所示,试分析单击Command1命令按钮后命令按钮后文本框文本框Text1中的显示内容。中的显示内容。实例:实例:10_20Private Sub Command1_Click()() Dim x As Integer,y As Integer,z As Integer x=5:y=7:z=0 Me!Text1=” p1(x,y,z) Me

31、!Text1=zEnd SubSub p1(a As Integer,b As Integer,c As Integer) c=a+bEnd Sub为显示结果,实例中稍有变化。为显示结果,实例中稍有变化。 本本例例是是过过程程调调用用的的应应用用,要要求求形形参参和和实实参参的的数数据据类类型型及及数数量量一一致致。子子过过程程pl定定义义了了整整型型形形参参a、b和和c,命命令令按按钮钮Command1的的单单击击事事件件过过程程中中定定义义了了整整型型实实参参x、y和和z,也也就就是是说说a、b、c分分别别对对应应x、y、z。缺缺省省的的参参数数传传递递方方式式为为ByRef,为为“双双向

32、向作作用用”,实实参参和和形形参参可可以以互互相相 影影 响响 。 因因 此此 , 单单 击击Command1命命令令按按钮钮后后文文本本框框Text1中中的的显显示示内内容为容为12。10.3 过程调用过程调用例例21:窗体中有一名称为:窗体中有一名称为Command1的命令按钮,其单击事件过程如下的命令按钮,其单击事件过程如下所示,试分析单击所示,试分析单击Command1命令按钮后消息框中的显示内容。命令按钮后消息框中的显示内容。实例:实例:10_21Private Sub s(ByVal p As Integer) p=p*3End SubPrivate Sub Command1_Cl

33、ick()() Dim I As Integer i=3 s(i) If i10 Then i=i3 End If MsgBox iEnd Sub 本本例例是是过过程程调调用用的的应应用用,分分析析的的重重点点在在于于参参数数的的传传递递方方式式:ByVal为为“单单向向作作用用”,形形参参的的值值不不会会影影响响实实参参。因因此此,调调用用前前实实参参i的的值值为为3,调调用用后后实实 参参 i的的 值值 仍仍 然然 为为 3, 所所 以以 单单 击击Command1命命 令令 按按 钮钮 后后 文文 本本 框框Text1中的显示内容为中的显示内容为3。 10.3 过程调用过程调用例例22:

34、窗体有一名称为:窗体有一名称为Command1的命令按钮,其单击事件过程如下所的命令按钮,其单击事件过程如下所示,试分析单击示,试分析单击Command1命令按钮后消息框中的显示内容。命令按钮后消息框中的显示内容。实例:实例:10_22Public x As IntegerPrivate Sub Command1_Click()() x=10 Call s1 Call s2 MsgBox xEnd SubPrivate Sub s1()() Dim x As Integer x=x*2End SubPrivate Sub s2()() x=x*3End Sub 本本例例是是过过程程调调用用的的

35、应应用用,分分析析的的重重点点在在于于变变量量x的的作作用用域域。Public x As Integer声声明明在在所所有有过过程程之之外外的的起起始始位位置置,作作用用域域为为模模块块范范围围,运运行行时时在在模模块块所所包包含含的的所所有有子子过过程程和和函函数数过过程程中中可可见见;而而子子过过程程s1中中的的Dim x As Integer,定定义义在在过过程程内内部部,其其作作用用域域为为局局部部范范围围,只只有有执执行行该该过过程程时时才才可可见见,并并且且其其值值不不会会传传回回。命命令令按按钮钮的的单单击击事事件件过过程程中中调调用用了了子子过过程程s1和和s2,实实际际上上影

36、影响响最最终终显显示示结结果果的的只有只有s2,所以结果为,所以结果为30。 10.3 过程调用过程调用例例23:求表达式:求表达式(1+2+3)+(1+2+3+4)+ +(1+2+3+n)之和。之和。(n4)图:图:10.10-10.11实例:实例:10_23要求要求:编写一个计算:编写一个计算1+2+n的子过程的子过程a,并在命令按钮,并在命令按钮Command1的单击事件过程中调用,根据用户输入的的单击事件过程中调用,根据用户输入的n值求解值求解(1+2+3)+(1+2+3+4)+ +(1+2+3+n)。说明说明:在如图:在如图10.10所示的所示的“计算结果计算结果”窗体中有一名为窗体

37、中有一名为Command1(标题为(标题为“计算计算”)的命令按钮和名为)的命令按钮和名为Text1(关联标签为(关联标签为“请输入请输入N值值”)、)、Text2(关联标签为(关联标签为“结果结果”)的两个文本框控件,要求在)的两个文本框控件,要求在Text1中输入中输入n值,单击值,单击“计算计算”命令按钮后,在命令按钮后,在Text2中显示计算结果,中显示计算结果,如图如图10.11所示。所示。解题思路解题思路:该表达式每一项均是一个完成累加求和的多项式。每个多项式有:该表达式每一项均是一个完成累加求和的多项式。每个多项式有相同的特点:都是从相同的特点:都是从1一直累加到某一个数。这样,

38、表达式中的每一项就都一直累加到某一个数。这样,表达式中的每一项就都可以通过一个相同的求值过程来完成。通过调用可以通过一个相同的求值过程来完成。通过调用Sub子程序可以完成这一子程序可以完成这一过程,当然终止值要考虑是不断变化到过程,当然终止值要考虑是不断变化到n的。的。10.3 过程调用过程调用例例24:在如图:在如图10.12所示的所示的“判定奇偶数判定奇偶数”窗体中有一个名为窗体中有一个名为Command1(标题为(标题为“判定判定”)的命令按钮和一个名为)的命令按钮和一个名为Text1(关联标(关联标签为签为“请输入一个数字请输入一个数字”)的文本框,且文本框的内容为空,要求:编写一)的

39、文本框,且文本框的内容为空,要求:编写一个判定奇偶数的函数过程,并在命令按钮的单击事件过程中作为个判定奇偶数的函数过程,并在命令按钮的单击事件过程中作为IIf函数的函数的条件式引用,最终在消息框中显示判定结果,如图条件式引用,最终在消息框中显示判定结果,如图10.13所示。所示。解题思路解题思路:奇偶数的判定可以通过求模(:奇偶数的判定可以通过求模(Mod)2来实现,结果为来实现,结果为0是偶数,是偶数,否则是奇数。否则是奇数。IIf函数有三个参数,第一个参数为条件表达式,第二、三个函数有三个参数,第一个参数为条件表达式,第二、三个参数是返回值,如果条件式为真返回第二个参数;条件式为假返回第三

40、个参参数是返回值,如果条件式为真返回第二个参数;条件式为假返回第三个参数。数。图图10.12-10.13实例:实例:10_2410.4 计时器计时器Timer例例25:试用窗体的计时器触发事件设计一个如:试用窗体的计时器触发事件设计一个如图图10.14所示的登录窗体,所示的登录窗体,要求要求:打开该窗体后输入用户名和密码,登录操作要求在:打开该窗体后输入用户名和密码,登录操作要求在20秒内完成(以秒内完成(以单击单击“登录登录”命令按钮为截止时间),如果在命令按钮为截止时间),如果在20秒内没有完成登录操作则秒内没有完成登录操作则倒计时达到倒计时达到0秒时自动关闭登录窗体。秒时自动关闭登录窗体

41、。说明说明:登录窗体中有名为:登录窗体中有名为Text1(关联标签为(关联标签为“用户名用户名”)和)和Text2(关(关联标签为联标签为“密码密码”)的两个文本框,名为)的两个文本框,名为Login(标题为(标题为“登录登录”)的一)的一个命令按钮,名为个命令按钮,名为Label1(用来显示倒计时时间)的一个标签。(用来显示倒计时时间)的一个标签。解题思路解题思路:VBA中通过设置窗体的中通过设置窗体的“计时器间隔计时器间隔”(TimerInterval)属性与添加属性与添加“计时器触发计时器触发”(Timer)事件来完成)事件来完成“定时定时”功能,功能,“计时计时器间隔器间隔”属性值以毫

42、秒为单位,属性值以毫秒为单位,1000表示间隔为表示间隔为1秒。另外,需要考虑定秒。另外,需要考虑定义一个逻辑变量,用它来控制当单击义一个逻辑变量,用它来控制当单击“登录登录”命令按钮后停止倒计时。命令按钮后停止倒计时。实例:实例:10_2510.5 ADO数据库编程实例数据库编程实例例例26:试用:试用ADO实现在表中添加记录的应用。实现在表中添加记录的应用。实例:实例:10_26要求要求:当前工程数据库中表:当前工程数据库中表“Stud”用来存储学生的基本信息,包用来存储学生的基本信息,包括:学号、姓名、性别和院系,在如括:学号、姓名、性别和院系,在如图图10.15所示的所示的“学生学生”

43、窗体窗体中有名为中有名为tNo、tName、tSex和和tDept四个文本框分别与之相对四个文本框分别与之相对应。当单击窗体中的应。当单击窗体中的“添加添加”命令按钮(名称为命令按钮(名称为Command1)时,)时,首先判断学号是否存在,如果不存在则向首先判断学号是否存在,如果不存在则向“Stud”表中添加学生记表中添加学生记录;如果学号存在,则给出提示信息。录;如果学号存在,则给出提示信息。解题思路解题思路:ADO是基于组件的数据库编程接口,包含了是基于组件的数据库编程接口,包含了Connection、Command、RecordSet、Field和和Error五个五个对象,执行对象,执行

44、SQL语句要用到语句要用到Connection对象的对象的Execute方法;方法;获取记录集要用到获取记录集要用到RecordSet对象的对象的Open方法。本例应先以用方法。本例应先以用户输入的学号为条件使用户输入的学号为条件使用RecordSet对象的对象的Open方法在数据源方法在数据源表中查找相关记录,如果找到表示学号存在,给出错误提示;否则,表中查找相关记录,如果找到表示学号存在,给出错误提示;否则,使用使用Connection对象的对象的Execute方法将用户输入的内容添加到方法将用户输入的内容添加到Stud表中。表中。10.5 ADO数据库编程实例数据库编程实例例例27:试用

45、:试用ADO实现商品打折的应用。实现商品打折的应用。实例:实例:10_27要求要求:当前工程数据库中表:当前工程数据库中表“商品商品”用来存储商品的基本信息,包括:商品用来存储商品的基本信息,包括:商品编号、名称、规格和销售价格,在如编号、名称、规格和销售价格,在如图图10.16所示的所示的“商品商品”窗体中有名窗体中有名为为tNo、tName、tType和和tCost四个文本框分别与之相对应。当在窗体四个文本框分别与之相对应。当在窗体中名为中名为Text1(关联标签为(关联标签为“折扣折扣”)的文本框中输入折扣(值为小数),)的文本框中输入折扣(值为小数),单击单击“计算打折后价格计算打折后

46、价格”命令按钮(名称为命令按钮(名称为Command1)后在窗体中显)后在窗体中显示商品打折后的价格。(注意:打折是对所有商品进行的,可通过导航按钮示商品打折后的价格。(注意:打折是对所有商品进行的,可通过导航按钮查看其它商品信息)查看其它商品信息)解题思路解题思路:ADO是基于组件的数据库编程接口,包含了是基于组件的数据库编程接口,包含了Connection、Command、RecordSet、Field和和Error五个对象,执行五个对象,执行SQL语句要语句要用到用到Connection对象的对象的Execute方法;获取记录集要用到方法;获取记录集要用到RecordSet对象的对象的O

47、pen方法;操作字段数据信息要用到方法;操作字段数据信息要用到Field。本例应先使用。本例应先使用RecordSet对象的对象的Open方法在数据源表中获取所有商品记录;然后设置方法在数据源表中获取所有商品记录;然后设置Field对象的值为对象的值为“销售价格销售价格”;最后使用循环遍历整个记录集,并对每条;最后使用循环遍历整个记录集,并对每条记录的记录的“销售价格销售价格”做调整。做调整。本章小结 本章主要通过丰富的实例对本章主要通过丰富的实例对VBA在应用过程中的难点和在应用过程中的难点和重点加以解释说明,针对给定问题详细地说明了程序分析的重点加以解释说明,针对给定问题详细地说明了程序分析的重点和程序设计的思路,这一点读者在今后学习和使用过程重点和程序设计的思路,这一点读者在今后学习和使用过程可以参考借鉴。通过实例分析和设计是熟练掌握可以参考借鉴。通过实例分析和设计是熟练掌握VBA程序设程序设计的一种方法,只有日常的不断积累才能够有助于我们实际计的一种方法,只有日常的不断积累才能够有助于我们实际应用水平的提高。应用水平的提高。

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 高等教育 > 研究生课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号