formstudent.frm

来自「vb数据库编程资料」· FRM 代码 · 共 424 行

FRM
424
字号
VERSION 5.00
Object = "{00028C01-0000-0000-0000-000000000046}#1.0#0"; "DBGRID32.OCX"
Object = "{86CF1D34-0C5F-11D2-A9FC-0000F8754DA1}#2.0#0"; "MSCOMCT2.OCX"
Begin VB.Form frmStudent 
   BorderStyle     =   1  'Fixed Single
   Caption         =   "学生管理"
   ClientHeight    =   7185
   ClientLeft      =   45
   ClientTop       =   330
   ClientWidth     =   8145
   LinkTopic       =   "Form1"
   MaxButton       =   0   'False
   MinButton       =   0   'False
   ScaleHeight     =   7185
   ScaleWidth      =   8145
   StartUpPosition =   2  '屏幕中心
   Begin VB.ComboBox cmbSex 
      DataField       =   "Sex"
      DataSource      =   "dataStudent"
      Height          =   300
      ItemData        =   "FormStudent.frx":0000
      Left            =   2400
      List            =   "FormStudent.frx":000A
      TabIndex        =   3
      Text            =   "男"
      Top             =   1200
      Width           =   2895
   End
   Begin MSComCtl2.DTPicker dtpBirthday 
      DataField       =   "Birthday"
      DataSource      =   "dataStudent"
      Height          =   255
      Left            =   2400
      TabIndex        =   4
      Top             =   1560
      Width           =   2895
      _ExtentX        =   5106
      _ExtentY        =   450
      _Version        =   393216
      Format          =   23724033
      CurrentDate     =   38011
   End
   Begin VB.ComboBox cmbClass 
      DataField       =   "ClassID"
      DataSource      =   "dataStudent"
      Height          =   300
      ItemData        =   "FormStudent.frx":0016
      Left            =   2400
      List            =   "FormStudent.frx":0018
      TabIndex        =   0
      Top             =   120
      Width           =   2895
   End
   Begin VB.TextBox txtStudentID 
      DataField       =   "StudentID"
      DataSource      =   "dataStudent"
      Height          =   270
      Left            =   2400
      MaxLength       =   8
      TabIndex        =   1
      Top             =   480
      Width           =   2895
   End
   Begin VB.TextBox txtName 
      DataField       =   "Name"
      DataSource      =   "dataStudent"
      Height          =   270
      Left            =   2400
      MaxLength       =   8
      TabIndex        =   2
      Top             =   840
      Width           =   2895
   End
   Begin VB.TextBox txtNation 
      DataField       =   "Native"
      DataSource      =   "dataStudent"
      Height          =   270
      Left            =   2400
      MaxLength       =   16
      TabIndex        =   5
      Top             =   1920
      Width           =   2895
   End
   Begin VB.Data dataValid 
      Caption         =   "验证"
      Connect         =   "Access"
      DatabaseName    =   "E:\Book Edit\VisualBasic数据库编程教程\ch12\Student.mdb"
      DefaultCursorType=   0  '缺省游标
      DefaultType     =   2  '使用 ODBC
      Exclusive       =   0   'False
      Height          =   405
      Left            =   5520
      Options         =   0
      ReadOnly        =   0   'False
      RecordsetType   =   1  'Dynaset
      RecordSource    =   "Student"
      Top             =   2040
      Visible         =   0   'False
      Width           =   2535
   End
   Begin VB.CommandButton cmdDelete 
      Caption         =   "删除(&D)"
      Height          =   375
      Left            =   5520
      TabIndex        =   7
      Top             =   600
      Width           =   1215
   End
   Begin VB.Data dataStudent 
      Caption         =   "学生信息"
      Connect         =   "Access"
      DatabaseName    =   "E:\Book Edit\VisualBasic数据库编程教程\ch12\Student.mdb"
      DefaultCursorType=   0  '缺省游标
      DefaultType     =   2  '使用 ODBC
      Exclusive       =   0   'False
      Height          =   435
      Left            =   5520
      Options         =   0
      ReadOnly        =   0   'False
      RecordsetType   =   0  'Table
      RecordSource    =   "Student"
      Top             =   1560
      Width           =   2535
   End
   Begin VB.CommandButton cmdAdd 
      Caption         =   "添加(&A)"
      Height          =   375
      Left            =   5520
      TabIndex        =   6
      Top             =   120
      Width           =   1215
   End
   Begin VB.CommandButton cmdQuit 
      Caption         =   "退出(&Q)"
      Height          =   375
      Left            =   5520
      TabIndex        =   8
      Top             =   1080
      Width           =   1215
   End
   Begin VB.CommandButton cmdSave 
      Caption         =   "保存(&S)"
      Height          =   375
      Left            =   6840
      TabIndex        =   10
      Top             =   600
      Width           =   1215
   End
   Begin VB.CommandButton cmdModify 
      Caption         =   "修改(&M)"
      Height          =   375
      Left            =   6840
      TabIndex        =   9
      Top             =   120
      Width           =   1215
   End
   Begin VB.CommandButton cmdCancel 
      Cancel          =   -1  'True
      Caption         =   "放弃(&C)"
      Height          =   375
      Left            =   6840
      TabIndex        =   11
      Top             =   1080
      Width           =   1215
   End
   Begin MSDBGrid.DBGrid dbgStudent 
      Bindings        =   "FormStudent.frx":001A
      Height          =   4695
      Left            =   120
      OleObjectBlob   =   "FormStudent.frx":0034
      TabIndex        =   12
      Top             =   2400
      Width           =   7935
   End
   Begin VB.Label Label7 
      Alignment       =   1  'Right Justify
      Caption         =   "性别"
      Height          =   255
      Left            =   1320
      TabIndex        =   18
      Top             =   1200
      Width           =   975
   End
   Begin VB.Label Label6 
      Alignment       =   1  'Right Justify
      Caption         =   "出生日期"
      Height          =   255
      Left            =   1320
      TabIndex        =   17
      Top             =   1560
      Width           =   975
   End
   Begin VB.Label Label1 
      Alignment       =   1  'Right Justify
      Caption         =   "学号"
      Height          =   255
      Left            =   1320
      TabIndex        =   16
      Top             =   480
      Width           =   975
   End
   Begin VB.Label Label2 
      Alignment       =   1  'Right Justify
      Caption         =   "姓名"
      Height          =   255
      Left            =   1320
      TabIndex        =   15
      Top             =   840
      Width           =   975
   End
   Begin VB.Label Label3 
      Alignment       =   1  'Right Justify
      Caption         =   "籍贯"
      Height          =   255
      Left            =   1320
      TabIndex        =   14
      Top             =   1920
      Width           =   975
   End
   Begin VB.Label Label4 
      Alignment       =   1  'Right Justify
      Caption         =   "所在班级"
      Height          =   255
      Left            =   1320
      TabIndex        =   13
      Top             =   195
      Width           =   975
   End
End
Attribute VB_Name = "frmStudent"
Attribute VB_GlobalNameSpace = False
Attribute VB_Creatable = False
Attribute VB_PredeclaredId = True
Attribute VB_Exposed = False
Dim BookMK
Dim InEditMode As Boolean

Private Sub cmbClass_Change()
  If txtStudentID.Text = "" Then
    txtStudentID.Text = cmbClass.Text
  End If
End Sub

Private Sub cmdAdd_Click()
  If dataStudent.Recordset.RecordCount > 0 Then
    BookMK = dataStudent.Recordset.Bookmark
  Else
    BookMK = Null
  End If
  
  dataStudent.Recordset.AddNew
  InEditMode = True
  ToggleEditMode
  
  dtpBirthday.Year = Year(Date) - 18
  cmbClass.ListIndex = 0
  cmbSex.ListIndex = 0
  txtStudentID.Text = cmbClass.Text
End Sub

Private Sub cmdCancel_Click()
  dataStudent.UpdateControls
  InEditMode = False
  ToggleEditMode
  
  If Len(BookMK) > 0 Then
    dataStudent.Recordset.Bookmark = BookMK
  ElseIf dataStudent.Recordset.RecordCount > 0 Then
    dataStudent.Recordset.MoveFirst
  End If
End Sub

Private Sub cmdDelete_Click()
  Dim Msg$
  
  If dataStudent.Recordset.EOF Then Exit Sub
    
  dataValid.RecordSource = "SELECT StudentID FROM Change WHERE StudentID='" & dataStudent.Recordset("StudentID") & "'"
  dataValid.Refresh
  If Not dataValid.Recordset.EOF Then
    MsgBox "该生还存在学籍变更记录,所以不能删除该生!"
    Exit Sub
  End If
  dataValid.RecordSource = "SELECT StudentID FROM Reward WHERE StudentID='" & dataStudent.Recordset("StudentID") & "'"
  dataValid.Refresh
  If Not dataValid.Recordset.EOF Then
    MsgBox "该生还存在奖励记录,所以不能删除该生!"
    Exit Sub
  End If
  dataValid.RecordSource = "SELECT StudentID FROM Punish WHERE StudentID='" & dataStudent.Recordset("StudentID") & "'"
  dataValid.Refresh
  If Not dataValid.Recordset.EOF Then
    MsgBox "该生还存在处罚变更记录,所以不能删除该生!"
    Exit Sub
  End If
  
  Msg = MsgBox("确定要删除记录吗?", vbYesNo)
  If Msg = vbYes Then
    dataStudent.Recordset.Delete
    dataStudent.Recordset.MoveNext
    If dataStudent.Recordset.EOF And (dataStudent.Recordset.RecordCount > 0) Then
      dataStudent.Recordset.MoveLast
    End If
  End If
End Sub

Private Sub cmdModify_Click()
  If dataStudent.Recordset.EOF Then Exit Sub
  
  BookMK = dataStudent.Recordset.Bookmark
  dataStudent.Recordset.Edit
  InEditMode = True
  ToggleEditMode
  txtStudentID.Locked = True
End Sub

Private Sub cmdQuit_Click()
  Unload Me
End Sub

Private Sub cmdSave_Click()
  txtStudentID.Text = Replace(Trim(txtStudentID.Text), "'", "")
  txtName.Text = Replace(Trim(txtName.Text), "'", "")
  txtNation.Text = Replace(Trim(txtNation.Text), "'", "")

  If cmbClass.ListIndex < 0 Then
    MsgBox "所在班级编号输入不正确", , "输入错误"
    cmbClass.SetFocus
    Exit Sub
  ElseIf cmbSex.ListIndex < 0 Then
    MsgBox "请选择性别!", , "输入错误"
    cmbSex.SetFocus
    Exit Sub
  ElseIf dtpBirthday.Value = "" Then
    MsgBox "请选择一个出生日期!", , "输入错误"
    dtpBirthday.SetFocus
    Exit Sub
  ElseIf txtStudentID.Text = "" Then
    MsgBox "学号不能为空!", , "输入错误"
    txtStudentID.SetFocus
    Exit Sub
  ElseIf txtName.Text = "" Then
    MsgBox "姓名不能为空!", , "输入错误"
    txtName.SetFocus
    Exit Sub
  End If
  
  If Not txtStudentID.Locked Then
    dataValid.RecordSource = "SELECT * FROM Student WHERE StudentID='" & txtStudentID.Text & "'"
    dataValid.Refresh
    If Not dataValid.Recordset.EOF Then
      Msg = "学号[" & txtStudentID.Text & "(" & dataValid.Recordset("Name") & ")" & "]已经存在,不能重复。"
      MsgBox Msg
      txtStudentID.SetFocus
      Exit Sub
    End If
  End If
  
  dataStudent.UpdateRecord
  InEditMode = False
  ToggleEditMode
  
  If Len(BookMK) > 0 Then
    dataStudent.Recordset.Bookmark = BookMK
  ElseIf dataStudent.Recordset.RecordCount > 0 Then
    dataStudent.Recordset.MoveFirst
  End If
End Sub

Private Sub Form_Load()
  dataStudent.DatabaseName = App.Path & "\Student.mdb"
  dataValid.DatabaseName = App.Path & "\Student.mdb"
  dataValid.Visible = False
  
  FullClass
  
  InEditMode = False
  ToggleEditMode
  
  If cmbClass.ListCount < 1 Then
    MsgBox "目前班级库为空,请先进行班级管理,然后再进行学生管理!"
    cmdAdd.Enabled = False
  End If
End Sub

Private Sub ToggleEditMode()
  txtStudentID.Locked = Not InEditMode
  txtName.Locked = Not InEditMode
  txtNation.Locked = Not InEditMode
  
  cmbClass.Enabled = InEditMode
  cmbSex.Enabled = InEditMode
  dtpBirthday.Enabled = InEditMode
  
  cmdAdd.Enabled = Not InEditMode
  cmdDelete.Enabled = Not InEditMode
  cmdQuit.Enabled = Not InEditMode
  cmdModify.Enabled = Not InEditMode
  dbgStudent.Enabled = Not InEditMode
  
  dataStudent.Enabled = Not InEditMode
  
  cmdSave.Enabled = InEditMode
  cmdCancel.Enabled = InEditMode
End Sub

Private Sub FullClass()
  dataValid.RecordSource = "SELECT * FROM Class"
  dataValid.Refresh
  cmbClass.Clear
  While Not dataValid.Recordset.EOF
    cmbClass.AddItem dataValid.Recordset("ClassID")
    dataValid.Recordset.MoveNext
  Wend
End Sub

Private Sub Form_Unload(Cancel As Integer)
  If InEditMode Then
    dataStudent.UpdateControls
    InEditMode = False
    ToggleEditMode
  End If
End Sub

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?