📄 main_selman.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 + -