www.pudn.com > cjg2.rar > 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