📄 grade_edit.frm
字号:
Attribute VB_GlobalNameSpace = False
Attribute VB_Creatable = False
Attribute VB_PredeclaredId = True
Attribute VB_Exposed = False
Attribute VB_Ext_KEY = "RVB_UniqueId" ,"41FF01E602F6"
Attribute VB_Ext_KEY = "RVB_ModelStereotype" ,"Form"
Dim mrc As ADODB.Recordset
Private mrc1 As ADODB.Recordset '定义记录集
Dim txtSQL As String
Private txtSQL1 As String '定义SQL字符串
Dim i As Integer '定义循环变量
Dim mrcbookmark As Variant
Private Sub Command1_Click() '“确定”按钮
If Combo1(0).Text = "" Then
MsgBox "请选定学期!", 0 + 48, "注意!"
Combo1(0).SetFocus
Exit Sub
End If
If Combo1(1).Text = "" Then
MsgBox "请填写课程名!", 0 + 48, "注意!"
Combo1(1).SetFocus
Exit Sub
End If
If Combo1(2).Text = "" Then
MsgBox "请填写教师姓名!", 0 + 48, "注意!"
Combo1(2).SetFocus
Exit Sub
End If
Call Grid_show
If mrc.EOF Then
MsgBox "没有符合条件的记录!", 0 + 48, "注意!"
Combo1(0).SetFocus
mrc.Close
Set mrc = Nothing
Exit Sub
End If
myFlexGrid.Enabled = True
For i = 0 To 2
If Not IsNull(mrc.Fields(i)) Then
Text1(i).Text = mrc.Fields(i)
Else: Text1(i).Text = ""
End If
Next i
Command1.Enabled = False
Frame2.Visible = True
End Sub
Private Sub Command2_Click() '重置按钮
Combo1(0).Text = ""
Combo1(1).Text = ""
Combo1(2).Text = ""
Frame2.Visible = False
myFlexGrid.Rows = 1 ' 清空显示的选课信息
mrc.Close
Set mrc = Nothing
Command1.Enabled = True
myFlexGrid.Enabled = False
End Sub
Private Sub Command3_Click() '保存按钮
Dim edit_type As Boolean '定义布尔变量用来区分是添加还是修改
edit_type = False '初始化为修改状态
If Text1(2).Text = "" Then
Command4.Enabled = True
Exit Sub
End If
If IsNull(mrc.Fields(2)) Then edit_type = True '原来为空,则为添加状态
If edit_type Then
Command4.Enabled = False
End If
mrc.Fields(2) = Val(Text1(2).Text)
'在判断成绩是否及格,如果不及格将其信息自动添加到重修记录中
If mrc.Fields(2) < 60 And edit_type Then
txtSQL1 = "select * from Reles_info "
Set mrc1 = ExecuteSQL(txtSQL1, MsgText)
If mrc.Fields(7) = False Then
mrc1.AddNew
mrc1.Fields(0) = mrc.Fields(0)
mrc1.Fields(1) = mrc.Fields(8)
mrc1.Fields(2) = mrc.Fields(2)
mrc1.Fields(3) = 1
mrc1.Fields(4) = "学期:" & Combo1(0).Text & " 分数:" & mrc.Fields(2) & "; "
mrc1.Update
Else
mrc1.MoveFirst
Do While Not mrc1.EOF
If mrc1.Fields(0) = mrc.Fields(0) And mrc1.Fields(1) = mrc.Fields(8) Then
Exit Do
End If
mrc1.MoveNext
Loop
mrc1.Fields(2) = mrc.Fields(2)
mrc1.Fields(3) = mrc1.Fields(3) + 1
mrc1.Fields(4) = mrc1.Fields(4) + "学期:" & Combo1(0).Text & " 分数:" & mrc.Fields(2) & "; "
mrc1.Update
End If
MsgBox "该生成绩不及格,需要进行第" & mrc1.Fields(3) & "次重修!", 0 + 48, "提醒!"
mrc1.Close
End If
'计算并保存绩点
Dim mark, jpoint As Single
mark = Val(Text1(2).Text)
Select Case mark
Case 90 To 100
jpoint = 4#
Case 85 To 89.9
jpoint = 3.7
Case 82 To 84.9
jpoint = 3.3
Case 78 To 81.9
jpoint = 3#
Case 75 To 77.9
jpoint = 2.7
Case 72 To 74.9
jpoint = 2.3
Case 68 To 71.9
jpoint = 2#
Case 66 To 67.9
jpoint = 1.7
Case 64 To 65.9
jpoint = 1.5
Case 60 To 63.9
jpoint = 1#
Case Else
jpoint = 0
End Select
mrc.Fields(3) = jpoint
'学分绩点=课程学分*绩点*课程权重系数
mrc.Fields(4) = Format(jpoint * mrc.Fields(5) * mrc.Fields(6), "0.0")
mrc.Update
mrcbookmark = mrc.Bookmark '保存记录的当前位置
Call Grid_show '更新myFlexGrid 中的选课信息
mrc.Bookmark = mrcbookmark '把记录置为更新前的当前位置
Command3.Enabled = False
Command4.Enabled = True
End Sub
Private Sub Command4_Click() '“下一个”按钮
mrc.MoveNext
If Not mrc.EOF Then
For i = 0 To 2
If Not IsNull(mrc.Fields(i)) Then
Text1(i).Text = mrc.Fields(i)
Else: Text1(i).Text = ""
Command4.Enabled = False
Command3.Enabled = True
End If
Next i
Else
MsgBox "已经达到最后的记录!", 0 + 48, "注意!"
mrc.MoveLast
For i = 0 To 2
If Not IsNull(mrc.Fields(i)) Then
Text1(i).Text = mrc.Fields(i)
End If
Next i
End If
End Sub
Private Sub Form_Load()
With myFlexGrid
.Rows = 1
.CellAlignment = 2
.TextMatrix(0, 0) = "学生学号"
.TextMatrix(0, 1) = "学生姓名"
.TextMatrix(0, 2) = "成绩"
.TextMatrix(0, 3) = "绩点"
.TextMatrix(0, 4) = "学分绩点"
For i = 0 To 4
.ColAlignment(i) = 3
Next i
End With
Command3.Enabled = False
txtSQL = "select distinct Les_term from Les_info order by Les_term "
Set mrc = ExecuteSQL(txtSQL, MsgText)
'初始化学期选择框
While Not mrc.EOF
Combo1(0).AddItem mrc.Fields(0)
mrc.MoveNext
Wend
mrc.Close
'初始化课程名称选择框
txtSQL = "select distinct Cou_info.Cou_name from Cou_info,Les_info" & _
" where Cou_info.Cou_no=Les_info.Cou_no"
Set mrc = ExecuteSQL(txtSQL, MsgText)
While Not mrc.EOF
Combo1(1).AddItem mrc.Fields(0)
mrc.MoveNext
Wend
mrc.Close
'初试化教师名选择框
txtSQL = "select distinct Les_tna from Les_info "
Set mrc = ExecuteSQL(txtSQL, MsgText)
While Not mrc.EOF
Combo1(2).AddItem mrc.Fields(0)
mrc.MoveNext
Wend
mrc.Close
'cnn1.Close
Set mrc = Nothing
Set cnn1 = Nothing
End Sub
Private Sub Text1_Change(Index As Integer) '如果成绩被编辑过,则使保存按钮有效
If Index = 2 Then Command3.Enabled = True
End Sub
Public Sub Grid_show() 'myFlexGrid 内容显示的过程
'三个表联合查询,获取选课学生的学号,姓名,成绩,绩点,学分绩点,以及课程的学分,权重系数,是否重修,课程号
txtSQL = "select Les_info.Stu_no,Stu_info.Stu_name,Les_info.Les_cj,Les_info.Les_jd,Les_info.Les_xj," & _
" Cou_info.Cou_credit,Cou_info.Cou_power,Les_info.Les_cx,Les_info.Cou_no from Stu_info," & _
" Les_info,Cou_info where Les_info.Stu_no=Stu_info.Stu_no" & _
" and Les_info.Cou_no=Cou_info.Cou_no" & " and Les_info.Les_tna= " & _
"'" & Trim(Combo1(2).Text) & "'" & " and Cou_info.Cou_name=" & _
"'" & Trim(Combo1(1).Text) & "'" & " and Les_info.Les_term=" & _
"'" & Trim(Combo1(0).Text) & "'"
Set mrc = ExecuteSQL(txtSQL, MsgText)
If mrc.EOF Then
Exit Sub
End If
myFlexGrid.Rows = 1
While Not mrc.EOF
With myFlexGrid
.Rows = .Rows + 1
.CellAlignment = 2
Dim i As Integer
For i = 0 To 4
If Not IsNull(mrc.Fields(i)) Then
.TextMatrix(.Rows - 1, i) = mrc.Fields(i)
End If
Next i
End With
mrc.MoveNext
Wend
mrc.MoveFirst
End Sub
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -