欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

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

程序员文章站 2022-05-03 16:17:13
...

概述

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

流程图

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

重点代码

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

总结

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