1. 程式人生 > >機房——操作員——學生基本資訊維護

機房——操作員——學生基本資訊維護

學生基本資訊維護這個窗體,主要實現兩項功能,其一是組合查詢功能的實現,其二便是對查詢出的資訊可以選擇並進行修改,組合查詢窗體在上篇部落格已經分享過了,小夥伴可以檢視上篇部落格,今天主要分享的是,如何實現將查詢到的資訊,能夠進行修改這個功能。
我們可以將這個功能在分解下,分解成先能選中一行資料,在將資料顯示到另一個窗體中。這樣分開來進行,將問題簡單化,一點一點來實現。
下圖為對查詢結果進行選擇。
在這裡插入圖片描述
從上圖我們可以看出,當選中某行查詢資料後,改行將變成藍色背景。如何將選中資料行變成藍色字型呢?這就要在MSHFlexGrid1控制元件上“動手腳”了,處理問題要從根上解決,我用的是最簡單直接打的方法:右擊MSHFlexGrid1控制元件,選擇屬性,對於突出顯示,焦點區域,選擇模式這幾項分別選擇2,0,1的屬相即可,其他屬性不用動
如圖
在這裡插入圖片描述


好了,設定完屬性後,便可以進行選擇了,接下來就是對選擇的資料行進行賦值修改了。
還是分成兩部分,一是實現賦值功能,二是修改學生資訊,也就是說,將選擇的資料行賦值到另一個新的窗體上, 這個窗體,我們命名為“學生資訊”。一開始我的想法是,在學生資訊窗體新增程式碼,進行賦值,“修改”命令按鈕,只是單純的傳遞命令,可是沒有賦值成功,也不報錯,也不顯示資訊,幾番周折後,發現問題原來是處在了命令按鈕上,所有的賦值程式碼是在修改按鈕上新增的。賦值在點選“修改”按鈕的那一刻便開始了,而“學生資訊”窗體只是顯示資訊
部分程式碼展示

Option Explicit
'定義臨時卡號
Public TmpCardno As String

Private Sub cmdAlter_Click()
    TmpCardno = myFlexgrid.TextMatrix(myFlexgrid.RowSel, 0)                 '臨時卡號便是選中資料行的卡號
    frmstuNews.txtStudentNo = myFlexgrid.TextMatrix(myFlexgrid.RowSel, 1)   '學號賦值
    frmstuNews.txtClass = myFlexgrid.TextMatrix(myFlexgrid.RowSel, 6)       '班級賦值
    frmstuNews.txtName = myFlexgrid.TextMatrix(myFlexgrid.RowSel, 2)
    frmstuNews.ComboSex = myFlexgrid.TextMatrix(myFlexgrid.RowSel, 3)
    frmstuNews.txtDept = myFlexgrid.TextMatrix(myFlexgrid.RowSel, 4)
    frmstuNews.txtGrade = myFlexgrid.TextMatrix(myFlexgrid.RowSel, 5)
    frmstuNews.txtCardNo = myFlexgrid.TextMatrix(myFlexgrid.RowSel, 0)
    frmstuNews.txtBalance = myFlexgrid.TextMatrix(myFlexgrid.RowSel, 7)
    frmstuNews.ComboStatus = myFlexgrid.TextMatrix(myFlexgrid.RowSel, 9)
    frmstuNews.txtExplain = myFlexgrid.TextMatrix(myFlexgrid.RowSel, 8)
    frmstuNews.ComboType = myFlexgrid.TextMatrix(myFlexgrid.RowSel, 10)

    frmstuNews.Show
    Unload Me
   
    Exit Sub
        
     frmstuNews.Show     '完成賦值後,開啟學生資訊窗體,載入資訊
End Sub

從程式碼可以看出,要先定義一個臨時卡號,用於儲存選中的資料行
下圖為賦值成功圖
在這裡插入圖片描述

實現了賦值的功能後,就下來便是修改學生資訊的功能,這個功能,相對簡單,我們在做學生的時候也有接觸,就不再多贅述,直接上程式碼
首先,定義一個臨時卡號,用於和上個窗體建立連線

'定義臨時卡號
Public TmpCardno As String

確定修改按鈕部分

   txtsql = "select * from student_Info where cardno='" & Trim(txtCardNo) & "'"
        Set mrc = ExecuteSQL(txtsql, msgtext)
        If Not (mrc.BOF Or mrc.EOF) Then 
            mrc.Fields(0) = Trim(txtCardNo.Text)
            mrc.Fields(1) = Trim(txtStudentNo.Text)
            mrc.Fields(2) = Trim(txtName.Text)
            mrc.Fields(3) = Trim(ComboSex.Text)
            mrc.Fields(4) = Trim(txtDept.Text)
            mrc.Fields(5) = Trim(txtGrade.Text)
            mrc.Fields(6) = Trim(txtClass.Text)
            mrc.Fields(7) = Trim(txtBalance.Text)
            mrc.Fields(8) = Trim(txtExplain.Text)
            mrc.Fields(9) = Trim(frmLogin.txtUserID.Text)
            mrc.Fields(10) = Trim(ComboStatus.Text)
            mrc.Fields(11) = "未結賬"
            mrc.Fields(12) = Date
            mrc.Fields(13) = Time
            mrc.Fields(14) = Trim(ComboType.Text)
            mrc.Update
                'MsgBox "修改資訊成功", 48, "提示"
            mrc.Close         
      Unload Me
        frmBasicInfoMaintain.Show
        '修改資訊後,重新載入到基本資訊維護窗體的查詢結果中

載入窗體部分

txtsql = "select * from student_Info where cardno='" & Trim(txtCardNo) & "'"
Set mrc = ExecuteSQL(txtsql, msgtext)
If mrc.EOF Then
    MsgBox "載入資訊不存在,請確認後重新操作!", , "溫馨提示"
Else
    txtStudentNo.Text = mrc!studentno
    txtName.Text = mrc!studentname
    ComboSex.Text = mrc!sex
    txtDept.Text = mrc!department
    txtGrade.Text = mrc!grade
    txtClass.Text = mrc!Class
    txtCardNo.Text = mrc!cardno
    txtBalance.Text = mrc!cash
    ComboStatus.Text = mrc!Status
    txtExplain.Text = mrc!explain
    ComboType.Text = mrc!Type
    mrc.Close

後期陸續更新,歡迎大家評論區留言!