概述
学生基本信息维护里面所用到的知识点有查询类,更准确的说是组合查询。该知识点堪称机房收费系统三大难点之一。那么它的难到底难在哪里?下面我们来逐一进行分析。
流程图
通过上面两张图可以清晰的看到,查询难在哪里:
首先、我们需要进行判断查询是否为组合查询,如果为否,那么一切都变得简单了。
其次、我们需要在已经是组合查询的情况下,如何查询的问题,这里相对复杂,也正是本窗体的难点之处,我们需要先理清逻辑关系——至少需要我们填写一个组合关系。
最后、在前面都已经判断好的情况下还需要进行与或非的判断,它的选择不同将导致查询结果有差异。
看似简单的图形,但是它的内部有着严密的结构逻辑,每一步的判断都需要我们小心谨慎,把条件考虑充分。否则一个不完整的逻辑结构,将会使得程序无法运行。
重点代码
Private Sub cmdQuery_Click()
Dim StutxtSQL As String
Dim StuMsgtext As String
Dim Stumrc As ADODB.Recordset
StutxtSQL = "select*from student_info where"
'在student_Info这张表中获得整行记录。其中*表示整行记录,也可以换成你需要查询的具体记录。
If Trim(Combo1.Text) = "" Or Trim(Combo2.Text) = "" Or Trim(Text1.Text) = "" Then
MsgBox "请将选项内容填写完整!", vbOKOnly, "提示"
Exit Sub
Else
StutxtSQL = StutxtSQL & "" & field(Combo1.Text) & "" & Combo2.Text & "'" & Trim(Text1.Text) & "'"
If Combo7.Text <> "" Then
If Combo3.Text = "" Or Combo4.Text = "" Or Text2.Text = "" Then
MsgBox "请将第二行选项内容填写完整!", vbOKOnly, "提示"
Exit Sub
Else
StutxtSQL = StutxtSQL & "" & field(Combo7.Text) = "" Or field(Combo3.Text) & "" & Combo4.Text & "'" & Trim(Text2.Text) & "'"
If Combo8.Text <> "" Then
If Combo5.Text = "" Or Combo6.Text = "" Or Text3.Text = "" Then
MsgBox "请将第三行选项内容填写完整!", vbOKOnly, "提示"
Exit Sub
Else
StutxtSQL = StutxtSQL & "" & field(Combo8.Text) & "" & field(bombo5.Text) & "" & Trim(Combo6.Text) & "" & Trim(Text3.Text) & "'"
End If
End If
End If
End If
Set Stumrc = ExecuteSQL(StutxtSQL, StuMsgtext)
If Stumrc.EOF Then
MsgBox "无该数据,请重新填写!", vbInformation
Text1.SetFocus
Text1.Text = ""
myflexgrid.Clear
Exit Sub
Else
With myflexgrid
.Rows = 1
.CellAlignment = 4
.TextMatrix(0, 0) = "学号"
.TextMatrix(0, 1) = "姓名"
.TextMatrix(0, 2) = "卡号"
.TextMatrix(0, 3) = "金额"
.TextMatrix(0, 4) = "系别"
.TextMatrix(0, 5) = "年级"
.TextMatrix(0, 6) = "班级"
.TextMatrix(0, 7) = "性别"
.TextMatrix(0, 8) = "状态"
.TextMatrix(0, 9) = "备注"
.TextMatrix(0, 10) = "类型"
.TextMatrix(0, 11) = "日期"
.TextMatrix(0, 12) = "时间"
Do While Not Stumrc.EOF
.Rows = .Rows + 1
.CellAlignment = 4
.TextMatrix(.Rows - 1, 0) = Trim(Stumrc.Fields(1))
.TextMatrix(.Rows - 1, 1) = Trim(Stumrc.Fields(2))
.TextMatrix(.Rows - 1, 2) = Trim(Stumrc.Fields(0))
.TextMatrix(.Rows - 1, 3) = Trim(Stumrc.Fields(7))
.TextMatrix(.Rows - 1, 4) = Trim(Stumrc.Fields(4))
.TextMatrix(.Rows - 1, 5) = Trim(Stumrc.Fields(5))
.TextMatrix(.Rows - 1, 6) = Trim(Stumrc.Fields(6))
.TextMatrix(.Rows - 1, 7) = Trim(Stumrc.Fields(3))
.TextMatrix(.Rows - 1, 8) = Trim(Stumrc.Fields(10))
.TextMatrix(.Rows - 1, 9) = Trim(Stumrc.Fields(8))
.TextMatrix(.Rows - 1, 10) = Trim(Stumrc.Fields(14))
.TextMatrix(.Rows - 1, 11) = Trim(Stumrc.Fields(12))
.TextMatrix(.Rows - 1, 12) = Trim(Stumrc.Fields(13))
Stumrc.MoveNext
Loop
End With
End If
End If
End Sub
总结
其实在我们还不熟悉的情况下,做这样的系统还是很有挑战的。毕竟他有着严谨的逻辑结构,它不像一个简单的小程序。我们走过的每一步,都将是成长路上的美好见证。