?? frmstudent.frm
字號(hào):
Private Sub Form_Load()
Dim objTemp As New Recordset
'建立數(shù)據(jù)庫聯(lián)接
Set objCn = New Connection '實(shí)例化聯(lián)接對(duì)象
With objCn '建立數(shù)據(jù)庫聯(lián)接
.Provider = "SQLOLEDB"
.ConnectionString = "User ID=sa;PWD=123;Data Source=(local);" & _
"Initial Catalog=自測(cè)考試"
.Open
End With
'獲取學(xué)生信息記錄
Set objStudent = New Recordset '實(shí)例化objStudent對(duì)象
With objStudent
Set .ActiveConnection = objCn
.CursorLocation = adUseClient '指定使用客戶端游標(biāo)
.CursorType = adOpenStatic '指定使用靜態(tài)游標(biāo)
.LockType = adLockOptimistic
.Open "SELECT * FROM 學(xué)生信息" '獲取學(xué)生信息登錄信息
End With
'獲取班級(jí)信息
With objTemp
Set .ActiveConnection = objCn
.CursorLocation = adUseClient '指定使用客戶端游標(biāo)
.CursorType = adOpenStatic '指定使用靜態(tài)游標(biāo)
.Open "SELECT * FROM 班級(jí)信息" '獲取班級(jí)信息數(shù)據(jù)
'建立班級(jí)名稱列表
cmbClass.AddItem ""
cmbClass.ItemData(cmbClass.NewIndex) = 0
While Not .EOF
cmbClass.AddItem .Fields("名稱")
cmbClass.ItemData(cmbClass.NewIndex) = Val(.Fields("編號(hào)"))
.MoveNext
Wend
End With
'獲取系部信息
With objTemp
.Close
.Open "SELECT * FROM 系部信息" '獲取系部信息數(shù)據(jù)
'建立系部名稱列表
cmbDept.AddItem ""
cmbDept.ItemData(cmbDept.NewIndex) = 0
While Not .EOF
cmbDept.AddItem .Fields("名稱")
cmbDept.ItemData(cmbDept.NewIndex) = Val(.Fields("編號(hào)"))
.MoveNext
Wend
End With
'建立性別列表
cmbSex.AddItem ""
cmbSex.AddItem "男"
cmbSex.AddItem "女"
cmdMove(0).Value = True '觸發(fā)按鈕單擊事件,顯示第一個(gè)記錄
End Sub
Private Sub cmdMove_Click(Index As Integer)
With objStudent
Select Case Index '切換當(dāng)前記錄
Case 0 '使第一個(gè)記錄成為當(dāng)前記錄
If .RecordCount > 0 And Not .BOF Then .MoveFirst
Case 1 '使上一個(gè)記錄成為當(dāng)前記錄
If .RecordCount > 0 And Not .BOF Then
.MovePrevious
If .BOF Then .MoveFirst
End If
Case 2 '使下一個(gè)記錄成為當(dāng)前記錄
If .RecordCount > 0 And Not .EOF Then
.MoveNext
If .EOF Then .MoveLast
End If
Case 3 '使最后一個(gè)記錄成為當(dāng)前記錄
If .RecordCount > 0 And Not .EOF Then .MoveLast
End Select
Show_Data
End With
If isAdding Then isAdding = False
End Sub
Private Sub cmdAdd_Click()
txtNews = "添加新記錄"
txtName = ""
isAdding = True
txtName.SetFocus
End Sub
Private Sub cmdDelete_Click()
'根據(jù)是否處于添加記錄狀態(tài)執(zhí)行不同的操作
If isAdding Then
'退出添加記錄狀態(tài),顯示當(dāng)前記錄
isAdding = False
If objStudent.RecordCount <= 0 Then
txtNews = "記錄:無" '顯示無記錄提示
Else
Show_Data '顯示當(dāng)前記錄數(shù)據(jù)
End If
Else
If objStudent.RecordCount > 0 Then
If MsgBox("是否刪除當(dāng)前記錄?", vbYesNo + vbQuestion, _
"學(xué)生信息管理") = vbYes Then
objStudent.Delete '執(zhí)行刪除當(dāng)前記錄操作
cmdMove(2).Value = True '顯示下一記錄數(shù)據(jù)
Else
Show_Data '顯示當(dāng)前記錄數(shù)據(jù)
End If
End If
End If
End Sub
Private Sub cmdSave_Click()
Dim objCopy As New Recordset
'在當(dāng)前表中無數(shù)據(jù)和不是添加記錄時(shí),不執(zhí)行保存操作
If Not isAdding And objStudent.RecordCount < 1 Then Exit Sub
If Trim(txtName) = "" Then
MsgBox "學(xué)生姓名不能為空!", vbCritical, "學(xué)生信息管理"
txtName.SetFocus
txtName = ""
ElseIf Not txtNum Like "[1-9]#######" Then
MsgBox "學(xué)號(hào)必須是以非0數(shù)字開頭的8位數(shù)字字符串!", vbCritical, "學(xué)生信息管理"
txtNum.SetFocus
txtNum.SelStart = 0
txtNum.SelLength = 8
ElseIf Not txtCode Like "[1-9]#######" Then
MsgBox "考號(hào)必須是以非0數(shù)字開頭的8位數(shù)字字符串!", vbCritical, "學(xué)生信息管理"
txtCode.SetFocus
txtCode.SelStart = 0
txtCode.SelLength = 8
ElseIf Trim(cmbSex) = "" Then
MsgBox "請(qǐng)選擇性別!", vbCritical, "學(xué)生信息管理"
cmbSex.SetFocus
ElseIf Trim(cmbClass) = "" Then
MsgBox "請(qǐng)選擇所屬班級(jí)!", vbCritical, "學(xué)生信息管理"
cmbClass.SetFocus
ElseIf Trim(cmbDept) = "" Then
MsgBox "請(qǐng)選擇所屬系部!", vbCritical, "學(xué)生信息管理"
cmbDept.SetFocus
ElseIf Not IsDate(txtTime) Then
MsgBox "請(qǐng)輸入有效的考試時(shí)間!", vbCritical, "學(xué)生信息管理"
txtTime.SetFocus
txtTime.SelStart = 0
txtTime.SelLength = Len(txtTime)
ElseIf Trim(txtRoom) = "" Then
MsgBox "請(qǐng)輸入考試教室!", vbCritical, "學(xué)生信息管理"
txtRoom.SetFocus
txtRoom = ""
Else
Set objCopy = objStudent.Clone
With objCopy
If .RecordCount > 0 Then
'檢查學(xué)生學(xué)號(hào)是否重復(fù)
.MoveFirst
.Find "學(xué)號(hào)='" & Trim(txtNum) & "'"
If (isAdding And Not .EOF) Or _
(Not isAdding And Not .EOF And _
.AbsolutePosition <> objStudent.AbsolutePosition) Then
MsgBox "學(xué)號(hào)重復(fù),請(qǐng)修改!", vbCritical, "學(xué)生信息管理"
txtNum.SetFocus
txtNum.SelStart = 0
txtNum.SelLength = Len(txtNum)
Exit Sub
End If
'檢查學(xué)生考號(hào)是否重復(fù)
.MoveFirst
.Find "考號(hào)='" & Trim(txtCode) & "'"
If (isAdding And Not .EOF) Or _
(Not isAdding And Not .EOF And _
.AbsolutePosition <> objStudent.AbsolutePosition) Then
MsgBox "考號(hào)重復(fù),請(qǐng)修改!", vbCritical, "學(xué)生信息管理"
txtCode.SetFocus
txtCode.SelStart = 0
txtCode.SelLength = Len(txtCode)
Exit Sub
End If
If isAdding Then objStudent.AddNew '保存或添加新記錄
Else
If isAdding Then objStudent.AddNew '添加新記錄
End If
objStudent.Fields("姓名") = Trim(txtName)
objStudent.Fields("學(xué)號(hào)") = Trim(txtNum)
objStudent.Fields("考號(hào)") = Trim(txtCode)
objStudent.Fields("性別") = cmbSex
objStudent.Fields("班級(jí)") = cmbClass.ItemData(cmbClass.ListIndex)
objStudent.Fields("系部") = cmbDept.ItemData(cmbDept.ListIndex)
objStudent.Fields("時(shí)間") = txtTime
objStudent.Fields("教室") = txtRoom
objStudent.Update
MsgBox "數(shù)據(jù)保存成功!", vbInformation, "學(xué)生信息管理"
isAdding = False
'顯示當(dāng)前記錄編號(hào)和記錄總數(shù)
txtNews = "記錄:" & objStudent.AbsolutePosition & "/" & objStudent.RecordCount
End With
End If
End Sub
Private Sub Form_Terminate()
End Sub
Private Sub Form_Unload(Cancel As Integer)
objCn.Close '關(guān)閉數(shù)據(jù)聯(lián)接
Set objCn = Nothing '釋放數(shù)據(jù)庫聯(lián)接
Set objStudent = Nothing '釋放記錄集對(duì)象
End Sub
'限制聯(lián)系電話輸入
Private Sub txtPhone_KeyPress(KeyAscii As Integer)
'如果敲回車鍵,使下一控件獲得焦點(diǎn)
If KeyAscii = vbKeyReturn Then SendKeys "{TAB}"
If Not (Chr(KeyAscii) Like "[0-9]" Or KeyAscii = vbKeyBack) Then
KeyAscii = 0 '輸入不是數(shù)字或退格鍵,取消輸入
End If
End Sub
Private Sub txtCode_KeyPress(KeyAscii As Integer)
'如果敲回車鍵,使下一控件獲得焦點(diǎn)
If KeyAscii = vbKeyReturn Then SendKeys "{TAB}"
End Sub
Private Sub txtName_KeyPress(KeyAscii As Integer)
'如果敲回車鍵,使下一控件獲得焦點(diǎn)
If KeyAscii = vbKeyReturn Then SendKeys "{TAB}"
End Sub
Private Sub txtSum_KeyPress(KeyAscii As Integer)
'如果敲回車鍵,使保存按鈕獲得焦點(diǎn)
If KeyAscii = vbKeyReturn Then cmdSave.SetFocus
End Sub
Private Sub Show_Data()
Dim i%
With objStudent
If .RecordCount < 1 Then
txtNews = "記錄:無" '顯示無記錄提示
'清除顯示數(shù)據(jù)
txtName = "": txtNum = ""
txtCode = "": txtTime = "": txtRoom = ""
cmbSex.ListIndex = 0: cmbClass.ListIndex = 0
cmbDept.ListIndex = 0
Else
'顯示當(dāng)前記錄數(shù)據(jù)
txtName = .Fields("姓名"): txtNum = .Fields("學(xué)號(hào)")
txtCode = .Fields("考號(hào)"): txtTime = .Fields("時(shí)間")
txtRoom = .Fields("教室")
'顯示性別
If .Fields("性別") = "男" Then
cmbSex.ListIndex = 1
Else
cmbSex.ListIndex = 2
End If
'顯示班級(jí)名稱
For i = 1 To cmbClass.ListCount - 1
If Val(.Fields("班級(jí)")) = cmbClass.ItemData(i) Then Exit For
Next
cmbClass.ListIndex = i
'顯示系部名稱
For i = 1 To cmbDept.ListCount - 1
If Val(.Fields("系部")) = cmbDept.ItemData(i) Then Exit For
Next
cmbDept.ListIndex = i
'顯示當(dāng)前記錄編號(hào)和記錄總數(shù)
txtNews = "記錄:" & .AbsolutePosition & "/" & .RecordCount
End If
End With
End Sub
Private Sub txtNum_KeyPress(KeyAscii As Integer)
'如果敲回車鍵,使下一控件獲得焦點(diǎn)
If KeyAscii = vbKeyReturn Then SendKeys "{TAB}"
End Sub
Private Sub txtRoom_KeyPress(KeyAscii As Integer)
'如果敲回車鍵,使保存按鈕獲得焦點(diǎn)
If KeyAscii = vbKeyReturn Then cmdSave.SetFocus
End Sub
Private Sub txtTime_KeyPress(KeyAscii As Integer)
'如果敲回車鍵,使下一控件獲得焦點(diǎn)
If KeyAscii = vbKeyReturn Then SendKeys "{TAB}"
End Sub
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -