在Access的模块中实现编程,有其操作规则,即程序以过程形成在模块中,因此还要掌握它的操作特点。
1.顺序结构程序
顺序程序结构是按照命令文件中编排的顺序执行,也称为直接程序设计。一般作为一个被调用的子程序或完成一个简单的过程。
【例10.1】设计一个在屏幕上显示一个简单菜单的程序(也称为一个直接程序)。模块名为“例题1顺序程序”。
MsgBox("人事管理软件为您服务")
MsgBox("1—查询2—计算3—打印4—打印")
MsgBox("请输入选择1~4")
图10-24所示为例10.1的代码。
图10-24 【例10.1】顺序程序示例
该程序的编辑与运行过程如下:
(1)在“模块”对象下,单击数据库窗口工具栏上的“新建”按钮,进入VBE窗口,在代码窗口输入图10-24所示的语句。
注意:使用Sub()⋯End Sub将该程序定义为一个过程,过程名为“顺序程序”,单击“保存”按钮,在系统提示下,定义模块名为“顺序程序”,以便以后使用。
(2)单击“运行”按钮,则可在屏幕上看到显示结果。
2.分支结构程序设计
分支结构程序的实现是靠分支语句来实现的。
(1)If⋯End If语句。
格式:
If<条件表达式>Then
<语句串1>
[Else<语句串2>]
End If
功能:使命令串按条件执行,If⋯End If必须配对使用。
【例10.2】编制一个根据输入的成绩给出“及格”与“不及格”的提示。模块名为“例题2及格与不及格”。
操作步骤如下:
①在“模块”对象下,单击“新建”按钮进入VBE窗口,在代码窗口中输入图10-25所示的语句。
图10-25 程序编辑状态
注意:使用Sub()⋯End Sub将该程序定义为一个过程,过程名为STUMARK,单击“保存”按钮,在系统提示下,定义模块名为“例题2及格与不及格”,以便以后使用。
②单击“运行”按钮,则可在屏幕上看到提示信息,当输入90(见图10-26(a))并按【Enter】键后,屏幕显示如图10-26(b)所示。其他输入与输出显示如图10-27、图10-28所示。
该程序的代码编制方法有如下3种。
·方法1:
Public Sub代码编制方法1()
Dim MARK As Integer
MARK =Val(InputBox("INPUT CJ"))
If MARK >=60 And MARK <90 Then
MsgBox ("及格")
End If
If MARK >=90 Then
MsgBox ("优秀")
End If
If MARK <60 Then
MsgBox ("不及格")
End If
End Sub
·方法2:
Sub STUMARK()
Dim MARK As Integer
MARK =Val(InputBox("INPUT CJ"))
If MARK >=60 And MARK <90 Then
MsgBox ("及格")
Else
If MARK >=90 Then
MsgBox ("优秀")
Else
If MARK <60 Then
MsgBox ("不及格")
End If
End If
End If
End Sub
·方法3:
Public Sub代码编制方法3()
Dim MARK As Integer
MARK =Val(InputBox("INPUT CJ"))
Select Case MARK
Case 60 To 89
MsgBox ("及格")
Case Is >=90
MsgBox ("优秀")
Case Is <60
MsgBox ("不及格")
End Select
End Sub
图10-26 程序运行提示信息与输出显示(1)
图10-27 程序运行提示信息与输出显示(2)
图10-28 程序运行提示信息与输出显示(3)
(2)Select Case⋯End Select语句。格式:
Select Case <表达式>
Case <条件表达式1>
(表达式的值与条件表达式1的值相等时执行的<语句串1>)
[ Case <条件表达式2>To <条件表达式3>
(表达式的值介于<条件表达式2>和<条件表达式3>之间时执行<语句串2>)
[Case Is 关系运算符<条件表达式4>
(表达式的值与<条件表达式4>的值之间满足关系运算为真时执行<语句串3>)
[Case Else]
(上面的情况均不符合时执行<语句串4>)
End Select
功能:结构式Select Case⋯End Select语句。当判断的条件很多时,虽然也可以用If⋯End If语句来实现,但显得很繁琐,容易出错。Access便设计了该多分支判断语句。
说明:
①程序每进入一次Select Case⋯End Select,最多执行一条路线,若所有条件都不满足,又使用了Case Else短语,则去执行Case Else之后的语句串,否则空走一趟,执行End Select之后的语句。如果有几个条件同时成立,则只能执行第一个满足条件的Case下的语句串。这一点要特别注意。
②)Select Case⋯End Select必须配对使用。参见例10.2方法3。
【例10.3】编制如下函数,模块名为“例题3函数”。
该程序的代码如图10-29所示。
图10-29 例10.3过程代码
3.循环程序设计及有关语句
循环实质上是指按照预先给定的条件去重复执行某一段具有特定功能的程序。一个完整的有意义的循环应由以下几部分组成:
(1)确定一个循环变量。
(2)循环变量在循环体前赋予初值(恢复部分)。
(3)确定循环体,即反复执行的部分。
(4)确定循环的次数,循环变量在下一个循环前要被修改步长,避免死循环。
一个正确循环过程的示意流程如图10-30所示。
图10-30 正常的循环过程示意流程图
掌握了以上方法,编出的程序就会逻辑性强,而计算机的主要优点之一就是它可以重复同一过程,而且既快又无差错。
(1)Do⋯Loop循环语句。
①Do While⋯Loop语句。
格式:
Do While 条件表达式
⋯ ′循环体
Exit Do ′退出循环体
⋯ ′循环体的结束语句序列
Loop ′循环结束
⋯
功能:当条件为True时,重复执行一个语句块中的命令。
说明:条件表达式为可选参数。条件表达式可以为数值表达式或字符串表达式,其值为True或False。如果条件表达式为Null,则返回False。
②)Do Until⋯Loop语句。
格式:
Do Until 条件表达式
⋯ ′循环体
Exit Do ′退出循环体
⋯ ′循环体的结束语句序列
Loop ′循环结束
⋯
功能:直到条件变为True时重复执行一个语句块中的命令。
说明:基本同于Do While⋯Loop语句的说明。
注意:
①在Do⋯Lop 中可以在任何位置放置任意个数的Exit Do语句,随时跳出Do⋯Loop循环。Exit Do 通常用于条件判断之后,如If⋯Then,在这种情况下,Exit Do 语句将控制权转移到紧接在Loop命令之后的语句。
②如果Exit Do使用在嵌套的Do⋯Loop语句中,则Exit Do 会将控制权转移到Exit Do 所在位置的外层循环。
【例10.4】使用Do⋯Loop循环语句实现例10.2的功能。过程名为“循环举例”,实现该程序的反复运行,直到提示输入的成绩大于100,则输出“退出”,并退出循环,结束程序运行,回到程序编辑窗口。
·方法1,使用Do While⋯Loop 实现循环。
Public Sub 循环举例()
Dim MARK As Integer
MARK =1
Do While MARK <=100
MARK =Val(InputBox("INPUT CJ"))(www.xing528.com)
If MARK >=60 And MARK <90 Then
MsgBox ("及格")
End If
If MARK >=90 And MARK <=100 Then
MsgBox ("优秀")
End If
If MARK <60 Then
MsgBox ("不及格")
End If
If MARK >100 Then
MsgBox ("退出")
Exit Do
End If
Loop
End Sub
·方法2,使用Do Until⋯Loop实现循环。
Public Sub 循环举例1()
Dim MARK As Integer
MARK =1
Do Until MARK >100
MARK =Val(InputBox("INPUT CJ"))
If MARK >=60 And MARK <90 Then
MsgBox ("及格")
End If
If MARK >=90 And MARK <=100 Then
MsgBox ("优秀")
End If
If MARK <60 Then
MsgBox ("不及格")
End If
If MARK >100 Then
MsgBox ("退出")
Exit Do
End If
Loop
End Sub
(2)While⋯Wend 循环语句。
格式:
While 条件表达式
⋯ ′循环体
Wend
功能:只要指定的条件为True,则会重复执行一系列的语句。
说明:如果条件表达式为True,则执行循环体,即While⋯Wend之间的所有语句,然后再回到While语句,并再一次检查条件表达时,如果条件表达式还是为True,则重复执行。如果不为True,则程序会Wend语句之后的语句继续执行。
举例:同于例10.4,使用While⋯Wend实现循环。
Public Sub 循环举例3()
Dim MARK As Integer
MARK =1
While MARK <=100
MARK =1
MARK =Val(InputBox("INPUT CJ"))
If MARK >=60 And MARK <90 Then
MsgBox ("及格")
End If
If MARK >=90 And MARK <=100 Then
MsgBox ("优秀")
End If
If MARK <60 Then
MsgBox ("不及格")
End If
If MARK >100 Then
MsgBox ("退出")
End If
Wend
End Sub
注意:While⋯Wend 循环也可以是多层的嵌套结构。每个Wend匹配最近的While语句。
(3)For⋯Next循环语句。
格式:
For <循环变量的初值>To<循环变量的终值>Step <每次循环后循环变量的增值>(默认为1)
⋯ ′循环体
Next <循环变量>
功能:对问题的循环次数,若是已知的,可使用该语句来实现。
【例10.5】计算1+2+3+⋯100的值并输出。
程序代码如下:
Public Sub 计算()
a =0
For b =1 To 100 Step 1
a =a +b
Next
MsgBox (a)
End Sub
注意:以上各种格式的循环语句均可解决实际问题,用户可根据不同的应用问题自行选择使用。
4.过程调用与参数传递
(1)过程调用的基本概念:将反复执行的或具有独立功能的程序编成一个子过程,使主过程程序与这些子过程有机地(并列调用或嵌套调用)联系起来,使程序结构清晰,便于阅读、修改及交流。过程调用是程序编制中不可少的技巧。
(2)关于过程调用中使用的几条命令。
①定义一个子过程。
格式:
[Public|Private][Static]Sub子过程名(<接受参数>)[As数据类型]
<子过程语句行>⋯
End Sub
功能:建立一个子过程并接收参数。
说明:
·使用Public可以使该子过程用到的变量通用于所有模块中的所有其他过程。
·使用Private可以使该子过程用到的变量通用于同一模块中的其他过程。
·使用Static只要含有这个过程的模块是打开的,所有该过程用到的变量均被保留。
②调用一个子过程。
格式:
[Call]子过程名(<发送参数>)
功能:调用子过程并发送参数。
(3)函数过程的定义。
格式:
[Public|Private][Static]Function函数过程名([<接受参数>])[As数据类型]
<函数过程语句行>
End Function
功能:建立一个函数过程并接收参数。
(4)函数过程的调用。
格式:
函数过程名([<发送参数>])
功能:调用函数过程并发送参数。
【例10.6】使用过程调用计算N!=N*(N-1)!(N>0),模块命名为“例题4阶乘计算”。
操作步骤如下:
①在“模块”对象下,单击数据库窗口工具栏上的“新建”按钮进入VBE窗口,在代码窗口输入阶乘主过程与阶乘子过程代码,如图10-31所示。
图10-31 过程调用程序代码
注意:使用Sub()⋯End Sub将子过程命名为“阶乘子过程”。
②将主过程与子过程放在一个模块中即可。保存在一个名为“例题4阶乘计算”的模块中,以便以后使用。
③单击“运行”按钮,则可在屏幕上看到结果。
④如果运行时有错,还可借助“调试”菜单下的“逐语句”命令运行,即进行逐行命令的运行,并观察中间结果与变量的变化,找出问题,修改源代码,直至正确为止。
【例10.7】设计一个用户登录窗体,输入用户密码,若密码正确,则显示“欢迎使用”,若密码错误,则显示“错!不能使用”。
注意:该例题的模块代码为类模块代码,在数据库对象模块列表中看不到,可通过“设置密码”窗体中的“输入密码文本框”或“确认”属性下的“事件过程”进入模块编辑窗口,并在工程资源管理器的类对象文件夹中查看。
操作步骤如下:
①设计一个窗体,在设计视图中,设置窗体名为“设置密码窗体”,标题为“用户登录”。
②在该窗体标题下面,首先设计一个标签,标题为“输入密码”。
③其次,设计一个文本框,待用户输入密码,右击该文本框,弹出快捷菜单,选择“属性”命令,在该属性对话框中,可按照图10-32所示进行设置,命名为userpassword,输入掩码属性为“密码”。
图10-32 文本框属性设置
④再次,设置一个命令按钮,右击该命令按钮,在弹出的快捷菜单中选择“属性”命令,在该属性对话框中,可按照图10-33所示进行设置,命名为ok,标题为“确认”。
图10-33 命令按钮属性设置
⑤最后设计相关事件代码。在命令按钮属性对话框,如图10-33所示,单击第一个事件过程的“⋯”标记,进入模块编辑状态,图10-34所示为模块编辑窗口。
图10-34 进入了模块编辑窗口
⑥在该模块中系统自动生成了名为ok_Click的过程与其中一些处理;同时生成了名为userpassw rd_beforeupdate的过程框架,用户在Sub userpassword_beforeupdate与End Sub之间添加上对“密码”过程的处理即可,如图10-35所示。
⑦将模块保存后,退到数据库窗口,由“设置密码”窗体直接启动即可,如图10-35至图10-37所示。
图10-35 启动窗体
图10-36 密码正确对话框
图10-37 密码错误对话框
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。