📄 c考试信息.frm
字号:
End Sub
Private Sub LoadData()
'装载数据
Dim list As ListItem
Dim key As String
Set rs = Nothing
'查询考试信息
SQL = "SELECT * FROM 考试信息表 ORDER BY 开考时间"
Set rs = SelectSQL(SQL, msg)
ListView1.ListItems.Clear '清空ListView
If rs.RecordCount = 0 Then '如果不存在记录
'编辑控件可用性
CmdAdd.Enabled = True: CmdModify.Enabled = False: CmdDelete.Enabled = False
CmdCancel.Enabled = False: CmdSave.Enabled = False: CmdStart.Enabled = False
CmdEnd.Enabled = False
Else
rs.MoveFirst
Do Until rs.EOF
'在ListView中显示考试信息
key = rs.Fields("考试代码")
Set list = ListView1.ListItems.Add(, , key, 1)
rs.MoveNext
Loop
rs.MoveFirst '返回到第一条记录
'编辑控件可用性
CmdAdd.Enabled = True: CmdModify.Enabled = True: CmdDelete.Enabled = True
CmdCancel.Enabled = False: CmdSave.Enabled = False: CmdStart.Enabled = True
CmdEnd.Enabled = True
End If
'设置控件Enable值
Call ControlEnable(False)
End Sub
Private Sub ControlEnable(flag As Boolean)
'设置控件的Enable值
For Index = 0 To 2
txt(Index).Enabled = flag
Next Index
txttime.Enabled = flag
Cboflag.Enabled = flag
End Sub
Private Sub ShowData()
'在控件中显示数据
If rs.RecordCount <> 0 Then '如果存在记录
'为控件赋值
txt(0).Text = rs.Fields("考试代码")
txttime.Text = rs.Fields("开考时间")
txt(1).Text = rs.Fields("考试时间")
txt(2).Text = rs.Fields("考试人数")
'显示启用标志
For Index = 0 To 2
If Cboflag.list(Index) = rs.Fields("考试标志") Then
Cboflag.listindex = Index
Exit For
End If
Next Index
End If
End Sub
Private Sub CmdAdd_Click()
'添加操作
'所有控件重置
Call ControlClear
'设置控件Enable值为可用
Call ControlEnable(True)
'设置标志flag,表示所进行的操作为添加
flag = "Add"
'添加、修改、删除、启动、结束按钮不可用,取消、保存按钮可用
CmdAdd.Enabled = False: CmdModify.Enabled = False: CmdDelete.Enabled = False
CmdCancel.Enabled = True: CmdSave.Enabled = True: CmdStart.Enabled = False
CmdEnd.Enabled = False
End Sub
Private Sub ControlClear()
'重置控件
For Index = 0 To 2
Me.txt(Index).Text = ""
Next Index
txttime.Text = Now
Cboflag.listindex = 0
End Sub
Private Sub CmdModify_Click()
'修改操作
If rs.RecordCount > 0 Then '如果存在记录
'考试代码不可以修改,其他控件可用
txt(0).Enabled = False
'设置控件Enable值
Call ControlEnable(True)
'设置标志flag,表示所进行的操作为修改
flag = "Modify"
'添加、修改、删除、启动、结束按钮不可用,取消、保存按钮可用
CmdAdd.Enabled = False: CmdModify.Enabled = False: CmdDelete.Enabled = False
CmdCancel.Enabled = True: CmdSave.Enabled = True: CmdStart.Enabled = False
CmdEnd.Enabled = False
Else
MsgBox ("没有可以修改的数据!")
End If
End Sub
Private Sub CmdDelete_Click()
'删除操作
On Error GoTo ErrMsg '错误处理
If rs.RecordCount > 0 Then
msg = MsgBox("删除该条记录吗?", vbYesNo)
If msg = vbYes Then
rs.Delete '删除数据
'清空控件
Call ControlClear
Call LoadData '重新装载数据
If rs.RecordCount > 0 Then
Call ShowData '显示数据
End If
'设置控件Enable值为不可用
Call ControlEnable(False)
'添加、删除、启动、结束按钮可用,修改、取消、保存按钮不可用
CmdAdd.Enabled = True: CmdModify.Enabled = False: CmdDelete.Enabled = True
CmdSave.Enabled = False: CmdCancel.Enabled = False: CmdStart.Enabled = True
CmdEnd.Enabled = True
MsgBox ("成功删除的数据!")
End If
Else
MsgBox ("没有可删除的数据!")
End If
Exit Sub
ErrMsg: '报告出错信息
MsgBox Err.Description, vbExclamation, "出错"
End Sub
Private Sub CmdSave_Click()
'保存操作
On Error GoTo ErrMsg '错误处理
If Not CheckData Then Exit Sub '如果数据不合法就退出
If flag = "Modify" Then '如果是修改数据
msg = MsgBox("您确实要修改这条数据吗?", vbYesNo)
If msg = vbYes Then
Call setData '设置数据
Else
Exit Sub
End If
ElseIf flag = "Add" Then '如果是添加新数据
rs.AddNew
Call setData '设置数据
End If
rs.Update '更新数据
'设置控件的可用性
CmdModify.Enabled = True: CmdDelete.Enabled = True: CmdAdd.Enabled = True
CmdSave.Enabled = False: CmdCancel.Enabled = False: CmdStart.Enabled = True
CmdEnd.Enabled = True
If flag = "Add" Then
MsgBox ("成功添加考试,请进行考生分配!")
Else
MsgBox ("成功更新数据!")
End If
Call LoadData '重新装载数据
'定位到添加或修改记录
rs.MoveFirst
rs.Find ("考试代码='" & Trim(Me.txt(0).Text) & "'")
Call ShowData '重新显示数据
Exit Sub
ErrMsg: '报告出错信息
MsgBox Err.Description, vbExclamation, "出错"
End Sub
Private Function CheckData() As Boolean
'检查数据的合法性
Dim rst As ADODB.Recordset
Dim msgt As String
msgt = ""
'检查数据
If Trim(txt(0).Text) = "" Then '检查考试代码是否为空
msgt = "考试代码为空; "
'光标定位
txt(0).SetFocus
txt(0).SelStart = 0
txt(0).SelLength = Len(txt(0).Text)
ElseIf Not Len(Trim(txt(0).Text)) = 10 Then '检查考试代码是否为10位
msgt = msgt & "考试代码不是10位; "
'光标定位
txt(0).SetFocus
txt(0).SelStart = 0
txt(0).SelLength = Len(txt(0).Text)
ElseIf Trim(txt(1).Text) = "" Then 'Or Not IsDate(txt(1).Text) '检查考试时间是否为空或者是否合法
msgt = msgt & "考试时间为空或者输入的不合法; "
'光标定位
txt(1).SetFocus
txt(1).SelStart = 0
txt(1).SelLength = Len(txt(1).Text)
ElseIf Trim(txt(2).Text) = "" Or Not IsNumeric(txt(2).Text) Then '检查考试人数是否为空或者是否为数字
msgt = msgt & "考试人数为空或者输入的不是为数字; "
'光标定位
txt(2).SetFocus
txt(2).SelStart = 0
txt(2).SelLength = Len(txt(2).Text)
End If
If Not msgt = "" Then '如果不为空,给出错误提示
MsgBox (msgt)
CheckData = False '返回False
Exit Function
End If
'检查唯一性
SQL = " select * from 考试信息表 where 考试代码='" & Trim(txt(0).Text) & "'"
Set rst = SelectSQL(SQL, msg)
'如果是进行添加操作且已经存在该记录,提示重复添加
If flag = "Add" And rst.RecordCount > 0 Then
MsgBox ("该信息已经存在,重复添加!")
'光标定位
txt(0).SetFocus
txt(0).SelStart = 0
txt(0).SelLength = Len(txt(0).Text)
rst.Close
CheckData = False '返回False
Exit Function
End If
CheckData = True '合法返回True
End Function
Private Sub setData()
'为字段设置数据
rs.Fields("考试代码") = Me.txt(0).Text
rs.Fields("开考时间") = Me.txttime.Text
rs.Fields("考试时间") = Me.txt(1).Text
rs.Fields("考试人数") = Me.txt(2).Text
rs.Fields("考试标志") = Trim(Me.Cboflag.Text)
End Sub
Private Sub cmdCancel_Click()
'取消操作
Call ShowData '重新在控件中显示信息
'设置控件Enable值为不可用
Call ControlEnable(False)
'修改、删除、添加、启动、结束按钮可用,保存和取消按钮不可用
CmdAdd.Enabled = True: CmdModify.Enabled = True: CmdDelete.Enabled = True
CmdSave.Enabled = False: CmdCancel.Enabled = False:: CmdStart.Enabled = True
CmdEnd.Enabled = True
End Sub
Private Sub ListView1_Click()
'在控件中显示该考试信息的具体信息
Dim key As String
If rs.RecordCount > 0 Then
key = Right(Trim(ListView1.SelectedItem), 10)
SQL = " SELECT * FROM 考试信息表 WHERE 考试代码='" & key & "'"
Set rs = SelectSQL(SQL, msg)
If rs.RecordCount = 1 Then '如果选中了具体的考试
Call ShowData '重新显示数据
End If
End If
End Sub
Private Sub CmdStart_Click()
'启动一场考试,而且只能是考试标志为“新建考试”
Dim rst As ADODB.Recordset
SQL = " Select * from 考试信息表 where 考试标志='新建考试'"
Set rst = SelectSQL(SQL, msg)
If rst.EOF = False Then
rst.Fields("考试标志") = "考试启动"
rst.Update
MsgBox "启动完成!"
Call ShowData '重新显示数据
Else
MsgBox "没有要启动的考试!"
End If
End Sub
Private Sub CmdEnd_Click()
'结束一场考试,而且只能是考试标志为“考试启动”
Dim rst As ADODB.Recordset
SQL = " Select * from 考试信息表 where 考试标志='考试启动'"
Set rst = SelectSQL(SQL, msg)
If rst.EOF = False Then
rst.Fields("考试标志") = "考试结束"
rst.Update
MsgBox "考试结束!"
Call ShowData '重新显示数据
Else
MsgBox "没有要结束的考试!"
End If
End Sub
Private Sub CmdExit_Click()
'退出操作
工作人员管理.Enabled = True
Unload Me
End Sub
Private Sub Form_Unload(Cancel As Integer)
'退出操作
工作人员管理.Enabled = True
rs.Close
Unload Me
End Sub
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -