1. 程式人生 > >【機房收費系統】之學生基本資訊維護

【機房收費系統】之學生基本資訊維護

學生基本資訊維護主要包括兩大功能查詢和修改。這裡的查詢比之前做的簡單查詢稍稍複雜了點,此處要用到組合查詢。要成功實現查詢這一功能,首先要找到突破點,關鍵點就是組合關係。如果沒有選擇組合關係,便是一般的簡單查詢,反之,則是組合查詢。在組合查詢中,很重要的一點是將combobox中的中文字轉換成英文。這裡,我用到的是函式的轉換——FiledName

此實現此功能的重要程式碼如下:

'查詢滿足條件的內容
    txtsql = "select * from student_info where "
'查詢同時滿足選擇條件、輸入內容的資訊
    txtsql = txtsql & FiledName(comboFiledName1.Text) & Trim(comboOperate1.Text) & " " & Trim(txtContent1.Text) & " "

    '如果第一個組合關係不為空
    If Trim(comboRelation1.Text <> "") Then
        If Trim(comboFiledName2.Text) = "" Or Trim(comboOperate2.Text) = "" Or Trim(txtContent2.Text) = "" Then
            MsgBox "你選擇了第一個組合關係,請輸入第二行資料之後再查詢!", vbOKOnly, "提示"
            Exit Sub
        Else

            txtsql = txtsql & FiledName(comboRelation1.Text) & " " & FiledName(comboFiledName2.Text) & Trim(comboOperate2.Text) & " " & Trim(txtContent2.Text) & " "

        '如果第二個組合關係不為空
        If Trim(comboRelation2 <> "") Then
            If Trim(comboFiledName3.Text) = "" Or Trim(comboOperate3.Text) = "" Or Trim(txtContent3.Text) = "" Then
                MsgBox "你選擇了第二個組合關係,請輸入第三行資料之後再查詢!", vbOKOnly, "提示"
                Exit Sub
            Else

                txtsql = txtsql & FiledName(comboRelation2.Text) & " " & FiledName(comboFiledName3.Text) & Trim(comboOperate3.Text) & " " & Trim(txtContent3.Text) & " "

            End If
        End If
        End If
    End If

    '執行查詢語句
    Set mrc = ExecuteSQL(txtsql, msgtext)

Public Function FiledName(strFliedName As String) As String
    
    Select Case strFliedName
    
        Case "卡號"
            FiledName = "cardno"
            
        Case "學號"
            FiledName = "studentno"
            
        Case "姓名"
            FiledName = "studentname"
            
            Case "性別"
            FiledName = "sex"
            
        Case "系別"
            FiledName = "depart"
            
            Case "年級"
            FiledName = "grade"
            
        Case "班級"
            FiledName = "class"
            
        Case "與"
            FiledName = "and "
            
        Case "或"
            FiledName = "or"
            
    End Select
    
End Function

第二大功能是修改。首先,單擊修改按鈕會自動跳到“修改學生資訊”窗體,此時要明白修改的內容是查詢到的其中一條記錄進行修改,因此要對修改的記錄進行選擇,並將將該條記錄顯示在“修改學生資訊”的窗體上。其次就是實現“修改學生資訊”窗體中的兩大功能:確定修改和取消修改。

思路理清了,就是程式碼的編寫過程了。以下是點選修改按鈕的重要程式碼:

'單擊時選擇整行
    myFlexGrid.SelectionMode = flexSelectionByRow
    
    '在當前單元的周圍畫一個焦點框
    myFlexGrid.FocusRect = flexFocusNone
    
    '該值決定了所選定的單元是否突出顯示
    myFlexGrid.HighLight = flexHighlightWithFocus
        
    With myFlexGrid
        If .RowSel = 0 Then
            MsgBox "請選擇要修改的資料!", vbOKOnly, "提示"
            Exit Sub
        Else
            If .RowSel > 0 Then
'                frmBasicInfoMaintain.Hide
                
            TmpCardno = myFlexGrid.TextMatrix(myFlexGrid.RowSel, 0)
            frmEditStudent.txtSID = myFlexGrid.TextMatrix(myFlexGrid.RowSel, 1)
            frmEditStudent.txtName = myFlexGrid.TextMatrix(myFlexGrid.RowSel, 2)
            frmEditStudent.comboSex = myFlexGrid.TextMatrix(myFlexGrid.RowSel, 3)
            frmEditStudent.txtDept = myFlexGrid.TextMatrix(myFlexGrid.RowSel, 4)
            frmEditStudent.txtGrade = myFlexGrid.TextMatrix(myFlexGrid.RowSel, 5)
            frmEditStudent.txtClass = myFlexGrid.TextMatrix(myFlexGrid.RowSel, 6)
            frmEditStudent.txtCardNo = myFlexGrid.TextMatrix(myFlexGrid.RowSel, 0)
            frmEditStudent.txtCash = myFlexGrid.TextMatrix(myFlexGrid.RowSel, 7)
            frmEditStudent.txtStatus = myFlexGrid.TextMatrix(myFlexGrid.RowSel, 9)
            frmEditStudent.txtExplain = myFlexGrid.TextMatrix(myFlexGrid.RowSel, 8)
            frmEditStudent.comboType = myFlexGrid.TextMatrix(myFlexGrid.RowSel, 12)
            frmEditStudent.Show
                
            End If
        End If
    End With

不得不說SQL語句的功能很強大呀!在這個窗體中,我也學會了很多。剛開始,還很迷茫,加上給的系統實現的功能並不完美。不過還好,身邊有這麼多優秀的小夥伴,多多交流碰撞,思路一下子就打開了。“站在巨人的肩膀上!”哈哈