📄 frmingrade.frm
字号:
Begin MSAdodcLib.Adodc adoNoName
Height = 330
Left = 1680
Top = 4440
Visible = 0 'False
Width = 1335
_ExtentX = 2355
_ExtentY = 582
ConnectMode = 0
CursorLocation = 3
IsolationLevel = -1
ConnectionTimeout= 15
CommandTimeout = 30
CursorType = 3
LockType = 3
CommandType = 8
CursorOptions = 0
CacheSize = 50
MaxRecords = 0
BOFAction = 0
EOFAction = 0
ConnectStringType= 1
Appearance = 1
BackColor = -2147483643
ForeColor = -2147483640
Orientation = 0
Enabled = -1
Connect = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=Stud97.mdb;Persist Security Info=False"
OLEDBString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=Stud97.mdb;Persist Security Info=False"
OLEDBFile = ""
DataSourceName = ""
OtherAttributes = ""
UserName = ""
Password = ""
RecordSource = ""
Caption = "Adodc1"
BeginProperty Font {0BE35203-8F91-11CE-9DE3-00AA004BB851}
Name = "宋体"
Size = 9
Charset = 134
Weight = 400
Underline = 0 'False
Italic = 0 'False
Strikethrough = 0 'False
EndProperty
_Version = 393216
End
Begin MSAdodcLib.Adodc adoInGrade
Height = 330
Left = 120
Top = 4440
Visible = 0 'False
Width = 1335
_ExtentX = 2355
_ExtentY = 582
ConnectMode = 0
CursorLocation = 3
IsolationLevel = -1
ConnectionTimeout= 15
CommandTimeout = 30
CursorType = 3
LockType = 4
CommandType = 8
CursorOptions = 0
CacheSize = 50
MaxRecords = 0
BOFAction = 0
EOFAction = 0
ConnectStringType= 1
Appearance = 1
BackColor = -2147483643
ForeColor = -2147483640
Orientation = 0
Enabled = -1
Connect = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=Stud97.mdb;Persist Security Info=False"
OLEDBString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=Stud97.mdb;Persist Security Info=False"
OLEDBFile = ""
DataSourceName = ""
OtherAttributes = ""
UserName = ""
Password = ""
RecordSource = ""
Caption = "Adodc1"
BeginProperty Font {0BE35203-8F91-11CE-9DE3-00AA004BB851}
Name = "宋体"
Size = 9
Charset = 134
Weight = 400
Underline = 0 'False
Italic = 0 'False
Strikethrough = 0 'False
EndProperty
_Version = 393216
End
Begin MSAdodcLib.Adodc adoOldGrade
Height = 330
Left = 5280
Top = 4440
Visible = 0 'False
Width = 1455
_ExtentX = 2566
_ExtentY = 582
ConnectMode = 0
CursorLocation = 3
IsolationLevel = -1
ConnectionTimeout= 15
CommandTimeout = 30
CursorType = 3
LockType = 3
CommandType = 8
CursorOptions = 0
CacheSize = 50
MaxRecords = 0
BOFAction = 0
EOFAction = 0
ConnectStringType= 1
Appearance = 1
BackColor = -2147483643
ForeColor = -2147483640
Orientation = 0
Enabled = -1
Connect = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=Stud97.mdb;Persist Security Info=False"
OLEDBString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=Stud97.mdb;Persist Security Info=False"
OLEDBFile = ""
DataSourceName = ""
OtherAttributes = ""
UserName = ""
Password = ""
RecordSource = ""
Caption = "Adodc1"
BeginProperty Font {0BE35203-8F91-11CE-9DE3-00AA004BB851}
Name = "宋体"
Size = 9
Charset = 134
Weight = 400
Underline = 0 'False
Italic = 0 'False
Strikethrough = 0 'False
EndProperty
_Version = 393216
End
End
Attribute VB_Name = "frmInGrade"
Attribute VB_GlobalNameSpace = False
Attribute VB_Creatable = False
Attribute VB_PredeclaredId = True
Attribute VB_Exposed = False
'输入成绩窗体frmInGrade
Option Explicit
Private Sub cboClass_Click() '班级组合框
If Trim$(cboCource.Text) = "" Then Exit Sub
Call GetOldGrade '获取已有成绩
Call MakeTempTable '生成临时表
cmdOk.Enabled = True
End Sub
Private Sub cboCource_Click() '课程组合框
If Trim$(cboClass.Text) = "" Then Exit Sub
Call GetOldGrade '获取已有成绩
Call MakeTempTable '生成临时表
cmdOk.Enabled = True
End Sub
Private Sub cmdCancel_Click() '取消
If adoInGrade.Recordset Is Nothing Then Exit Sub
adoInGrade.Recordset.CancelBatch
End Sub
Private Sub cmdExit_Click() '退出
Unload Me
End Sub
Private Sub cmdOk_Click() '确认输入
Dim Rp As Integer
Rp = MsgBox("“确认输入”后将无法取消,是否继续?", vbQuestion + vbYesNo, "提示")
If Rp = vbNo Then Exit Sub
cmdOk.Enabled = False
'将临时表中的数据追加到成绩表中
With adoInGrade.Recordset
If .RecordCount = 0 Then Exit Sub
.MoveFirst
Do Until .EOF
'注意对数据库中NULL值的判断,VB表达式与SQL表达式不同
If Not IsNull(.Fields("分数")) Then
adoAdd.Recordset.AddNew
adoAdd.Recordset("学号") = .Fields("学号").Value
adoAdd.Recordset("课程") = cboCource.Text
adoAdd.Recordset("分数") = .Fields("分数").Value
adoAdd.Recordset.Update
End If
.MoveNext
Loop
End With
'延时,以便完成数据库后台更新
Dim sngWait As Single
sngWait = Timer
Do Until Timer - sngWait > 1#
fraWait.Visible = True
DoEvents
Loop
fraWait.Visible = False
MsgBox "添加成绩成功。", vbInformation
Call cboCource_Click '刷新控件
End Sub
Private Sub Form_Load() '窗体加载
adoAdd.RecordSource = "SELECT * FROM 课程信息"
adoAdd.Refresh
With adoAdd.Recordset
Do Until .EOF
cboCource.AddItem .Fields("课程").Value
.MoveNext
Loop
End With
Call AddClassItem(cboClass) '填充班级组合框
cmdOk.Enabled = False
'打开成绩表
adoAdd.RecordSource = "SELECT * FROM 成绩"
adoAdd.Refresh
'设输入成绩(临时表)记录集为批更新模式
adoInGrade.LockType = adLockBatchOptimistic
End Sub
Private Sub Form_Unload(Cancel As Integer) '窗体卸载时
frmMain.Show
End Sub
Private Sub GetOldGrade() '自定义过程:获取已有成绩并显示
Dim sql As String
'生成当前班级、课程已有成绩记录集
sql = "SELECT 成绩.学号 AS 学号,学籍.姓名,分数 " _
& " FROM 成绩,学籍 WHERE 成绩.学号=学籍.学号" _
& " AND 成绩.课程='" & cboCource.Text & "'" _
& " AND 学籍.班级='" & cboClass.Text & "'"
adoOldGrade.RecordSource = sql
adoOldGrade.Refresh
'设置DataGrid控件
With dgdGrade
Set .DataSource = adoOldGrade
.Columns(0).Width = 1200
.Columns(1).Width = 1200
.AllowUpdate = False
End With
End Sub
Private Sub MakeTempTable() '自定义过程:生成临时表并显示
Dim sql As String
adoInGrade.RecordSource = "SELECT * FROM 临时"
adoInGrade.Refresh
'删除临时表中的记录
With adoInGrade.Recordset
'用记录集的Delete方法(客户端游标只能删除当前记录)
Do While .RecordCount > 0
.MoveFirst
.Delete
Loop
.UpdateBatch
End With
'根据所选班级构成学号姓名记录集
sql = "SELECT 学号, 姓名 FROM 学籍 " _
& " WHERE 班级='" & cboClass.Text & "'"
adoNoName.RecordSource = sql
adoNoName.Refresh
'将当前课程尚无成绩的学号姓名加入临时表,为输入成绩作准备
With adoNoName.Recordset
Do Until .EOF
If adoOldGrade.Recordset.RecordCount > 0 Then '关键语句
adoOldGrade.Recordset.MoveFirst
End If
adoOldGrade.Recordset.Find "学号='" & .Fields("学号").Value & "'"
If adoOldGrade.Recordset.EOF Then
adoInGrade.Recordset.AddNew
adoInGrade.Recordset("学号") = .Fields("学号").Value
adoInGrade.Recordset("姓名") = .Fields("姓名").Value
End If
.MoveNext
Loop
adoInGrade.Recordset.UpdateBatch
End With
'设置DataGrid控件
With dgdInGrade
Set .DataSource = adoInGrade
.AllowUpdate = True
' .Columns(0).Locked = True '锁定学号、姓名
.Columns(1).Locked = True
.Columns(0).Width = 1100
.Columns(1).Width = 1100
If adoInGrade.Recordset.RecordCount > 0 Then
.Col = 2
.Row = 0
.SetFocus
End If
End With
End Sub
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -