Access基础教程-Access2010第九章

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

长春师范大学计算机科学与技术学院9.1程序流程控制9.2文件9.3过程调用9.4计时器Timer9.5ADO数据库编程实例本章是对第8章所涉及到的部分基础内容在实际应用角度的延伸。把握VBA的语法结构和应用技巧与掌握高级语言的方法大体一致,最重要的一点就是具备程序的分析和设计能力,也就是说针对给定的程序我们要能够读懂其功能;而针对给定的应用问题我们要能够运用所掌握的知识予以实现。本章将VBA的应用问题分为了程序流程控制、文件、过程调用、计时器Timer和ADO数据库编程实例五个部分,从分析和设计两个方面针对具体的实例加以阐述,主要介绍分析的重点和设计的思路,希望能够对读者在Access数据库较为复杂的应用方面给予帮助。9.1.1选择结构例1:窗体中有一名为Command1的命令按钮,其单击事件过程如下所示,试分析单击该命令按钮后消息框中的显示内容。PrivateSubCommand1_Click()a=75Ifa60Thenk=1ElseIfa70Thenk=2ElseIfa80Thenk=3ElseIfa90Thenk=4EndIfMsgBoxkEndSub本例是块If语句的应用,执行的过程是:按条件出现的顺序依次判断每一个条件,发现第一个成立的条件后,则立即执行与该条件相对应的语句组,然后跳出该条件语句,去执行EndIf后的第一条语句。因为a=75,满足a60的条件,所以k=1,EndIf后的第一条语句为MsgBoxk,所以消息框中显示的结果为1。例2:窗体中有一名为Command1的命令按钮,其单击事件过程如下所示,试分析单击该命令按钮后消息框中的显示内容。PrivateSubCommand1_Click()A=75IfA60ThenI=1IfA70ThenI=2IfA80ThenI=3IfA90ThenI=4MsgBoxIEndSub本例是四个行If语句的顺序结构。与标准的If…Then…EndIf结构相比较,缺少了EndIf,但这在VBA中是允许的,所以判断的过程也应该是顺序的,执行过程应该是A=75,A大于60所以I=1;A大于70所以I=2;A不大于80,所以I值不发生变化;A值不大于90,所以I值不发生变化;最终消息框中显示的结果应为I的最后值2。例3:分析如下窗体单击事件过程的显示结果。PrivateSubForm_Click()a=1Fori=3To1Step-1SelectCaseiCase1,3a=a+1Case2,4a=a+2EndSelectNextiMsgBoxaEndSub本例是SelectCase选择结构和For循环结构的应用集合,分析的重点在于SelectCase的选择分支,分支一Case1,3,也就是说当i值为1或3时执行的操作为a=a+1;分支二Case2,4,也就是说当i值为2或4时执行的操作为a=a+2。a的初值为1,循环变量i的变化过程是由3到1,那么在整个循环过程中,要执行两次a=a+1的操作和一次a=a+2的操作,所以最终消息框显示的结果为5。例4:试用If…Then…EndIf选择结构实现三个数由大到小的顺序排列。要求在如图9.1所示的“排序”窗体中名为“text1”、“text2”和“text3”的三个文本框中输入三个数,单击“排序”(名为Command1)按钮后,三个数按由大到小的顺序排列;单击“重新输入”(名为Command2)按钮后,清空文本框,以便于重新输入。单击“排序”按钮后的结果如图9.2所示。解题思路:要想将三个数进行排序,首先要将这三个数中任意两个数进行比较,如果比较过程中较大数在较小数之前,则不需要改变它们的顺序,否则需要将两个数的位置进行交换。对于三个数排序要进行(3×2)/(2×1)次比较。排序(见示例数据库)例5:试用SelectCase选择结构实现一个收取货物运费的程序。要求:在固定两地之间,收取货物运费的原则是:10吨以内(不含10吨)的货物,每吨收取运费100元;10吨至50吨(不含50吨)的货物,每吨收取运费70元;50吨以上的货物,每吨收取运费50元。在如图9.3所示的“计算运输费用”窗体中“Weight”文本框(关联标签为“货物重量”)内输入货物重量后,单击Command1(标题为“计算”)按钮,在“Cost”文本框(关联标签为“运输费用”)中显示出运输费用,如图9.4所示;单击Command2(标题为“清除”)按钮,清空两个文本框。解题思路:这是一个最为简单的多路分支选择结构实例,只需要根据货物重量的不同,选择不同运费计算公式即可。计算运输费用(见示例数据库)9.1.2循环结构例6:窗体中有一名为Command1的命令按钮,其单击事件过程如下所示,试分析单击该命令按钮后sum的值。PrivateSubCommand1_Click()DimsumAsDouble,jAsDoublesum=0n=0Fori=1To5j=n/in=n+1sum=sum+jNextiEndSub本例是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+4/5。例7:窗体中有一名为Command1的命令按钮,其单击事件过程如下所示,试分析单击该命令按钮后消息框中的显示内容。PrivateSubCommand1_Cllick()DimM(10)AsIntegerFork=1to10M(k)=12-kNextkx=6MsgBoxM(2+M(x))EndSub本例是For循环语句和数组的集合应用,一维数组M的下限为0、上限为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。例8:试分析如下程序运行结束之后变量K的值。PrivateSubFun()DimJAsIntegerJ=10DoJ=J+3LoopWhileJ19EndSub本例是Do…LoopWhile循环结构的应用,分析的重点在于条件式J19和其位置。当J19时执行循环体中的语句;另外需要注意的是条件式在Loop后,循环体至少要执行一次,它决定了是否回到循环体起始处。循环体中的语句为J=J+3,也就是说每执行一次循环J的值要加3。当执行两次循环体操作后J=16,仍然满足J19的条件,所以还要执行第三次循环;而当第三次循环结束后J=19,已经不满足J19的条件,所以循环终止。最终J的值为19。例9:试分析内层n循环的执行次数。Form=0To7Step3Forn=m-2Tom+2NextnNextm本例是For循环的嵌套,分析的重点在于内层循环变量n的初始值和终止值。无论m的值为多少,内层循环变量n的值都只有五个m-2、m-1、m、m+1和m+2,也就是说每执行一次m循环就要执行五次n循环。而m=0To7Step3,外层m循环要执行3次,所以内层n循环的次数为15。例10:试分析如下程序运行结束之后变量K的值。K=0ForI=1To3ForJ=1ToIK=K+JNextJNextI本例是For循环的嵌套,分析的重点在于内层J循环的终止值为I,由于外层循环变量I值的变化,使得内层J循环的次数是不固定。当I=1时,J=1To1,K=K+1=1;当I=2时,J=1To2,K=K+1+2=4;当I=3时,J=1To3,K=K+1+2+3=10。所以当程序运行结束之后K的值为10。(注意K值的累加过程)例11:试分析如下程序运行结束之后变量x的值。x=1y=1z=1Fork=1To3Ifj=1Thenx=x+y+zElseIfj=2Thenx=2*x+2*y+2*zElsex=3*x+3*y+3*zEndIfNextk本例是For循环结构和块If语句的应用集合,分析的重点在于块If的选择分支,分支一为当K=1时,x=x+y+z;分支二为当K=2时,x=2*x+2*y+2*z;分支三为当K=3时,x=3*x+3*y+3*z。与选择结构的例3相比较,本例中赋值语句右端的变化是在变量参与运算后才进行赋值的。循环共执行3次,当K=1时,x=1+1+1=3;当K=2时,x=2*3+2*1+2*1=10;当K=3时,x=3*10+3*1+3*1=36。所以当程序运行结束之后x的值为36。例12:窗体中有一名为Command1的命令按钮,其单击事件过程如下所示,试分析单击该命令按钮后消息框中的显示内容。PrivatesubCommand1_Click()Fori=1To4x=3Forj=1To3x=4Fork=1To2x=x+5NextkNextjNextiMsgBoxxEndSub本例是For循环的嵌套,分析的重点在于i循环中的赋值语句x=3和j循环中的赋值语句x=4。它们的位置决定了,只要进入i循环,那么x的值就为3;而进入j循环后,x又被重新赋值为4。所以最终的结果由以下语句决定:x=4Fork=1To2x=x+5Nextk当程序运行结束之后,x的值为14。例13:试分析如下程序运行结束之后变量k的值。Dimi,j,kAsIntegeri=1DoForj=1ToiStep2k=k+jNextji=i+2LoopUntili8本例是Do…LoopUntil循环结构和For循环的嵌套,分析的重点在于变量i值的变化过程,它即是For循环的终止值,又控制了Do…LoopUntil循环的条件。i值的变化在Do…LoopUntil循环中由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。例14:试分析如下程序运行结束之后消息框中显示的内容.Dimstr1,str2AsStringDimIAsIntegerstr1=”abcdef”Fori=1ToLen(str1)Step2str2=UCase(Mid(str1,i,1))+str2NextiMsgBoxstr2本例中使用了字符串函数Len()、Mid()和大小写转换函数Ucase()。由于字符串str1的值不发生变化,所以Len(str1)的值固定为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。例15:窗体中有一名为Command1的命令按钮,其单击事件过程如下所示,试分析当单击该命令按钮后消息框中显示的内容。PrivateSubCommand1_Click()Dima(10,10)Form=2To4Forn=4To5a(m,n)=m*nNextnNextmMsgBoxa(2,5)+a(3,4)+a(4,5)EndSub本例是For循环嵌套和二维数组的应用。For循环的作用在于为数组元素赋值a(m,n)=m*n,因此需要考虑的是循环过程中,数组元素a(2,5)、a(3,4)和a(4,5)是否已经赋值,由于m为2~4,n为4~5,三者都在范围内,所以a(2,5)=10、a(3,4)=12、a(4,5)=20,因此a(2,5)+a(3,4)+a(4,5)=42。当程序运行结束之后消息框中显示的内容为42。例16:计算要求:在如图9.5所示的“计算”窗体中有一名为Text1(关联标签为“请输入N值

1 / 47
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功