⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 main_selman.frm

📁 人事管理系统
💻 FRM
字号:
VERSION 5.00
Object = "{831FDD16-0C5C-11D2-A9FC-0000F8754DA1}#2.0#0"; "MSCOMCTL.OCX"
Begin VB.Form main_selman 
   BorderStyle     =   3  'Fixed Dialog
   Caption         =   "选择员工"
   ClientHeight    =   4290
   ClientLeft      =   45
   ClientTop       =   330
   ClientWidth     =   6150
   Icon            =   "main_selman.frx":0000
   LinkTopic       =   "Form1"
   MaxButton       =   0   'False
   MDIChild        =   -1  'True
   MinButton       =   0   'False
   ScaleHeight     =   4290
   ScaleWidth      =   6150
   ShowInTaskbar   =   0   'False
   Begin MSComctlLib.TreeView treAllEmployee 
      Height          =   3435
      Left            =   105
      TabIndex        =   5
      Top             =   60
      Width           =   2295
      _ExtentX        =   4048
      _ExtentY        =   6059
      _Version        =   393217
      HideSelection   =   0   'False
      Style           =   1
      ImageList       =   "ImageList1"
      Appearance      =   1
   End
   Begin MSComctlLib.ImageList ImageList1 
      Left            =   210
      Top             =   3660
      _ExtentX        =   1005
      _ExtentY        =   1005
      BackColor       =   -2147483643
      ImageWidth      =   20
      ImageHeight     =   20
      MaskColor       =   12632256
      _Version        =   393216
      BeginProperty Images {2C247F25-8591-11D1-B16A-00C0F0283628} 
         NumListImages   =   2
         BeginProperty ListImage1 {2C247F27-8591-11D1-B16A-00C0F0283628} 
            Picture         =   "main_selman.frx":000C
            Key             =   ""
         EndProperty
         BeginProperty ListImage2 {2C247F27-8591-11D1-B16A-00C0F0283628} 
            Picture         =   "main_selman.frx":1666
            Key             =   ""
         EndProperty
      EndProperty
   End
   Begin VB.CommandButton cmdCancel 
      Caption         =   "取消"
      Height          =   360
      Left            =   4815
      TabIndex        =   4
      Top             =   3765
      Width           =   1095
   End
   Begin VB.CommandButton cmdOK 
      Caption         =   "确定"
      Height          =   360
      Left            =   3450
      TabIndex        =   3
      Top             =   3765
      Width           =   1095
   End
   Begin VB.Frame Frame1 
      Height          =   60
      Left            =   -15
      TabIndex        =   2
      Top             =   3570
      Width           =   6120
   End
   Begin VB.CommandButton cmdDelete 
      Caption         =   "<<删除"
      Height          =   360
      Left            =   2490
      TabIndex        =   1
      Top             =   1860
      Width           =   1095
   End
   Begin VB.CommandButton cmdAdd 
      Caption         =   "添加>>"
      Height          =   360
      Left            =   2490
      TabIndex        =   0
      Top             =   1320
      Width           =   1095
   End
   Begin MSComctlLib.TreeView treSelEmployee 
      Height          =   3435
      Left            =   3735
      TabIndex        =   6
      Top             =   75
      Width           =   2295
      _ExtentX        =   4048
      _ExtentY        =   6059
      _Version        =   393217
      HideSelection   =   0   'False
      Style           =   1
      ImageList       =   "ImageList1"
      Appearance      =   1
   End
End
Attribute VB_Name = "main_selman"
Attribute VB_GlobalNameSpace = False
Attribute VB_Creatable = False
Attribute VB_PredeclaredId = True
Attribute VB_Exposed = False
Dim rs As New ADODB.Recordset, rs1 As New ADODB.Recordset
Dim rs2 As New ADODB.Recordset, rs3 As New ADODB.Recordset
Private Sub Form_Load()
  treAllEmployee.Nodes.Clear           '清空员工信息
  Dim mNode As Node             '定义一个Node对象
  '按部门添加员工信息
  rs1.Open "select 部门 from 员工信息表 group by 部门", cnn, adOpenKeyset, adLockOptimistic
  If rs1.RecordCount > 0 Then           '如果表中有记录
    rs1.MoveFirst              '将记录指针移到第一条记录
    Do While rs1.EOF = False           '只要记录不到尾
     '添加一个部门到列表中
     Set mNode = treAllEmployee.Nodes.Add()
     mNode.Text = rs1.Fields("部门"): mNode.Key = rs1.Fields("部门") & "bm": mNode.Image = 2
     '添加该部门下的所有员工
     rs2.Open "select * from 员工信息表 where 部门='" + mNode.Text + "'", cnn, adOpenKeyset, adLockOptimistic
     If rs2.RecordCount > 0 Then
       rs2.MoveFirst            '将记录指针移到第一条记录
       Do While rs2.EOF = False
         treAllEmployee.Nodes.Add mNode.Index, tvwChild, rs2.Fields("编号") & rs2.Fields("姓名") & "yg1", rs2.Fields("姓名"), 1
         rs2.MoveNext            '将记录指针移到下一条记录
       Loop
     End If
     rs2.Close
     rs1.MoveNext             '将记录指针移到下一条记录
   Loop
  End If
  rs1.Close
  '按单个员工添加员工信息
  rs3.Open "select * from 员工信息表", cnn, adOpenKeyset, adLockOptimistic
  If rs3.RecordCount > 0 Then
    rs3.MoveFirst              '将记录指针移到第一条记录
    Do While rs3.EOF = False
      Set mNode = treAllEmployee.Nodes.Add()
      mNode.Text = rs3.Fields("姓名"): mNode.Key = rs3.Fields("编号") & rs3.Fields("姓名") & "yg2"
      mNode.Image = 1
      rs3.MoveNext             '将记录指针移到下一条记录
    Loop
  End If
  rs3.Close
End Sub

Private Sub cmdAdd_Click()
  '按部门员工添加员工数据到右侧列表中
  If Right(treAllEmployee.Nodes(treAllEmployee.SelectedItem.Index).Key, 2) = "bm" Then
     rs1.Open "select 部门 from 员工信息表 where 部门='" + treAllEmployee.SelectedItem.Text + "' group by 部门", cnn, adOpenKeyset, adLockOptimistic
     If rs1.RecordCount > 0 Then          '如果表中有记录
       rs1.MoveFirst             '将记录指针移到第一条记录
       Do While rs1.EOF = False          '只要记录不到尾
         '添加部门节点到右侧列表中
         Set mNode = treSelEmployee.Nodes.Add()
         mNode.Text = rs1.Fields("部门")
         mNode.Key = rs1.Fields("部门") & rs1.Fields("部门") & "selbm": mNode.Image = 2
         '添加该部门下的员工节点到右侧列表中
        rs2.Open "select * from 员工信息表 where 部门='" + mNode.Text + "'", cnn, adOpenKeyset, adLockOptimistic
        If rs2.RecordCount > 0 Then
          rs2.MoveFirst            '将记录指针移到第一条记录
          Do While rs2.EOF = False
            treSelEmployee.Nodes.Add mNode.Index, tvwChild, rs2.Fields("编号") & rs2.Fields("姓名") & "selyg1", rs2.Fields("姓名"), 1
            rs2.MoveNext            '将记录指针移到下一条记录
          Loop
        End If
        rs2.Close              '关闭数据集对象
        rs1.MoveNext             '将记录指针移到下一条记录
      Loop
     End If
     rs1.Close              '关闭数据集对象
  End If
 '按单个员工添加员工数据到右侧列表中
 If Right(treAllEmployee.Nodes(treAllEmployee.SelectedItem.Index).Key, 3) = "yg1" Or Right(treAllEmployee.Nodes(treAllEmployee.SelectedItem.Index).Key, 3) = "yg2" Then
    '添加员工节点到右侧列表中
    rs3.Open "select * from 员工信息表 where 编号='" + Left(treAllEmployee.SelectedItem.Key, 5) + "'", cnn, adOpenKeyset, adLockOptimistic
    If rs3.RecordCount > 0 Then
        Set mNode = treSelEmployee.Nodes.Add()
        mNode.Text = rs3.Fields("姓名")
        mNode.Key = rs3.Fields("编号") & rs3.Fields("姓名") & "selyg2": mNode.Image = 1
    End If
    rs3.Close              '关闭数据集对象
  End If
End Sub
Private Sub cmdDelete_Click()
  treSelEmployee.Nodes.Remove (treSelEmployee.SelectedItem.Index)
End Sub

Private Sub cmdOK_Click()
  Dim i As Integer              '定义一个整型变量
  With main_kqgl_addmodify
    '遍历右侧列表中的员工数据,判断出勤记录表中是否存在该员工的出勤记录,如果不存在则将其添加到出勤记录表中
    For i = 1 To treSelEmployee.Nodes.Count
      If Right(treSelEmployee.Nodes(i).Key, 6) = "selyg1" Then
        rs.Open "select * from 出勤记录表 where 日期='" + Str(.DTPicker1.Value) + "'and 上下班情况='" + .s + "'and 员工编号='" + Left(treSelEmployee.Nodes(i).Key, 5) + "'", cnn, adOpenKeyset, adLockOptimistic
        If rs.RecordCount > 0 Then
        Else
          rs.AddNew              '添加新记录
          '给字段赋值
          rs.Fields("员工编号") = Left(treSelEmployee.Nodes(i).Key, 5)
          rs.Fields("员工姓名") = treSelEmployee.Nodes(i).Text
          Set rs1 = cnn.Execute("select * from 时间设置表")
          '根据Option1单选按钮的内容给上班情况赋值
          If .Option1(0) = True Then
             '根据时间设置表中的上班时间,判断上班是正常还是异常
             rs.Fields("上下班情况") = .Option1(0).Caption
             If .MaskEdBoxTime.Text <> Left(rs1.Fields("上班时间"), 5) Then
               rs.Fields("是否异常") = "异常"
               rs.Fields("异常时间") = DateDiff("n", Left(rs1.Fields("上班时间"), 5), .MaskEdBoxTime.Text) & "分钟"
             Else
               rs.Fields("是否异常") = "正常"
             End If
          Else
             '根据时间设置表中的下班时间,判断下班是正常还是异常
             rs.Fields("上下班情况") = .Option1(1).Caption
             If .MaskEdBoxTime.Text <> Left(rs1.Fields("下班时间"), 5) Then
               rs.Fields("是否异常") = "异常"
               rs.Fields("异常时间") = DateDiff("n", .MaskEdBoxTime.Text, Left(rs1.Fields("下班时间"), 5)) & "分钟"
             Else
               rs.Fields("是否异常") = "正常"
             End If
          End If
          rs.Fields("上下班时间") = .MaskEdBoxTime
          rs.Fields("日期") = .DTPicker1.Value
          rs1.Close              '关闭数据集对象rs1
          rs.Update              '更新数据表
        End If
        rs.Close               '关闭数据集对象rs
      End If
      If Right(treSelEmployee.Nodes(i).Key, 6) = "selyg2" Then
        rs.Open "select * from 出勤记录表 where 日期='" + Str(.DTPicker1.Value) + "'and 上下班情况='" + .s + "'and 员工编号='" + Left(treSelEmployee.Nodes(i).Key, 5) + "'", cnn, adOpenKeyset, adLockOptimistic
        If rs.RecordCount > 0 Then
        Else
          rs.AddNew              '添加新记录
          rs.Fields("员工编号") = Left(treSelEmployee.Nodes(i).Key, 5)
          rs.Fields("员工姓名") = treSelEmployee.Nodes(i).Text
          Set rs1 = cnn.Execute("select * from 时间设置表")
          '根据Option1单选按钮的内容给上下班情况赋值
          If .Option1(0) = True Then
             rs.Fields("上下班情况") = .Option1(0).Caption
             '根据时间设置表中的上班时间,判断上班是正常还是异常
             If .MaskEdBoxTime.Text <> Left(rs1.Fields("上班时间"), 5) Then
               rs.Fields("是否异常") = "异常"
               rs.Fields("异常时间") = DateDiff("n", Left(rs1.Fields("上班时间"), 5), .MaskEdBoxTime.Text) & "分钟"
             Else
               rs.Fields("是否异常") = "正常"
             End If
          Else
             rs.Fields("上下班情况") = .Option1(1).Caption
             '根据时间设置表中的下班时间,判断下班是正常还是异常
             If .MaskEdBoxTime.Text <> Left(rs1.Fields("下班时间"), 5) Then
               rs.Fields("是否异常") = "异常"
               rs.Fields("异常时间") = DateDiff("n", .MaskEdBoxTime.Text, Left(rs1.Fields("下班时间"), 5)) & "分钟"
             Else
               rs.Fields("是否异常") = "正常"
             End If
          End If
          rs.Fields("上下班时间") = .MaskEdBoxTime
          rs.Fields("日期") = .DTPicker1.Value
          rs1.Close              '关闭数据集对象rs1
          rs.Update              '更新数据表
        End If
        rs.Close               '关闭数据集对象rs
      End If
    Next i
    .Adodc2.Refresh              '刷新ADO控件
    Unload Me               '卸载窗体
  End With
End Sub

Private Sub cmdCancel_Click()
  Unload Me
End Sub
Private Sub treAllEmployee_NodeClick(ByVal Node As MSComctlLib.Node)
  If treSelEmployee.Nodes.Count > 0 Then      '如果右侧列表框中有员工数据
     '遍历该右侧列表框,查找是否与左侧所选员工相同
     For i = 1 To treSelEmployee.Nodes.Count
        If Node.Text = treSelEmployee.Nodes(i).Text Then  '如果左右两侧列表中的数据相同
          cmdAdd.Enabled = False       '"添加>>"按钮不可用
          Exit For
        Else            '否则
          cmdAdd.Enabled = True       '"添加>>"按钮可用
        End If
     Next i
  End If
  cmdDelete.Enabled = False
End Sub
Private Sub treSelEmployee_NodeClick(ByVal Node As MSComctlLib.Node)
  cmdDelete.Enabled = True
End Sub

⌨️ 快捷键说明

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