机房收费系统(七)——学生基本信息维护

概述

学生基本信息维护里面所用到的知识点有查询类,更准确的说是组合查询。该知识点堪称机房收费系统三大难点之一。那么它的难到底难在哪里?下面我们来逐一进行分析。

流程图

这里写图片描述
这里写图片描述
通过上面两张图可以清晰的看到,查询难在哪里:
首先、我们需要进行判断查询是否为组合查询,如果为否,那么一切都变得简单了。
其次、我们需要在已经是组合查询的情况下,如何查询的问题,这里相对复杂,也正是本窗体的难点之处,我们需要先理清逻辑关系——至少需要我们填写一个组合关系。
最后、在前面都已经判断好的情况下还需要进行与或非的判断,它的选择不同将导致查询结果有差异。
看似简单的图形,但是它的内部有着严密的结构逻辑,每一步的判断都需要我们小心谨慎,把条件考虑充分。否则一个不完整的逻辑结构,将会使得程序无法运行。

重点代码

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

总结

其实在我们还不熟悉的情况下,做这样的系统还是很有挑战的。毕竟他有着严谨的逻辑结构,它不像一个简单的小程序。我们走过的每一步,都将是成长路上的美好见证。

猜你喜欢

转载自blog.csdn.net/whc888666/article/details/80628235