📄 d成绩单生成.frm
字号:
VERSION 5.00
Begin VB.Form D成绩单生成
Caption = "成绩单生成"
ClientHeight = 4575
ClientLeft = 60
ClientTop = 345
ClientWidth = 8385
LinkTopic = "Form1"
ScaleHeight = 4575
ScaleWidth = 8385
StartUpPosition = 3 'Windows Default
Begin VB.Frame Frame1
Caption = "成绩单"
Height = 4455
Index = 0
Left = 0
TabIndex = 0
Top = 0
Width = 8295
Begin VB.TextBox txtReport
Height = 3735
Left = 3840
MultiLine = -1 'True
ScrollBars = 3 'Both
TabIndex = 11
Top = 600
Width = 4335
End
Begin VB.ComboBox CboQuery
Height = 315
Index = 1
Left = 1080
TabIndex = 6
Top = 960
Width = 2295
End
Begin VB.ComboBox CboQuery
Height = 315
Index = 0
Left = 1080
TabIndex = 5
Top = 480
Width = 2295
End
Begin VB.ComboBox CboQuery
Height = 315
Index = 2
Left = 1080
TabIndex = 4
Top = 1440
Width = 2295
End
Begin VB.ComboBox CboQuery
Height = 315
Index = 3
Left = 1080
TabIndex = 3
Top = 1920
Width = 2295
End
Begin VB.CommandButton CmdReport
Caption = "生成成绩单"
Height = 375
Left = 1080
TabIndex = 2
Top = 2880
Width = 1455
End
Begin VB.CommandButton CmdExit
Caption = "退出"
Height = 375
Left = 1080
TabIndex = 1
Top = 3360
Width = 1455
End
Begin VB.Label LblNotes
Caption = "成绩单"
Height = 375
Left = 4560
TabIndex = 12
Top = 240
Width = 3255
End
Begin VB.Label Label9
Caption = "系:"
Height = 240
Left = 600
TabIndex = 10
Top = 960
Width = 495
End
Begin VB.Label Label8
Caption = "学院:"
Height = 255
Index = 0
Left = 480
TabIndex = 9
Top = 480
Width = 735
End
Begin VB.Label Label1
Caption = "班级:"
Height = 255
Left = 480
TabIndex = 8
Top = 1440
Width = 975
End
Begin VB.Label LblCourse
Caption = "学生:"
Height = 375
Index = 1
Left = 480
TabIndex = 7
Top = 1920
Width = 1335
End
End
End
Attribute VB_Name = "D成绩单生成"
Attribute VB_GlobalNameSpace = False
Attribute VB_Creatable = False
Attribute VB_PredeclaredId = True
Attribute VB_Exposed = False
Dim SQL As String
Dim msg As String
Private Sub Form_Load()
'初始化学院ComboBox、系ComboBox、班级ComboBox、学生ComboBox
Dim rst As ADODB.Recordset
Dim strItem As String
'得到院信息记录集
SQL = " select 院代码,院名称 from 院信息表 order by 院代码"
Set rst = SelectSQL(SQL, msg)
If rst.RecordCount > 0 Then '如果存在院信息,初始化院ComboBox
Do While Not rst.EOF
strItem = rst.Fields(0) & " " & rst.Fields(1)
CboQuery(0).AddItem (strItem)
rst.MoveNext
Loop
rst.Close
CboQuery(0).ListIndex = 0
Else
MsgBox ("请先创建院信息!") '如果没有院信息不能使用
CboQuery(0).Enabled = False
CboQuery(1).Enabled = False
CboQuery(2).Enabled = False
Exit Sub
End If
Call SelectData(0) '初始化系ComboBox
If CboQuery(1).ListCount > 0 Then
Call SelectData(1) '初始化班级ComboBox、学生ComboBox
End If
End Sub
Private Sub SelectData(Index As Integer)
'选择下拉框时,更新下拉框内容
Dim rst As ADODB.Recordset
Dim strItem As String
If Index = 0 Then '如果是选择院,初始化系ComboBox
SQL = " select 系代码,系名称 from 系信息表 where 院代码='"
SQL = SQL & Left(Trim(CboQuery(0).Text), 2) & "' order by 系代码"
Set rst = SelectSQL(SQL, msg)
CboQuery(1).Clear
If rst.RecordCount > 0 Then '如果存在系信息,初始化系ComboBox
Do While Not rst.EOF
strItem = rst.Fields(0) & " " & rst.Fields(1)
CboQuery(1).AddItem (strItem)
rst.MoveNext
Loop
rst.Close
CboQuery(1).ListIndex = 0
Else
Exit Sub
End If
ElseIf Index = 1 Then '如果是选择系,初始化班级ComboBox
SQL = " select 班号,班级名称 from 班级信息表 where 系代码='"
SQL = SQL & Left(Trim(CboQuery(1).Text), 4) & "' order by 班号"
Set rst = SelectSQL(SQL, msg)
CboQuery(2).Clear
If rst.RecordCount > 0 Then '如果存在班级信息,初始化班级ComboBox
Do While Not rst.EOF
strItem = rst.Fields(0) & " " & rst.Fields(1)
CboQuery(2).AddItem (strItem)
rst.MoveNext
Loop
rst.Close
CboQuery(2).ListIndex = 0
Call FixData '初始化学生ComboBox
Else
Exit Sub
End If
End If
End Sub
Private Sub FixData()
'在comboBox载入学生列表
Dim rst As ADODB.Recordset
Dim strItem As String
'得到学生信息记录集
SQL = "select 学号,姓名 from 学生基本信息表 where 班号='"
SQL = SQL & Left(Trim(CboQuery(2).Text), 6) & "' order by 学号"
Set rst = SelectSQL(SQL, msg)
CboQuery(3).Clear
If rst.RecordCount > 0 Then '如果存在学生信息,初始化学生ComboBox
Do While Not rst.EOF
strItem = rst.Fields(0) & " " & rst.Fields(1)
CboQuery(3).AddItem (strItem)
rst.MoveNext
Loop
rst.Close
CboQuery(3).ListIndex = 0
Else
Exit Sub
End If
End Sub
Private Sub CmdReport_Click()
'显示成绩单
Dim strCaption As String
If CboQuery(3).ListCount > 0 Then
Call LoadData '显示结果
Else
MsgBox ("不能显示成绩单!")
txtReport.Text = ""
End If
End Sub
Private Sub LoadData()
'显示成绩报表
Dim stuNo As String
Dim rs As ADODB.Recordset
Dim strReport As String
If CboQuery(2).ListCount > 0 And CboQuery(3).ListCount > 0 Then
stuNo = Left(Trim(CboQuery(3).Text), 8)
LblNotes.Caption = stuNo & "号学生成绩单:"
strReport = strReport & stuNo & "号学生成绩单" & vbCrLf
'得到每门课程的成绩
strReport = strReport & "【课程成绩】" & vbCrLf
SQL = "SELECT 课程名称,成绩 FROM 成绩信息表 INNER JOIN "
SQL = SQL & "课程信息表 ON 成绩信息表.课程号 = 课程信息表.课程号 "
SQL = SQL & " WHERE (成绩信息表.学号 = '" & stuNo & "') order by 成绩信息表.课程号"
Set rs = Nothing
Set rs = SelectSQL(SQL, msg)
If rs.RecordCount > 0 Then
'写信息
Do While (Not rs.EOF)
For Index = 0 To 1
If rs.Fields(Index) <> "" Then
strReport = strReport & rs.Fields(Index).Name & ":" & rs.Fields(Index) & vbCrLf
Else
strReport = strReport & rs.Fields(Index).Name & ":" & "未登成绩" & vbCrLf
End If
Next Index
strReport = strReport & "--------------" & vbCrLf
rs.MoveNext
Loop
Else
strReport = strReport & "没有成绩....." & vbCrLf
End If
'得到平均成绩
strReport = strReport & "平均成绩:"
SQL = "SELECT ROUND(AVG(成绩), 2) AS 平均成绩 FROM 成绩信息表 "
SQL = SQL & " WHERE ( 成绩 >=0 and 学号 = '" & stuNo & "') "
Set rs = Nothing
Set rs = SelectSQL(SQL, msg)
If rs.RecordCount > 0 Then
strReport = strReport & rs.Fields(0) & vbCrLf
End If
txtReport.Text = strReport '显示成绩单
rs.Close
Else
MsgBox ("不能显示成绩单!")
End If
End Sub
Private Sub CboQuery_Click(Index As Integer)
Dim strCaption As String
If Index = 0 Then
Call SelectData(0) '得到系列表
ElseIf Index = 1 Then
If CboQuery(1).ListCount > 0 Then
Call SelectData(1) '得到班级列表
End If
ElseIf Index = 2 Then
If CboQuery(2).ListCount > 0 Then
Call FixData '显示学生列表
End If
End If
End Sub
Private Sub CmdExit_Click()
'退出操作
Unload Me
学生档案管理.Enabled = True
End Sub
Private Sub Form_Unload(Cancel As Integer)
'退出操作
Unload Me
学生档案管理.Enabled = True
End Sub
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -