📄 frmsc.frm
字号:
Call showMsg("学号和课程编号不能为空!", 1)
cobSno.SetFocus
Exit Sub
End If
isOk = MsgBox(vbCrLf & "您确定要删除" & lbSname.Caption & "的选课信息么?", vbOKCancel + vbQuestion, "确认操作")
If isOk = vbOK Then
'删除学生选课信息
SQL = "delete from jc_sc where sno='" & cobSno.Text & "' and cno='" & cobCno.Text & "' "
On Error GoTo CanNotDel
cnn.Execute (SQL)
End If
Call Data_Display
CanNotDel:
Call showMsg("无法删除!", 0)
End Sub
Private Sub cmdExit_Click()
Unload Me
End Sub
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)
cobCno.SetFocus
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 & "') "
cnn.Execute (SQL)
Call showMsg("添加 选课信息 成功", 1)
Else
SQL = "update jc_sc set cno='" & strCno & "',sno='" & strSno & "',grade='" & strGrade & "' where cno='" & strCno & "' and sno='" & strSno & "'"
cnn.Execute (SQL)
Call showMsg("修改 选课信息 成功", 1)
End If
Call Data_Display
End Sub
Private Sub cobCno_Click()
Dim tmpCname As String
If cobCno.Text <> "" Then
SQL = "select cname from jc_c where cno='" & cobCno.Text & "' "
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
End Sub
Private Sub cobFind_Click()
TxtKeyword.Enabled = True
End Sub
Private Sub Form_Activate()
lbGrade.Caption = "注意:如果添加课程,请在成绩处输入 0 "
cobFind.AddItem "学号", 0
cobFind.AddItem "课程编号", 1
Call Clear
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 & "' "
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
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 Resume Next
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
End Sub
Function getRecordsNums(ByVal TmpSql As String) As String
Dim rs As ADODB.Recordset
On Error Resume Next
Set rs = cnn.Execute(TmpSql)
lbScounts.Caption = "当前共" & rs("scnums") & "个选课信息"
getRecordsNums = lbScounts.Caption
End Function
Private Sub getAllRecords()
'SQL = "select count(sno) as scnums from jc_sc"
'getRecordsNums SQL
'把记录和数据显示控件绑定
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 order by jc_sc.sno asc "
'SQL = "select * from jc_sc "
On Error Resume Next
Set rs = cnn.Execute(SQL)
Call Data_Display
End Sub
Private Sub getSc()
SQL = "select distinct sno,distinct cno,grade from jc_sc "
On Error Resume Next
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
End Sub
Private Sub Form_Load()
Dim strErr As String
If cnn.State = 0 Then
On Error Resume Next
cnn.Open connStr
End If
Call Clear
Call getSc
'Call getAllRecords
Exit Sub
errNotable:
strErr = "没有找到相应数据,请确认所选择的数据源指向的是MS SQL Server数据库" & _
vbCrLf & "并且数据库中已经存在选课信息表。" & _
vbCrLf & "您可以选择初始化重新设置数据表。" & vbCrLf
Call showMsg(strErr, 0)
End Sub
Private Sub Form_Resize()
With Me
Frame1.Left = (.ScaleWidth - Frame1.Width) / 2
Frame1.Top = (.ScaleHeight - Frame1.Height) / 2
End With
End Sub
Private Sub Form_Unload(Cancel As Integer)
mdiFrm.stb.SimpleText = "就绪"
Unload Me
End Sub
Private Sub MSFG_Clear()
With MSFlexGrid1
.Cols = 0
.Rows = 0
End With
End Sub
Private Sub Data_Display()
Dim i As Integer
'清空表
Call MSFG_Clear
With MSFlexGrid1
On Error Resume Next
If (rs.BOF) Or (rs.EOF) Then
Call showMsg("没有相关记录!", 1)
.Cols = 0
.Rows = 0
' FrameScView.Visible = False
Else
.Cols = 5
.Rows = 1
'FrameScView.Visible = True
'得到每一个列的列名
' 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 rs.EOF
.Rows = .Rows + 1
'显示一条记录
For i = 0 To 4
.TextMatrix(MSFlexGrid1.Rows - 1, i) = Trim(rs.Fields(i))
Next i
'移动游标到下一条记录
rs.MoveNext
Loop
End If
End With
Exit Sub
rsErr:
Call showMsg(" ", 0)
End Sub
Private Sub MSFlexGrid1_Click()
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 MSFlexGrid1_RowColChange()
Call MSFlexGrid1_Click
End Sub
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -