【正文】
ate Sub Command2_Click() Unload MeEnd Sub3.3.5 瀏覽學(xué)生信息窗體(frmstu)在工程中添加一個(gè)窗體,這里將使用frmstu窗體,來(lái)實(shí)現(xiàn)瀏覽學(xué)生信息的功能, 瀏覽學(xué)生信息窗體在該窗體中,用戶(hù)可以查看/修改學(xué)生的信息,還可以添加/刪除學(xué)生信息,所以用一個(gè)Treeview和一個(gè)Listview分別顯示班級(jí)列表和該班級(jí)下面的學(xué)生列表,用Image和PictureBox來(lái)調(diào)整控件的大小。 對(duì)象屬性設(shè)置FormNameFrmstuCaption學(xué)生檔案管理BorderStyle2SizableMDIChildTrueWindowState2MaximizedTreeviewStyletvwTreelinesPlusMinusPictureTextListviewFullRowSelectTrueGridLinesTrueMultiSelectFalseToolTipText雙擊顯示詳細(xì)資料ImageNameimgSplitPictureboxNameSliptBar FrmStu中部分控件的屬性當(dāng)窗體啟動(dòng)時(shí),需要在Treeview中加載班級(jí)列表,并初始化Listview中的標(biāo)題。Private Sub Form_Load() Call TreeviewLoad Dim clmX As ColumnHeader Set clmX = (, , 學(xué) 號(hào), / 7) ……End Sub在Form_Load事件中調(diào)用了TreeviewLoad函數(shù),由于篇幅省略該函數(shù)的代碼,具體實(shí)現(xiàn)見(jiàn)源程序。當(dāng)窗體大小發(fā)生變化時(shí),調(diào)用Form_Resize,調(diào)整Frmstu中控件的大小。Private Sub Form_Resize()If WindowState 1 Then If 3000 Then = 3000 If 3000 Then = 3000 SizeControls End If = (0).Width = 5000End SubSub SizeControls(X As Single) On Error Resume Next 39。設(shè)置 Width 屬性 If X 1500 Then X = 1500 If X ( 1500) Then X = 1500 = X = X = X + 50 = ( + 100) = 50 = = = = End Sub單擊Treeview中的班級(jí)號(hào)碼則調(diào)用TreeView_NodeClick事件和ListviewLoad事件在Listview中顯示該班級(jí)下面學(xué)生的信息列表。Private Sub TreeView_NodeClick(ByVal Node As )39。正在導(dǎo)入數(shù)據(jù),提示用戶(hù)等待 = 11If = classid Then 39。開(kāi)始在ListView中顯示數(shù)據(jù) classid = Left(, 6) Call ListviewLoad(classid)ElseIf = S Then Call SqlListview(SqlSearch)Else End IfEnd SubPublic Sub ListviewLoad(ByVal classid As String)Dim Listit As ListItem = lvwManual = 3Dim ef As New classid = Left(classid, 6)sqlstr = select * from StuInfo where SID like 39。 amp。 classid amp。 __39。 order by SID sqlstr, con, 1, 1 Do While Not Set Listit = (, , (SID)) (1) = (SName) (2) = (SGender) (3) = (SMinzu) (4) = (SZhengzhi) (5) = (SDormitory) (6) = (SAddress) Loop: Set ef = NothingEnd Sub在顯示該班級(jí)下面所有學(xué)生信息的同時(shí),用戶(hù)可以對(duì)記錄進(jìn)行管理:添加新記錄、編輯或者刪除當(dāng)前記錄,為此在Listview中創(chuàng)建右鍵菜單,用來(lái)對(duì)記錄進(jìn)行操作。在本系統(tǒng)中,在系統(tǒng)默認(rèn)情況下,班級(jí)編號(hào)作為學(xué)號(hào)的前面六位。為了體現(xiàn)這一關(guān)系,需要將班級(jí)編號(hào)賦給顯示學(xué)號(hào)的文本框。“添加”子菜單的Click事件的設(shè)計(jì)思路:用戶(hù)單擊“添加”子菜單時(shí),調(diào)用frmmain中的“添加學(xué)生信息”子菜單顯示FrmAddStu窗體,同時(shí)將Command1的Caption屬性設(shè)置為“確定(amp。O)”。Private Sub pop3_Click() 39。添加學(xué)生資料 Call End SubPublic Sub AddStu()Call (00000000)End Sub修改學(xué)生資料的Click事件的設(shè)計(jì)思路和添加學(xué)生資料的設(shè)計(jì)思路類(lèi)似,但是由于只是對(duì)記錄進(jìn)行修改,不需要調(diào)用AddNew操作,只要對(duì)數(shù)據(jù)進(jìn)行Update操作即可。Private Sub pop4_Click() 39。修改學(xué)生資料 Call End SubPublic Sub ModifyStu()39。顯示窗口Dim EditNum As StringIf Then EditNum = CStr() Call (EditNum)Else Exit SubEnd IfEnd Sub刪除學(xué)生資料的設(shè)計(jì)思路:在刪除記錄之前彈出詢(xún)問(wèn)框,確認(rèn)用戶(hù)是否真的要?jiǎng)h除當(dāng)前記錄,如果用戶(hù)選擇了“是”,則刪除該條記錄,否則就不執(zhí)行任何操作。在刪除記錄過(guò)程中,使用學(xué)生的學(xué)號(hào)作為關(guān)鍵字,調(diào)用Execute方法來(lái)刪除當(dāng)前記錄。在刪除了當(dāng)前記錄以后,需要重新移動(dòng)當(dāng)前記錄;由于改變了當(dāng)前記錄集的內(nèi)容,所以需要調(diào)用ListviewLoad子過(guò)程來(lái)刷新Listview中的內(nèi)容。Private Sub pop5_Click() 39。刪除學(xué)生資料 Call End SubPublic Sub DelStu()If Then If MsgBox(確定要?jiǎng)h除學(xué)號(hào)為 amp。 amp。 的全部資料嗎!, vbYesNo + 32 + vbDefaultButton2) = vbYes Then sqlstr = delete from StuInfo where SID=39。 amp。 amp。 39。 sqlstr Call ListviewLoad(classid) End IfEnd IfEnd Sub學(xué)生信息包括了學(xué)號(hào)、姓名、出生日期、性別、家庭住址、聯(lián)系電話(huà)等內(nèi)容。在Listview中列出了各學(xué)籍信息的學(xué)號(hào)和姓名以供用戶(hù)進(jìn)行導(dǎo)航,但是在實(shí)際管理中,還需要顯示出某一條學(xué)生信息的詳細(xì)列表。為此,設(shè)計(jì)詳細(xì)信息框,來(lái)羅列用戶(hù)的各種詳細(xì)信息。當(dāng)用戶(hù)單擊“顯示該生詳細(xì)資料”子菜單時(shí),顯示frmstuinfo窗體(),并以學(xué)生學(xué)號(hào)為關(guān)鍵字,將該學(xué)生的全部資料賦值給frmstuinfo中的對(duì)應(yīng)文本框。 學(xué)生詳細(xì)信息Private Sub pop1_Click() 39。顯示詳細(xì)資料 Call End SubPublic Sub ListView_DblClick()On Error Resume NextIf Then SelectNum = If SelectNum Then 39。顯示出該生全部信息表單 Call (SelectNum) Else Exit Sub End IfEnd IfEnd Sub在frmstuinfo的代碼窗口中添入以下代碼用來(lái)顯示該學(xué)生的詳細(xì)資料。Public Sub LoadStuInfo(StuNum As String)sqlstr = select * from StuInfo where SID=39。 amp。 StuNum amp。 39。 sqlstr, con, 1, 1 StuInfo(0).Caption = (SID) StuInfo(1).Caption = (SName) StuInfo(2).Caption = (SGender) StuInfo(3).Caption = (SZhengzhi) StuInfo(4).Caption = (SPlace) StuInfo(5).Caption = (SMinzu) StuInfo(6).Caption = (SBirthday) StuInfo(7).Caption = (SDormitory) StuInfo(8).Caption = (SAddress) StuInfo(9).Caption = (SCode) StuInfo(10).Caption = (STel) StuInfo(11).Caption = (SRemark): Set rs = Nothing 1End Sub3.3.6 添加/修改學(xué)生信息窗體(frmAddstu) 添加/修改學(xué)生信息界面當(dāng)窗體加載時(shí),首先判斷是修改學(xué)生資料還是添加新的學(xué)生資料,如果學(xué)號(hào)為“00000000”,則為添加新的學(xué)生資料,反之則為修改學(xué)生資料。如果為修改資料,則以學(xué)生的學(xué)號(hào)為關(guān)鍵字將該學(xué)生的信息加載到該窗體的對(duì)應(yīng)文本框,同時(shí)將該學(xué)號(hào)框(EditStu(0))的Enable屬性設(shè)置為False。如果為添加新的學(xué)生資料,則將學(xué)號(hào)的前6位置為該班級(jí)的ID,并將學(xué)號(hào)輸入框的SelStart屬性設(shè)為6。根據(jù)以上設(shè)計(jì),在Form_Load中添加如下代碼:Private Sub Form_Load()39。確定添加或者修改,保存數(shù)據(jù) 男 女 = 0 團(tuán)員 黨員 預(yù)備黨員 = 1 漢族 瑤族 土家族 侗族 白族 苗族 回族 壯族 = 0If EditNum = 00000000 Then = 添加學(xué)生資料(班級(jí): amp。 classid amp。 ) = 添加(amp。A) EditStu(0).Text = classid EditStu(0).SelStart = 6Else = 修改學(xué)號(hào)為 amp。 EditNum amp。 的學(xué)生資料 EditStu(0).Enabled = False = 修改(amp。M) Dim rs As New , sqlstr As String sqlstr = select * from StuInfo where SID=39。 amp。 EditNum amp。 39。 sqlstr, con 39。把數(shù)據(jù)代入文本框中 EditStu(0).Text = (SID) EditStu(1).Text = (SName) EditStu(2).Text = (SBirthday) EditStu(3).Text = (SPlace) EditStu(4).Text = (SAddress) EditStu(5).Text = (SCode) EditStu(6).Text = (STel) EditStu(7).Text = (SDormitory) EditStu(8).Text = (SRemark) If (SGender) = 男 Then = 0 ElseIf (SGender) = 女 Then = 1 End If If (SZhengzhi) = Then = 0 ElseIf (SZhengzhi) = 團(tuán)員 Then = 1 ElseIf (SZhengzhi) = 黨員 Then = 2 ElseIf (SZhengzhi) = 預(yù)備黨員 Then = 3 End If Select Case (SMinzu) Case 漢族: = 0 Case 瑤族: = 1 Case 土家族: = 2 Case 侗族: = 3 Case 白族: = 4 Case