国开《数据库基础与应用》第十一章 11-3-3:窗体中事件过程分析
11-3-3:窗体中事件过程分析
在上面介绍的数据库应用窗体中,共包含有7个命令按钮,在窗体视图状态下,当单击每个命令按钮时将自动完成相应的功能。窗体中的7个命令按钮,定义有7个单击事件的过程,同时还定义有一个窗体加载事件的过程。
(1)进入窗体加载事件过程的VBE窗口
在窗体的设计视图中,让打开的属性表窗口顶部的组合框选定的对象为“窗体”,如图4所示,再打开其下面的“事件”选项卡,单击“加载”后面的组合框按钮,从中选择“[事件过程]”,然后再单击其后的省略号按钮,打开事件代码生成器,即VBE窗口,如下图5所示。
在图5所示的代码生成器的编辑区内,给出了由用户编写的针对此数据库应用窗体的所有事件代码。其中加载事件代码被自动排列到了最后位置。在所有事件代码外的顶部位置,由用户给出了在该窗体的所有事件过程中都可以使用的公用变量的定义。
(2)整个窗体中公用变量的定义
在这里给出了4个变量的定义:
Dim conn As ADODB.Connection
Dim strSQL As String
Dim rs As New ADODB.Recordset
Dim Num As Integer
(3)窗体加载事件过程的定义
Private Sub Form_Load() '窗体加载事件过程
Set conn = CurrentProject.Connection
strSQL = "select 雇员ID,姓名,性别,年龄,职称,工资 from 雇员 "
rs.Open strSQL, conn
rs.MoveFirst
Do While Not rs.EOF
Num = Num + 1
rs.MoveNext
Loop
rs.MoveFirst
End Sub
(4)求雇员表中工资字段的最大值
Private Sub Cmd1_Click() '求工资的最大值
Dim MaxValue As Double
Dim i As Integer
rs.MoveFirst
For i = 1 To Num Step 1
If rs(5) > MaxValue Then MaxValue = rs(5)
rs.MoveNext
Next i
Lab1.Caption = MaxValue
End Sub
rs(5)表示rs记录集中当前记录内的序号为5的字段值,即工资字段的值,各字段序号从前向后依次从0开始顺序编号,工资是第6个字段,所有序号为5。
(5)按输入的职称查询人数
Private Sub Cmd6_Click() '求出用户在Text2文本框中输入的一种职称的人数
Dim nn As Integer
Dim i As Integer
rs.MoveFirst
For i = 1 To Num Step 1
If rs(4) = Text2 Then nn = nn + 1
rs.MoveNext
Next i
Lab9.Caption = nn
End Sub
Text2是在窗体设计时用户给输入职称的文本框控件所起的名称。Lab9是Text2文本框下面位置的标签控件,是在窗体设计时用户给该标签控件所起的名称。
(6)其他单击事件过程
窗体中其他命令按钮单击事件的过程如下所示。
Private Sub Cmd2_Click() '求工资的最小值
Dim MinValue As Double: MinValue = 80000
Dim i As Integer
rs.MoveFirst
For i = 1 To Num Step 1
If rs(5) < MinValue Then MinValue = rs(5)
rs.MoveNext
Next i
Lab2.Caption = MinValue
End Sub
Private Sub Cmd3_Click() '求工资的平均值
Dim MeanValue As Double
Dim i As Integer
rs.MoveFirst
For i = 1 To Num Step 1
MeanValue = MeanValue + rs(5)
rs.MoveNext
Next i
Lab3.Caption = Int(MeanValue / Num * 100) / 100
End Sub
Private Sub Cmd4_Click() '求出雇员人数
Lab4.Caption = Num
End Sub
Private Sub Cmd5_Click() '求出用户在Text1文本框中输入的一种性别的人数
Dim nn As Integer
Dim i As Integer
rs.MoveFirst
For i = 1 To Num Step 1
If rs(2) = Text1 Then nn = nn + 1
rs.MoveNext
Next i
Lab8.Caption = nn
End Sub
Private Sub Cmd7_Click( '按用户在Text3文本框中输入的雇员姓名查找并显示记录
Dim i As Integer
rs.MoveFirst
For i = 1 To Num Step 1
If rs(1) = Text3 Then Exit For
rs.MoveNext
Next i
If Not rs.EOF Then
Lab10.Caption = rs(0): Lab11.Caption = rs(1): Lab12.Caption = rs(2)
Lab13.Caption = rs(3): Lab14.Caption = rs(4): Lab15.Caption = rs(5)
Else
Lab10.Caption = "": Lab11.Caption = "": Lab12.Caption = "男"
Lab13.Caption = "": Lab14.Caption = "": Lab15.Caption = ""
End If
End Sub