📄 frmdepartment.frm
字号:
VERSION 5.00
Begin VB.Form Department
BorderStyle = 1 'Fixed Single
Caption = "系部信息管理"
ClientHeight = 1905
ClientLeft = 45
ClientTop = 330
ClientWidth = 4455
LinkTopic = "Form1"
MaxButton = 0 'False
MDIChild = -1 'True
MinButton = 0 'False
ScaleHeight = 1905
ScaleWidth = 4455
Begin VB.TextBox txtNum
Height = 270
Left = 1635
MaxLength = 8
TabIndex = 11
Top = 232
Width = 1995
End
Begin VB.TextBox txtName
Height = 270
Left = 1635
MaxLength = 20
TabIndex = 10
Top = 622
Width = 1995
End
Begin VB.PictureBox picNavigation
AutoSize = -1 'True
BorderStyle = 0 'None
Height = 360
Left = 885
ScaleHeight = 360
ScaleWidth = 2685
TabIndex = 8
Top = 1312
Width = 2685
Begin VB.TextBox txtNews
Height = 300
Left = 690
Locked = -1 'True
TabIndex = 9
TabStop = 0 'False
Top = 15
Width = 1275
End
Begin VB.CommandButton cmdMove
Height = 300
Index = 2
Left = 1950
Picture = "frmDepartment.frx":0000
Style = 1 'Graphical
TabIndex = 6
Top = 15
Width = 345
End
Begin VB.CommandButton cmdMove
Height = 300
Index = 3
Left = 2280
Picture = "frmDepartment.frx":0044
Style = 1 'Graphical
TabIndex = 7
Top = 15
Width = 345
End
Begin VB.CommandButton cmdMove
Height = 300
Index = 0
Left = 30
Picture = "frmDepartment.frx":0093
Style = 1 'Graphical
TabIndex = 4
Top = 15
Width = 345
End
Begin VB.CommandButton cmdMove
Height = 300
Index = 1
Left = 360
Picture = "frmDepartment.frx":00E0
Style = 1 'Graphical
TabIndex = 5
Top = 15
Width = 345
End
End
Begin VB.CommandButton cmdAdd
Caption = "添加"
Height = 300
Left = 727
TabIndex = 0
Top = 997
Width = 735
End
Begin VB.CommandButton cmdDelete
Caption = "删除"
Height = 300
Left = 1477
TabIndex = 1
Top = 997
Width = 735
End
Begin VB.CommandButton cmdExit
Cancel = -1 'True
Caption = "退出"
Height = 315
Left = 2992
TabIndex = 3
Top = 990
Width = 735
End
Begin VB.CommandButton cmdSave
Caption = "保存"
Height = 300
Left = 2227
TabIndex = 2
Top = 997
Width = 735
End
Begin VB.Label Label1
AutoSize = -1 'True
Caption = "系部编号"
Height = 180
Left = 825
TabIndex = 13
Top = 247
Width = 720
End
Begin VB.Label Label2
AutoSize = -1 'True
Caption = "系部名称"
Height = 180
Left = 825
TabIndex = 12
Top = 652
Width = 720
End
End
Attribute VB_Name = "Department"
Attribute VB_GlobalNameSpace = False
Attribute VB_Creatable = False
Attribute VB_PredeclaredId = True
Attribute VB_Exposed = False
Option Explicit
Dim isAdding As Boolean '定义操作状态标志
Dim objDepart As Recordset '用于保存数据库中的系部信息记录
Dim objCn As Connection '用于建立数据库联接
Private Sub cmdExit_Click()
Unload Me '关闭系部信息管理窗体
End Sub
Private Sub Form_Load()
'建立数据库联接
Set objCn = New Connection '实例化联接对象
With objCn '建立数据库联接
.Provider = "SQLOLEDB"
.ConnectionString = "User ID=sa;PWD=123;Data Source=(local);" & _
"Initial Catalog=自测考试"
.Open
End With
'获取系部信息记录
Set objDepart = New Recordset '实例化objDepart对象
With objDepart
Set .ActiveConnection = objCn '设置数据库联接
.CursorLocation = adUseClient '指定使用客户端游标
.CursorType = adOpenStatic '指定使用静态游标
.LockType = adLockOptimistic
.Open "SELECT * FROM 系部信息" '获取系部信息记录
End With
'触发按钮单击事件,显示第一个记录
cmdMove(0).Value = True
End Sub
Private Sub cmdMove_Click(Index As Integer)
With objDepart
Select Case Index '切换当前记录
Case 0 '使第一个记录成为当前记录
If .RecordCount > 0 And Not .BOF Then .MoveFirst
Case 1 '使上一个记录成为当前记录
If .RecordCount > 0 And Not .BOF Then
.MovePrevious
If .BOF Then .MoveFirst
End If
Case 2 '使下一个记录成为当前记录
If .RecordCount > 0 And Not .EOF Then
.MoveNext
If .EOF Then .MoveLast
End If
Case 3 '使最后一个记录成为当前记录
If .RecordCount > 0 And Not .EOF Then .MoveLast
End Select
If .RecordCount < 1 Then
txtNews = "记录:无" '显示无记录提示
txtNum = ""
txtName = ""
Else
'显示当前记录数据
txtNum = .Fields("编号")
txtName = .Fields("名称")
'显示当前记录编号和记录总数
txtNews = "记录:" & .AbsolutePosition & "/" & .RecordCount
End If
End With
If isAdding Then isAdding = False
End Sub
Private Sub cmdAdd_Click()
txtNews = "添加新记录"
txtNum = ""
txtName = ""
isAdding = True
txtNum.SetFocus
End Sub
Private Sub cmdDelete_Click()
'根据是否处于添加记录状态执行不同的操作
If isAdding Then
'退出添加记录状态,显示当前记录
isAdding = False
If objDepart.BOF And objDepart.EOF Then
txtNews = "记录:无" '显示无记录提示
Else
'显示当前记录数据
txtNum = objDepart.Fields("编号")
txtName = objDepart.Fields("名称")
'显示当前记录编号和记录总数
txtNews = "记录:" & objDepart.AbsolutePosition & "/" & objDepart.RecordCount
End If
Else
If objDepart.RecordCount > 0 Then
'检查在教师信息和学生信息表中是否使用了当前记录的编号
'如果被使用,则不执行删除操作
Dim objTemp As New Recordset
With objTemp
Set .ActiveConnection = objCn '设置数据库联接
.CursorLocation = adUseClient '指定使用客户端器游标
.CursorType = adOpenStatic '指定使用静态游标
'获取使用了该编号的第一条记录
.Open "SELECT TOP 1 * FROM 学生信息 WHERE 系部='" & Trim(txtNum) & "'"
If .RecordCount > 0 Then
MsgBox "编号被《学生信息》表使用,不能删除当前记录!", , "系部信息管理"
Exit Sub
End If
.Close
End With
Set objTemp = Nothing
'可以删除,请求确认执行删除操作
If MsgBox("是否删除当前记录?", vbYesNo + vbQuestion, "系部信息管理") = vbYes Then
'执行删除当前记录操作
objDepart.Delete
'显示下一记录数据
cmdMove(2).Value = True
Else
'显示当前记录数据
txtNum = objDepart.Fields("编号")
txtName = objDepart.Fields("名称")
'显示当前记录编号和记录总数
txtNews = "记录:" & objDepart.AbsolutePosition & "/" _
& objDepart.RecordCount
End If
End If
End If
End Sub
Private Sub cmdSave_Click()
If Len(Trim(txtNum)) <> 8 Then
MsgBox "系部编号必须为8位字符串!", vbCritical, "系部信息管理"
txtNum.SetFocus
txtNum.SelStart = 0
txtNum.SelLength = Len(txtNum)
Exit Sub
End If
If Trim(txtName) = "" Then
MsgBox "系部名称不能为空!", vbCritical, "系部信息管理"
txtName.SetFocus
txtName = ""
Exit Sub
End If
'在进一步保存添加的新记录或修改的当前记录之前,检查编号是否重复
Dim objCopy As New Recordset
Set objCopy = objDepart.Clone
If objCopy.RecordCount > 0 Then
objCopy.MoveFirst
objCopy.Find "编号='" & Trim(txtNum) & "'"
If (isAdding And Not objCopy.EOF) Or (Not isAdding And Not objCopy.EOF And _
objCopy.AbsolutePosition <> objDepart.AbsolutePosition) Then
MsgBox "编号:" & Trim(txtNum) & "已被使用,请使用其他编号!", _
vbCritical, "系部信息管理"
txtNum.SetFocus
txtNum.SelStart = 0
txtNum.SelLength = Len(txtNum)
Exit Sub '编号重复,直接退出
End If
End If
'编号不重复,执行下一步保存操作
With objDepart
If isAdding Then
'添加新记录
.AddNew
Else
'保存被修改的当前记录
If objDepart.Fields("编号") <> Trim(txtNum) Then
If MsgBox("修改编号将影响《教师信息》和《学生信息》表中的相关记录,是否继续?", _
vbYesNo + vbQuestion, "系部信息管理") = vbNo Then
'取消保存操作,还原当前记录
txtNum = .Fields("编号")
txtName = .Fields("名称")
Exit Sub '退出过程
End If
End If
End If
'修改记录
.Fields("编号") = Trim(txtNum)
.Fields("名称") = Trim(txtName)
'执行更新操作
objDepart.Update
MsgBox "数据保存成功!", vbInformation, "系部信息管理"
isAdding = False
'显示当前记录编号和记录总数
txtNews = "记录:" & objDepart.AbsolutePosition & "/" & objDepart.RecordCount
End With
End Sub
Private Sub Form_Unload(Cancel As Integer)
objCn.Close '关闭数据联接
Set objCn = Nothing '释放数据库联接
Set objDepart = Nothing '释放记录集对象
End Sub
Private Sub txtName_KeyPress(KeyAscii As Integer)
'如果敲回车键,使保存按钮获得焦点
If KeyAscii = vbKeyReturn Then cmdSave.SetFocus
End Sub
'限制编号输入
Private Sub txtNum_KeyPress(KeyAscii As Integer)
'如果敲回车键,使下一控件获得焦点
If KeyAscii = vbKeyReturn Then SendKeys "{TAB}"
If Not (Chr(KeyAscii) Like "[0-9]" Or KeyAscii = vbKeyBack) Then
KeyAscii = 0 '输入不是数字或退格键,取消输入
End If
End Sub
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -