📄 frmscc.frm
字号:
Private Sub cmdSave_Click()
'On Error Resume Next
strCno = Trim(cobCno.Text)
strSno = Trim(cobSno.Text)
strGrade = Trim(TxtGrade.Text)
'检查是否存在该课程数据
If strCno = "" Or strCno = "" Then
Call showMsg("课程编号和课程名称不能为空!", 1)
Exit Sub
End If
SQL = "select cno from jc_sc where cno='" & strCno & "'"
Set rs = cnn.Execute(SQL)
If rs.BOF And rs.EOF Then
SQL = "insert into jc_sc(cno,sno,grade) "
SQL = SQL & "values('" & strCno & "','" & strSno & "','" & strGrade & "') "
On Error GoTo errPoint
cnn.Execute (SQL)
Call showMsg("添 加 成 功 !", 1)
Else
SQL = "update jc_sc set cno='" & strCno & "',sno='" & strSno & "',grade='" & strGrade & "' where cno='" & strCno & "' and sno='" & strSno & "'"
On Error GoTo errPoint
cnn.Execute (SQL)
Call showMsg("修 改 成 功 !", 1)
End If
Call Data_Display
Exit Sub
errPoint:
Call showMsg("操作失败 !", 0)
End Sub
Private Sub cobCno_Click()
Dim tmpCname As String
If cobCno.Text <> "" Then
SQL = "select cname from jc_c where cno='" & cobCno.Text & "' "
On Error GoTo errt
Set rs = cnn.Execute(SQL)
If (rs.BOF) Or (rs.EOF) Then
Call showMsg("没有找到任何记录 !", 1)
Else
'显示所选记录
tmpCname = rs("cname")
End If
lbCname.Caption = tmpCname
strCname = tmpCname
End If
Exit Sub
errt:
Call showMsg("没有找到任何记录 !", 1)
End Sub
Private Sub TxtGrade_GotFocus()
Dim isAdd As Integer
If cobSno.Text <> "" And cobCno.Text <> "" Then
SQL = "select grade from jc_sc where sno='" & cobSno.Text & "' and cno='" & cobCno.Text & "' "
On Error GoTo errg
Set rs = cnn.Execute(SQL)
If (rs.BOF) Or (rs.EOF) Then
isAdd = MsgBox("没有找到 " & strSname & " 所选择的课程 " & strCname & " 的记录,该同学目前还没有选择该课程." & vbCrLf & " 请填写成绩并单击 '添加/修改' 或 取消.", vbInformation + vbOKCancel, "提示")
If isAdd = vbOK Then
TxtGrade.Text = ""
End If
Else
'显示所选记录
TxtGrade.Text = rs("grade")
End If
End If
Exit Sub
errg:
Call showMsg("没有找到任何记录 !", 1)
End Sub
Private Sub cobSno_Click()
Dim tmpSname As String
If cobSno.Text <> "" Then
SQL = "select sname from jc_s where sno='" & cobSno.Text & "' "
On Error GoTo errc
Set rs = cnn.Execute(SQL)
If (rs.BOF) Or (rs.EOF) Then
Call showMsg("没有找到任何记录 !", 1)
Else
'显示所选记录
tmpSname = rs("sname")
End If
lbSname.Caption = " 学生姓名:" & tmpSname
strSname = tmpSname
End If
Exit Sub
errc:
Call showMsg("没有找到任何记录 !", 1)
End Sub
Private Sub Form_Load()
Call Clear
lbGrade.Caption = "注意:如果添加课程,请在成绩处输入 0 "
If cnn.State = 0 Then
On Error Resume Next
cnn.Open connStr
End If
SQL = "select sno,cno,grade from jc_sc "
On Error GoTo errNotable
Set rs = cnn.Execute(SQL)
'取得所有记录
Do While Not rs.EOF
cobSno.AddItem rs("sno")
cobCno.AddItem rs("cno")
cobGrade.AddItem rs("grade")
rs.MoveNext
Loop
'把记录和数据显示控件绑定
Call Data_Display
Exit Sub
errNotable:
Call showMsg("没有找到相应数据,请确认所选择的数据源指向的是MS SQL Server数据库,并且数据库中已经存在课程信息表。" & vbCrLf & "您可以选择初始化重新设置数据表。", 0)
End Sub
Private Sub MSFG_Clear()
With MSFlexGrid1
.Cols = 0
.Rows = 0
End With
End Sub
Private Sub Data_Display()
SQL = "select jc_s.sno,jc_s.sname,jc_c.cno,jc_c.cname,jc_sc.grade from jc_s,jc_c,jc_sc where jc_sc.sno=jc_s.sno and jc_sc.cno=jc_c.cno "
On Error Resume Next
Set scjl = cnn.Execute(SQL)
Dim i As Integer
Call MSFG_Clear '清空表
With MSFlexGrid1
If (scjl.BOF) Or (scjl.EOF) Then
Call showMsg("没有找到任何记录 !", 1)
.Cols = 0
.Rows = 0
Frame2.Visible = False
Else
.Cols = 5
.Rows = 1
'得到每一个列的列名
' For i = 0 To 4
' .TextMatrix(0, i) = rs.Fields(i).Name
' Next i
.TextMatrix(0, 0) = "学号"
.TextMatrix(0, 1) = "姓名"
.TextMatrix(0, 2) = "课程编号"
.TextMatrix(0, 3) = "课程名称"
.TextMatrix(0, 4) = "成绩"
.ColWidth(0) = 1000
.ColWidth(1) = 1500
.ColWidth(2) = 1000
.ColWidth(3) = 1500
.ColWidth(4) = 1000
On Error GoTo rsErr
Do While Not scjl.EOF
.Rows = .Rows + 1
'显示一条记录
For i = 0 To 4
.TextMatrix(MSFlexGrid1.Rows - 1, i) = Trim(scjl.Fields(i))
Next i
'移动游标到下一条记录
scjl.MoveNext
Loop
SQL = "select count(jc_sc.sno) as 'scnum' from jc_sc "
On Error Resume Next
Set scjl = cnn.Execute(SQL)
TextJls.Text = "共" & scjl("scnum") & "选课信息"
End If
End With
rsErr:
'MsgBox "错误号码:" & er.Number & vbCrLf & "错误代码:" & Err.Source & vbCrLf & "错误描述:" & Err.Description, vbCritical, "错误"
'MsgBox "运行错误!", vbCritical, "提示"
End Sub
Private Sub MSFlexGrid1_SelChange()
gRow = MSFlexGrid1.Row
With MSFlexGrid1
'得到一条记录
On Error GoTo exitThis
' TxtXH.Text = .TextMatrix(MSFlexGrid1.Rows - 1, 0)
'如果为零,则说明所选择的是第一行标题
Call Clear
If gRow <> 0 Then
cobSno.Text = .TextMatrix(gRow, 0)
lbSname.Caption = .TextMatrix(gRow, 1)
cobCno.Text = .TextMatrix(gRow, 2)
lbCname.Caption = .TextMatrix(gRow, 3)
TxtGrade.Text = .TextMatrix(gRow, 4)
End If
End With
exitThis:
End Sub
Private Sub Form_Resize()
With Me
Frame3.Left = (.ScaleWidth - Frame3.Width) / 2
Frame3.Top = (.ScaleHeight - Frame3.Height) / 2
End With
End Sub
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -