📄 frmempstatuslist.frm
字号:
VERSION 5.00
Object = "{831FDD16-0C5C-11D2-A9FC-0000F8754DA1}#2.0#0"; "MSCOMCTL.OCX"
Object = "{86CF1D34-0C5F-11D2-A9FC-0000F8754DA1}#2.0#0"; "MSCOMCT2.OCX"
Begin VB.Form frmEmpStatusList
Caption = "员工工作状况列表"
ClientHeight = 6015
ClientLeft = 60
ClientTop = 345
ClientWidth = 8415
Icon = "frmEmpStatusList.frx":0000
LinkTopic = "Form1"
LockControls = -1 'True
MDIChild = -1 'True
ScaleHeight = 6015
ScaleWidth = 8415
WindowState = 2 'Maximized
Begin VB.CommandButton cmdQuit
Caption = "关闭(&C)"
Height = 375
Left = 7200
TabIndex = 6
Top = 5520
Width = 1095
End
Begin VB.CommandButton cmdPrint
Caption = "打印(&P)"
Height = 375
Left = 1080
TabIndex = 8
Top = 5520
Width = 975
End
Begin VB.CommandButton cmdPreview
Caption = "预览(&V)"
Height = 375
Left = 120
TabIndex = 7
Top = 5520
Width = 975
End
Begin VB.CommandButton cmdRefresh
Caption = "刷新(&R)"
Height = 375
Left = 6120
TabIndex = 5
Top = 5520
Width = 1095
End
Begin VB.Frame fra1
Caption = "员工工作状况"
BeginProperty Font
Name = "宋体"
Size = 10.5
Charset = 134
Weight = 400
Underline = 0 'False
Italic = 0 'False
Strikethrough = 0 'False
EndProperty
Height = 4575
Left = 120
TabIndex = 11
Top = 840
Width = 8175
Begin MSComctlLib.ListView lsvService
Height = 4215
Left = 120
TabIndex = 4
Top = 240
Width = 7935
_ExtentX = 13996
_ExtentY = 7435
View = 3
LabelEdit = 1
LabelWrap = 0 'False
HideSelection = 0 'False
GridLines = -1 'True
_Version = 393217
ForeColor = -2147483640
BackColor = -2147483643
Appearance = 1
BeginProperty Font {0BE35203-8F91-11CE-9DE3-00AA004BB851}
Name = "宋体"
Size = 9.75
Charset = 134
Weight = 400
Underline = 0 'False
Italic = 0 'False
Strikethrough = 0 'False
EndProperty
NumItems = 6
BeginProperty ColumnHeader(1) {BDD1F052-858B-11D1-B16A-00C0F0283628}
Text = "员工姓名"
Object.Width = 2540
EndProperty
BeginProperty ColumnHeader(2) {BDD1F052-858B-11D1-B16A-00C0F0283628}
Alignment = 2
SubItemIndex = 1
Text = "员工工号"
Object.Width = 2540
EndProperty
BeginProperty ColumnHeader(3) {BDD1F052-858B-11D1-B16A-00C0F0283628}
Alignment = 2
SubItemIndex = 2
Text = "服务人数"
Object.Width = 2540
EndProperty
BeginProperty ColumnHeader(4) {BDD1F052-858B-11D1-B16A-00C0F0283628}
Alignment = 2
SubItemIndex = 3
Text = "平均服务时间"
Object.Width = 3175
EndProperty
BeginProperty ColumnHeader(5) {BDD1F052-858B-11D1-B16A-00C0F0283628}
Alignment = 2
SubItemIndex = 4
Text = "最长服务时间"
Object.Width = 3175
EndProperty
BeginProperty ColumnHeader(6) {BDD1F052-858B-11D1-B16A-00C0F0283628}
Alignment = 2
SubItemIndex = 5
Text = "弃号人数"
Object.Width = 2540
EndProperty
End
End
Begin VB.Frame fra2
Caption = "服务时间"
BeginProperty Font
Name = "宋体"
Size = 10.5
Charset = 134
Weight = 400
Underline = 0 'False
Italic = 0 'False
Strikethrough = 0 'False
EndProperty
Height = 615
Index = 0
Left = 120
TabIndex = 10
Top = 120
Width = 2295
Begin MSComCtl2.DTPicker dtpService
Height = 300
Left = 120
TabIndex = 0
Top = 240
Width = 2055
_ExtentX = 3625
_ExtentY = 529
_Version = 393216
Format = 62980097
CurrentDate = 37580
End
End
Begin VB.Frame fra2
Caption = "服务员工"
BeginProperty Font
Name = "宋体"
Size = 10.5
Charset = 134
Weight = 400
Underline = 0 'False
Italic = 0 'False
Strikethrough = 0 'False
EndProperty
Height = 615
Index = 1
Left = 2520
TabIndex = 9
Top = 120
Width = 5775
Begin VB.OptionButton opt1
Caption = "全部员工"
Height = 180
Index = 0
Left = 240
TabIndex = 1
Top = 300
Value = -1 'True
Width = 1095
End
Begin VB.OptionButton opt1
Caption = "指定员工"
Height = 180
Index = 1
Left = 1440
TabIndex = 2
Top = 300
Width = 1095
End
Begin VB.ComboBox cboEmployee
Enabled = 0 'False
Height = 300
Left = 2640
Style = 2 'Dropdown List
TabIndex = 3
Top = 240
Width = 3015
End
End
End
Attribute VB_Name = "frmEmpStatusList"
Attribute VB_GlobalNameSpace = False
Attribute VB_Creatable = False
Attribute VB_PredeclaredId = True
Attribute VB_Exposed = False
Option Explicit
Dim m_tagErrInfo As TYPE_ERRORINFO
Dim m_sDate As String
Dim m_bEmpCode As Boolean
Dim m_sEmpCode As String
Private Sub cmdQuit_Click()
On Error Resume Next
Unload Me
End Sub
Private Sub cmdRefresh_Click()
On Error Resume Next
m_sDate = dtpService.Value
If opt1(0).Value = True Then
m_bEmpCode = True
m_sEmpCode = ""
Else
If cboEmployee.ListIndex < 0 Then
MsgBox "请选择需要统计的员工名称。", vbOKOnly, "系统提示"
Exit Sub
End If
m_bEmpCode = False
m_sEmpCode = CStr(cboEmployee.ItemData(cboEmployee.ListIndex))
End If
InitListInfo
End Sub
Private Sub Form_Load()
On Error GoTo ERROR_EXIT
Dim rs As New ADODB.Recordset, cmd As New ADODB.Command
Dim strSQL As String, i As Integer
cboEmployee.Clear
dtpService.MaxDate = DateAdd("d", -1, Date)
dtpService.Value = DateAdd("d", -1, Date)
m_sDate = dtpService.Value
m_bEmpCode = True
m_sEmpCode = ""
'连接数据库
cmd.ActiveConnection = dbMyDB
cmd.CommandType = adCmdText
'查询数据库
strSQL = "SELECT * FROM Employee WHERE nouse_yesno = 0"
cmd.CommandText = strSQL
rs.CursorLocation = adUseClient
rs.Open cmd, , adOpenStatic, adLockReadOnly
If Not rs.EOF And rs.RecordCount > 0 Then
rs.MoveFirst
For i = 1 To rs.RecordCount
cboEmployee.AddItem rs!name_c
cboEmployee.ItemData(i - 1) = rs!ep_id
rs.MoveNext
Next i
End If
rs.Close
If rs.State = adStateOpen Then rs.Close
Set rs = Nothing
Set cmd = Nothing
InitListInfo
Exit Sub
ERROR_EXIT:
m_tagErrInfo.strErrDate = Format(Now, "yyyy-mm-dd hh:mm:ss")
m_tagErrInfo.strErrFile = "frmEmpStatusList"
m_tagErrInfo.strErrFunc = "Form_Load"
m_tagErrInfo.nErrNum = Err.Number
m_tagErrInfo.strErrDesc = Error(Err.Number)
If Err.Number <> 0 Then Err.Clear
modErrorInfo.WriteErrLog m_tagErrInfo
End Sub
Private Sub Form_Resize()
On Error Resume Next
Dim i As Integer, j As Integer
If Me.WindowState = 1 Then Exit Sub
If Me.Width < 8535 Then Me.Width = 8535
If Me.Height < 6420 Then Me.Height = 6420
i = Me.Width - 8535
j = Me.Height - 6420
'修改宽度
fra2(1).Width = i + 5775
cboEmployee.Width = i + 3015
fra1.Width = i + 8175
lsvService.Width = i + 7935
cmdRefresh.Left = i + 6120
cmdQuit.Left = i + 7200
'修改高度位置
fra1.Height = j + 4575
lsvService.Height = j + 4215
cmdPreview.Top = j + 5520
cmdPrint.Top = j + 5520
cmdRefresh.Top = j + 5520
cmdQuit.Top = j + 5520
End Sub
Private Sub Form_Terminate()
On Error Resume Next
Set frmEmpStatusList = Nothing
End Sub
Private Sub opt1_Click(Index As Integer)
On Error Resume Next
If Index = 0 And opt1(0).Value = True Then
cboEmployee.Enabled = False
ElseIf Index = 1 And opt1(1).Value = True Then
cboEmployee.Enabled = True
End If
End Sub
'//////////////////////////////////////////////////////////////////////////////////////
'/显示当前的数据
Private Function InitListInfo() As Boolean
On Error GoTo ERROR_EXIT
Dim rs As New ADODB.Recordset, cmd As New ADODB.Command
Dim strSQL As String, i As Integer, j As Integer
Dim itmX As ListItem, sName As String, sCode As String
Dim sTime1 As String, sTime2 As String
Dim l As Long, n As Long, m As Long
Dim iHour As Long, iMinute As Long, iSecond As Long
Dim iCount As Integer, iGiveup As Integer
Dim sEmployee() As String
lsvService.ListItems.Clear
'初始化员工编号
If cboEmployee.ListCount < 1 Then
InitListInfo = True
Exit Function
End If
If m_bEmpCode = False Then
ReDim sEmployee(0)
sEmployee(0) = m_sEmpCode
Else
ReDim sEmployee(cboEmployee.ListCount - 1)
For i = 1 To cboEmployee.ListCount
sEmployee(i - 1) = cboEmployee.ItemData(i - 1)
Next i
End If
'连接数据库
cmd.ActiveConnection = dbMyDB
cmd.CommandType = adCmdText
'查询数据库
For i = 0 To UBound(sEmployee)
strSQL = "SELECT * FROM VIEW_LIST_Emp_Service WHERE cq_start_data = '" & DateValue(m_sDate) & _
"' AND ep_id = '" & sEmployee(i) & "' ORDER BY cq_code"
cmd.CommandText = strSQL
rs.CursorLocation = adUseClient
rs.Open cmd, , adOpenStatic, adLockReadOnly
If Not rs.EOF And rs.RecordCount > 0 Then
rs.MoveFirst
sName = ""
m = 0
n = 0
iCount = 0
iGiveup = 0
For j = 1 To rs.RecordCount
If rs!end_state <> 1 And rs!end_state <> 2 Then
iCount = iCount + 1
If sName <> rs!name_c Then
sName = rs!name_c
End If
If Not IsNull(rs!ep_code) Then
sCode = rs!st_name
End If
'服务时间
If Not IsNull(rs!start_time) Then
sTime1 = TimeValue(rs!start_time)
End If
If Not IsNull(rs!end_time) Then
sTime2 = TimeValue(rs!end_time)
End If
l = DateDiff("s", sTime1, sTime2)
m = l + m '总服务时间
If l > n Then n = l '最长服务时间
End If
If rs!end_state = 1 Then
iGiveup = iGiveup + 1
End If
rs.MoveNext
Next j
'平均服务时间
m = m / iCount
iHour = m / 3600
iMinute = (m - iHour * 3600) / 60
iSecond = m - iHour * 3600 - iMinute * 60
sTime1 = TimeSerial(iHour, iMinute, iSecond)
'最长服务时间
iHour = n / 3600
iMinute = (n - iHour * 3600) / 60
iSecond = n - iHour * 3600 - iMinute * 60
sTime2 = TimeSerial(iHour, iMinute, iSecond)
'显示数据
Set itmX = lsvService.ListItems.Add(, , sName)
itmX.SubItems(1) = sCode
itmX.SubItems(2) = iCount
itmX.SubItems(3) = sTime1
itmX.SubItems(4) = sTime2
itmX.SubItems(5) = iGiveup
End If
rs.Close
Next i
If rs.State = adStateOpen Then rs.Close
Set rs = Nothing
Set cmd = Nothing
InitListInfo = True
Exit Function
ERROR_EXIT:
m_tagErrInfo.strErrDate = Format(Now, "yyyy-mm-dd hh:mm:ss")
m_tagErrInfo.strErrFile = "frmEmpStatusList"
m_tagErrInfo.strErrFunc = "InitListInfo"
m_tagErrInfo.nErrNum = Err.Number
m_tagErrInfo.strErrDesc = Error(Err.Number)
If Err.Number <> 0 Then Err.Clear
modErrorInfo.WriteErrLog m_tagErrInfo
InitListInfo = False
End Function
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -