【正文】
rSQL If 0 Then strSQL = Select * from course where typeid = amp。 () Else strSQL = Select * from course End If If adStateClosed Then strSQL39。39。刷新dcbSerial所列的課程類型號(hào) = = AddCourse dcbSerial = 39。39。刷新dcbName所列的課程類型名 = = AddCourse = Call dcbName_Click(0) Call dcbSerial_Click(0) = ( )End SubPrivate Sub cmdCancel_Click() mbAdded = False End SubPrivate Sub cmdOK_Click() mbAdded = True End SubPrivate Sub dcbName_Click(Area As Integer) 39。39。動(dòng)態(tài)改變dcbSerial中的課程號(hào) = = ( )End SubPrivate Sub dcbSerial_Click(Area As Integer) 39。39。動(dòng)態(tài)改變dcbName中的課程名 = = ( )End SubPrivate Sub Form_Load() mbAdded = False 39。39。從課程類型表重讀取數(shù)據(jù),寫入到cboType中 39。39。將name寫入到列表框中,id寫入到對(duì)應(yīng)的ItemData中 全部 If = adStateClosed Then While Not Dim s As String s = (name) s ( 1) = (id) Wend = 0End SubPrivate Sub txtScore_Change() = Len() 0 And Len() 0End SubPrivate Sub txtScore_KeyPress(KeyAscii As Integer) 39。39。如果輸入的字符不屬于數(shù)字或者頓號(hào),則取消輸入的字符 If (KeyAscii Asc(9) Or KeyAscii Asc(0)) And KeyAscii Asc(.) And KeyAscii vbKeyBack Then KeyAscii = 0End Sub2. Option Explicit39。39。表示用戶是否點(diǎn)擊“確定”,來添加一個(gè)課程信息Public mbAdded As BooleanPrivate Sub cboClass_Click() 39。39。針對(duì)所選的班級(jí),列出班級(jí)中所有的學(xué)籍信息 Dim strSQL If = 全部 Then strSQL = from student order by serial Else strSQL = from student where class=39。 amp。 cboClass amp。 39。 order by serial End If select * amp。 strSQL 39。39。刷新dcbSerial所列的學(xué)號(hào) = = AddStudent = 39。39。刷新dcbName所列的學(xué)生姓名 = = AddStudent = End SubPrivate Sub cmdCancel_Click() mbAdded = False End SubPrivate Sub cmdOK_Click() mbAdded = True End SubPrivate Sub dcbName_Click(Area As Integer) 39。39。動(dòng)態(tài)改變dcbSerial中的學(xué)號(hào) = = ( )End SubPrivate Sub dcbSerial_Click(Area As Integer) = = ( )End SubPrivate Sub Form_Load() Dim rsDep As New , rsClass As New Set rsDep = Set rsClass = 39。39。39。從class中讀取數(shù)據(jù),填充到cboClass復(fù)合框中 If = adStateClosed Then 全部 While Not rsClass(Name) Wend = 0End SubPrivate Sub txtScore_Change() = Len() 0 And Len() 0End SubPrivate Sub txtScore_KeyPress(KeyAscii As Integer) 39。39。如果輸入的字符不屬于數(shù)字或者頓號(hào),則取消輸入的字符 If (KeyAscii Asc(9) Or KeyAscii Asc(0)) And KeyAscii Asc(.) And KeyAscii vbKeyBack Then KeyAscii = 0End Sub3. Option Explicit39。39。39。當(dāng)改變記錄集時(shí),需要刷新整個(gè)網(wǎng)格控件Sub RefreshGrid() = If adStateClosed Then = sqlCourse 39。39。刷新各個(gè)綁定控件 Call grdScan_ChangeEnd Sub39。39。39。用以在瀏覽時(shí),根據(jù)當(dāng)前記錄所出的位置不同,來改變個(gè)瀏覽按鈕的狀態(tài)Sub ChangeBrowseState() With 39。39。如果沒有任何記錄,則清空顯示目錄;并且使瀏覽部分和管理部分的按鈕無效 If .State = adStateClosed Then .Open 39。39。39。假如處于記錄的頭部 If .BOF Then If Not .EOF Then = False = False Else = True = True End If 39。39。39。假如處于記錄的尾部 If .EOF Then If Not .BOF Then = False = False Else = True = True End If End WithEnd Sub39。39。通過當(dāng)前課程的成績,來得到該課程的總成績和平均成績Sub Calculate(sSerial As String) Dim rs As New Dim str str = select avg(score) as avg_score, count(*) as count_score from score where courseid=39。 amp。 sSerial amp。 39。 str, , adOpenStatic If Not Then = FormatNumber(rs(count_score), 0) = FormatNumber(rs(avg_score), 2) End IfEnd Sub39。39。刷新課程編號(hào)為sSerial的成績的網(wǎng)格控件grdScoreSub RefreshScore(sSerial As String) With If .State adStateClosed Then .Close Dim str If sSerial = Then str = select , , amp。 _ from student,score where = Else str = select , , amp。 _ from student,score where = amp。 _ and = 39。 amp。 sSerial amp。 39。 End If .Open str 39。39。,來改變管理grdScore的各個(gè)按鈕的狀態(tài) If .BOF And .EOF Then = True = False = False = False Else = True = True = True = True End If End With = sqlStudentScore = 課程編號(hào): amp。 (0).CellText() amp。 _ 課程名: amp。 (1).CellText() 39。39。計(jì)算該課程的總成績和平均成績 Call Calculate((0).CellText())End SubPrivate Sub cmdAdd_Click() On Error GoTo errHandler With frmAddStudent Load frmAddStudent .Caption = 添加成績信息 .Show vbModal 39。39。如果用戶沒有點(diǎn)擊確認(rèn)按鈕,則退出處理過程 If Not .mbAdded Then Unload frmAddStudent Exit Sub End If 39。39。添加成績記錄 Dim str str = insert into score(StudentID, CourseID, Score) values(39。 str = str amp。 . amp。 39。,39。 amp。 (0).CellText() amp。 39。,39。 amp。 . str = str amp。 39。) str Unload frmAddStudent End With Unload frmAddStudent 39。39。刷新整個(gè)網(wǎng)格控件 Call RefreshScore((0).CellText()) Exit Sub errHandler: MsgBox , vbCritical, 錯(cuò)誤 End SubPrivate Sub cmdClose_Click() Unload MeEnd SubPrivate Sub cmdDelete_Click() On Error GoTo errHandler If MsgBox(確實(shí)要?jiǎng)h除此成績記錄?, vbYesNo + vbQuestion + vbDefaultButton2, 確認(rèn)) = vbYes Then Dim sSerial, stuSerial stuSerial = (0).CellText() sSerial = (0).CellText() Dim str str = delete from score where studentid = 39。 amp。 stuSerial amp。 39。 and courseid=39。 amp。 sSerial amp。 39。 39。39。使用con來刪除所選的記錄 str 39。39。刷新grdScore控件