www.pudn.com > VB-KAOQINXITONG.zip > modAttend.bas
Attribute VB_Name = "modAttend"
Option Explicit
Public gsValidClass() As String '有效的班次
Public gTClassDef() As AttendRuler
Public gTAttendCtl As AttendControl
Public gTHoliSystem() As HoliSystem
Public Function GetMenuStr() As String
'W1110,W1122,W1124,W0090,W1121,W1123,W1126,W1127,W1131
'菜单操作权限,菜单缺省权限,按纽是否可见,父节点编号,菜单标题,按纽标题,菜单名,是否可执行项,图形关键字
GetMenuStr = GetMenuStr & "1|0|1|0|机构(&D)|机 构|mnuDepartment|0|,"
GetMenuStr = GetMenuStr & "1|0|1|mnuDepartment|机构员工管理(&M) Ctrl+M|机构员工管理|mnuDeptEmp|1|IMG007,"
GetMenuStr = GetMenuStr & "1|0|1|0|员工(&E)|员 工|mnuEmpolyee|0|,"
GetMenuStr = GetMenuStr & "1|0|1|mnuEmpolyee|发行员工卡(&I)|发行员工卡|mnuCardManage|1|IMG015,"
GetMenuStr = GetMenuStr & "1|0|1|mnuEmpolyee|-|-||1|,"
GetMenuStr = GetMenuStr & "1|0|1|mnuEmpolyee|员工班次设置(&C)|员工班次设置|mnuEmpWkTmSet|1|IMG054,"
GetMenuStr = GetMenuStr & "1|0|1|mnuEmpolyee|请假登记(&H)|请假登记|mnuHolidayInput|1|IMG048,"
GetMenuStr = GetMenuStr & "1|0|1|mnuEmpolyee|手工签卡(&S)|手工签卡|mnuSignCard|1|,"
GetMenuStr = GetMenuStr & "1|0|1|mnuEmpolyee|班次调换(&W)|班次调换|mnuClassChange|1|IMG053,"
GetMenuStr = GetMenuStr & "1|0|0|mnuEmpolyee|指定考勤(&A)|指定考勤|mnuAssignAttend|1|,"
GetMenuStr = GetMenuStr & "1|0|1|mnuEmpolyee|部门调整(&J)|部门调整|mnuDeptAdjust|1|,"
GetMenuStr = GetMenuStr & "1|0|1|mnuEmpolyee|加班单安排(&P)|加班单安排|mnuWorkAddPlan|1|,"
GetMenuStr = GetMenuStr & "1|0|1|mnuEmpolyee|工时调换(&T)|工时调换|mnuWorkAdjust|1|,"
GetMenuStr = GetMenuStr & "1|0|1|mnuEmpolyee|-|-||1|,"
GetMenuStr = GetMenuStr & "1|0|0|mnuEmpolyee|设备打卡权限(&R)|设备打卡权限|mnuDevRight|1|,"
GetMenuStr = GetMenuStr & "1|0|1|mnuEmpolyee|-|-||1|,"
GetMenuStr = GetMenuStr & "1|0|1|mnuEmpolyee|月排班(&M)|月排班|mnuClassPlan|1|IMG033,"
GetMenuStr = GetMenuStr & "1|0|1|0|数据处理(&P)|数据处理|mnuData|0|,"
GetMenuStr = GetMenuStr & "1|1|1|mnuData|采集数据(&P)|采集数据|mnuPickData|1|IMG010,"
GetMenuStr = GetMenuStr & "1|0|1|mnuData|-|-||1|,"
GetMenuStr = GetMenuStr & "1|0|0|mnuData|保存现场数据(&S)|保存现场数据|mnuSaveMilieu|1|IMG041,"
GetMenuStr = GetMenuStr & "1|0|0|mnuData|保存并删除数据(&D)|保存删除数据|mnuSaveDelete|1|,"
GetMenuStr = GetMenuStr & "1|0|1|mnuData|-|-||1|,"
GetMenuStr = GetMenuStr & "1|0|0|mnuData|恢复现场数据(&R)|恢复现场数据|mnuResumeMilieu|1|,"
GetMenuStr = GetMenuStr & "1|0|0|mnuData|追加新的数据(&A)|追加新的数据|mnuAppendData|1|,"
GetMenuStr = GetMenuStr & "1|0|1|mnuData|-|-||1|,"
GetMenuStr = GetMenuStr & "1|0|0|mnuData|数据整理(&Z)|数据整理|mnuCheckData|1|,"
GetMenuStr = GetMenuStr & "1|0|1|mnuData|查询打卡数据(&C)|查询打卡数据|mnuCardDetail|1|IMG017,"
GetMenuStr = GetMenuStr & "1|0|1|mnuData|-|-||1|,"
GetMenuStr = GetMenuStr & "1|0|0|mnuData|打卡数据统计(&T)|打卡数据统计|mnuCardTotal|1|,"
GetMenuStr = GetMenuStr & "1|0|1|mnuData|计算员工出勤(&U)|计算员工出勤|mnuAttendCal|1|IMG013,"
GetMenuStr = GetMenuStr & "1|0|1|mnuData|出勤结果修正(&M)|出勤结果修正|mnuAttendRetouch|1|,"
GetMenuStr = GetMenuStr & "1|0|1|mnuData|-|-||1|,"
GetMenuStr = GetMenuStr & "1|0|1|mnuData|异常出勤计算(&B)|异常出勤计算|mnuAttendObnormal|1|,"
GetMenuStr = GetMenuStr & "1|0|1|0|查询报表(&R)|查询报表|mnuReport|0|,"
GetMenuStr = GetMenuStr & "1|1|1|mnuReport|查询员工出勤(&A)|查询员工出勤|mnuEmpWkTmQuery|1|IMG008,"
GetMenuStr = GetMenuStr & "1|0|1|mnuReport|系统设备报表(&V)|系统设备报表|mnuDeviceReport|1|,"
GetMenuStr = GetMenuStr & "1|0|1|mnuReport|-|-||1|,"
GetMenuStr = GetMenuStr & "1|0|1|mnuReport|员工出勤日报表(&D)|出勤日报表|mnuEmpWkTm|1|IMG022,"
GetMenuStr = GetMenuStr & "1|0|1|mnuReport|员工特卡日报表(&S)|特卡日报表|mnuEmpSpecCard|1|,"
GetMenuStr = GetMenuStr & "1|0|1|mnuReport|员工出勤月报表(&M)|出勤月报表|mnuMonth1|1|IMG046,"
GetMenuStr = GetMenuStr & "1|0|1|mnuReport|-|-||1|,"
GetMenuStr = GetMenuStr & "1|0|0|mnuReport|班次调换报表(&C)|班次调换报表|mnuClassSwitch|1|,"
GetMenuStr = GetMenuStr & "1|0|0|mnuReport|请假登记报表(&H)|请假登记报表|mnuHolidayRpt|1|,"
GetMenuStr = GetMenuStr & "1|0|1|mnuReport|-|-||1|,"
GetMenuStr = GetMenuStr & "1|0|0|mnuReport|历史记录(&L)|历史记录|mnuHistory|1|IMG064,"
GetMenuStr = GetMenuStr & "1|0|1|mnuReport|数据查询(&Q)|数据查询|mnuQuery|1|IMG012,"
GetMenuStr = GetMenuStr & "1|0|1|0|设置(&S)|设 置|mnuSetup|0|,"
GetMenuStr = GetMenuStr & "1|0|0|mnuSetup|设备资料管理(&D)|设备资料管理|mnuDevManage|1|,"
GetMenuStr = GetMenuStr & "1|0|0|mnuSetup|制度设置(&S)|制度设置|mnuSystem|1|,"
GetMenuStr = GetMenuStr & "1|0|1|mnuSetup|班次设置(&C)|班次设置|mnuWkTmSet|1|IMG054,"
GetMenuStr = GetMenuStr & "1|0|0|mnuSetup|请假制度(&H)|请假制度|mnuHoliSystem|1|IMG048,"
GetMenuStr = GetMenuStr & "1|0|0|mnuSetup|节假日定义(&F)|节假日定义|mnuHoliday|1|,"
GetMenuStr = GetMenuStr & "1|0|1|mnuSetup|-|-||1|,"
GetMenuStr = GetMenuStr & "1|0|1|mnuSetup|系统设置(&T)|系统设置|mnuSystemSetup|1|IMG063,"
GetMenuStr = GetMenuStr & "1|0|1|0|工具(&O)|工 具|mnuTool|0|,"
GetMenuStr = GetMenuStr & "1|1|1|mnuTool|修改用户口令(&P)|修改用户口令|mnuChangePwd|1|IMG036,"
GetMenuStr = GetMenuStr & "1|0|1|mnuTool|操作员维护(&O)|操作员维护|mnuOperManage|1|,"
GetMenuStr = GetMenuStr & "1|1|1|mnuTool|重新登录(&L)|重新登录|mnuReLogin|1|,"
GetMenuStr = GetMenuStr & "1|0|1|mnuTool|-|-||1|,"
GetMenuStr = GetMenuStr & "1|0|1|mnuTool|上位机管理(&H)|上位机管理|mnuHostManager|1|IMG019,"
GetMenuStr = GetMenuStr & "1|0|1|mnuTool|设备资料(&S)|设备资料|mnuDeviceSet|0|,"
GetMenuStr = GetMenuStr & "1|0|1|mnuDeviceSet|设备设置(&D)|设备设置|mnuDeviceSetup|1|,"
GetMenuStr = GetMenuStr & "1|0|1|mnuDeviceSet|下载白名单(&W)|下载白名单|mnuDNWhite|1|,"
GetMenuStr = GetMenuStr & "1|0|1|mnuDeviceSet|设备远程控制(&F)|设备远程控制|mnuRemoveControl|1|,"
GetMenuStr = GetMenuStr & "1|0|1|mnuTool|-|-||1|,"
GetMenuStr = GetMenuStr & "1|1|0|mnuTool|工具面板(&B)|工具面板|mnuShowTools|1|,"
GetMenuStr = GetMenuStr & "1|0|0|mnuTool|软件升级(&U)|软件升级|mnuUpdate|1|,"
GetMenuStr = GetMenuStr & "1|0|1|mnuTool|-|-||1|,"
GetMenuStr = GetMenuStr & "1|0|1|mnuTool|外挂程序(&E)|外挂程序|mnuProgram|1|,"
GetMenuStr = GetMenuStr & "1|1|0|0|帮助(&H)|帮 助|mnuHelp|0|,"
GetMenuStr = GetMenuStr & "1|1|0|mnuHelp|关于(&A)|关 于|mnuHelpAbout|1|IMG001,"
GetMenuStr = GetMenuStr & "1|1|0|0|退出!(&X)|退出!|mnuExit|1|,"
GetMenuStr = GetMenuStr & "1|1|0|0|时间(&T)|时 间|mnuTime|1|"
End Function
Public Function CreateAppTable(ByVal fsTblName As String) As Boolean
Dim i As Integer
CreateAppTable = True
With gclsDBFunc
Select Case fsTblName
Case "A001A001" '人员基本情况子集
.dbCreateFieldItem "", "A0187", edbText, 1 '加班类型
Case "A066A001" '考勤细则
.dbCreateFieldItem "", "ID", , , , , , False '子集编号
.dbCreateFieldItem "", "A0100", edbText, 30, , , , False, True '员工编号
.dbCreateFieldItem "", "A0189", edbText '员工编号
.dbCreateFieldItem "", "B0110", edbText, , , , , False, True '单位编号
.dbCreateFieldItem "", "E0122", edbText '部门编号
' .dbCreateFieldItem "", "C6615", edbSingle '请假工时
.dbCreateFieldItem "", "C6616", edbSingle '休日工时
.dbCreateFieldItem "", "C6617", edbSingle '日加班工时
.dbCreateFieldItem "", "C6618", edbSingle '法定假工时
.dbCreateFieldItem "", "C6640", edbSingle '月加班工时
For i = 1 To 31
.dbCreateFieldItem "", "C" & (6640 + i), edbSingle '第i天工时
Next i
.dbCreateFieldItem "", "C6699", edbSingle '休日夜班工时
.dbCreateFieldItem "", "E6601", edbSingle '法定假天数
.dbCreateFieldItem "", "E6602", edbSingle '日正班段加班
.dbCreateFieldItem "", "E6604", edbSingle '应上工时
.dbCreateFieldItem "", "E6605", edbSingle '应上天数
.dbCreateFieldItem "", "E6606", edbSingle '出勤工时
.dbCreateFieldItem "", "E6609", edbSingle '平日特卡段工时
.dbCreateFieldItem "", "E6610", edbSingle '休日特卡段工时
.dbCreateFieldItem "", "E6611", edbSingle '节假日特卡段工时
.dbCreateFieldItem "", "E6613", edbSingle '第5个周六工时
.dbCreateFieldItem "", "E6623", edbSingle '旷工工时
.dbCreateFieldItem "", "E6627", edbSingle '迟到工时
.dbCreateFieldItem "", "E6629", edbSingle '平日出勤天数
.dbCreateFieldItem "", "E6630", edbSingle '加班段工时(即加班段的加班工时,区别于正班段的加班工时)
.dbCreateFieldItem "", "E6631", edbSingle '休日出勤天数
.dbCreateFieldItem "", "E6632", edbSingle '总加班工时
.dbCreateFieldItem "", "E6633", edbSingle '早退工时
.dbCreateFieldItem "", "E6635", edbSingle '调休工时
.dbCreateFieldItem "", "E6636", edbSingle '扣罚时数
.dbCreateFieldItem "", "E6679", edbSingle '有工时假工时
.dbCreateFieldItem "", "E6680", edbSingle '无工时假工时
' If gTAttendCtl.MustAddTime > 0 Then
.dbCreateFieldItem "", "E6689", edbSingle '定额加班
.dbCreateFieldItem "", "E6690", edbSingle '额外加班
' End If
.dbCreateFieldItem "", "W6621", edbSingle '未补工时
.dbCreateFieldItem "", "W6622", edbSingle '早班天数
.dbCreateFieldItem "", "W6623", edbSingle '白班天数
.dbCreateFieldItem "", "W6624", edbSingle '夜班天数
For i = 0 To UBound(gTHoliSystem)
.dbCreateFieldItem "", gTHoliSystem(i).W6671, edbSingle
Next i
.dbCreateFieldItem "", "W0075", edbText, 10, , "1000000000" '状态
.dbCreateFieldItem "", "W0076", edbText, 255 '状态2
Case "T6621A001" '考勤结果明细
.dbCreateFieldItem "", "ID" '子集编号
.dbCreateFieldItem "", "A0186" '加班段的状态标志,2^0到2^2表示本日有几段打卡,2^3表示第一段为加班段,依次类推
.dbCreateFieldItem "", "A0187", edbText, 1 '加班类型
.dbCreateFieldItem "", "A0189", edbText, , , , , False, True '员工编号
.dbCreateFieldItem "", "B0110", edbText, , , , , False, True '单位编号
.dbCreateFieldItem "", "C6609", edbSingle '日正班段工时
.dbCreateFieldItem "", "C6610" '星期
' .dbCreateFieldItem "", "C6615", edbSingle '请假工时
.dbCreateFieldItem "", "C6616", edbSingle '休日工时
.dbCreateFieldItem "", "C6617", edbSingle '日加班工时
.dbCreateFieldItem "", "C6618", edbSingle '法定假工时
For i = 1 To 2 * CLASS_SEC
.dbCreateFieldItem "", "C662" & i, edbDate '第i次班次时间
Next i
.dbCreateFieldItem "", "C6630" '班次调整工时
For i = 1 To 2 * CLASS_SEC
.dbCreateFieldItem "", "C663" & i, edbDate '第i次打卡时间
Next i
.dbCreateFieldItem "", "C6675", edbSingle '夜班工时
.dbCreateFieldItem "", "C6680", edbSingle '正班段的排班工时
.dbCreateFieldItem "", "E0122", edbText '机构编号
.dbCreateFieldItem "", "E6600", edbDate, , , , , False, True '考勤登记日期
.dbCreateFieldItem "", "E6602", edbSingle '日正班段加班
.dbCreateFieldItem "", "E6603", edbSingle '特卡段工时
.dbCreateFieldItem "", "E6604", edbSingle '应上工时
.dbCreateFieldItem "", "E6606", edbSingle '出勤工时
.dbCreateFieldItem "", "E6608", edbSingle '标准工时
.dbCreateFieldItem "", "E6609", edbSingle '平日特卡段工时
.dbCreateFieldItem "", "E6610", edbSingle '休日特卡段工时
.dbCreateFieldItem "", "E6611", edbSingle '节假日特卡段工时
.dbCreateFieldItem "", "E6623", edbSingle '旷工工时
.dbCreateFieldItem "", "E6625", edbSingle '报表总出勤天数
.dbCreateFieldItem "", "E6626", edbSingle '总出勤天数.含休日平日
.dbCreateFieldItem "", "E6627", edbSingle '迟到工时
.dbCreateFieldItem "", "E6633", edbSingle '早退工时
.dbCreateFieldItem "", "E6635", edbSingle '调休工时
.dbCreateFieldItem "", "E6636", edbSingle '扣罚时数
.dbCreateFieldItem "", "E6630", edbSingle '加班段工时(即加班段的加班工时,区别于正班段的加班工时)
For i = 1 To CLASS_SEC
.dbCreateFieldItem "", "E667" & i, edbSingle '第i次迟到工时
Next i
For i = 5 To 4 + CLASS_SEC
.dbCreateFieldItem "", "E667" & i, edbSingle '第i-4次扣罚工时
Next i
.dbCreateFieldItem "", "E6679", edbSingle '有工时假工时
.dbCreateFieldItem "", "E6680", edbSingle '无工时假工时
For i = 1 To 2 * CLASS_SEC
.dbCreateFieldItem "", "E668" & i, edbSingle '第i次旷工工时
Next i
For i = 1 To CLASS_SEC
.dbCreateFieldItem "", "E669" & i, edbSingle '第i次早退工时
Next i
For i = 5 To 4 + CLASS_SEC
.dbCreateFieldItem "", "E669" & i, edbSingle '第i次扣罚工时
Next i
.dbCreateFieldItem "", "E6699", edbText, 8 '班次代码
.dbCreateFieldItem "", "W0030", edbText, 50 '备注
.dbCreateFieldItem "", "W6622", edbSingle '早班天数
.dbCreateFieldItem "", "W6623", edbSingle '白班天数
.dbCreateFieldItem "", "W6624", edbSingle '夜班天数
.dbCreateFieldItem "", "W6646" '工作状态标志,1-上班,2-休日,4-法定假,8-请假
.dbCreateFieldItem "", "W6648", edbDate '特卡起始时间
.dbCreateFieldItem "", "W6649", edbDate '特卡结束时间
For i = 0 To UBound(gTHoliSystem)
.dbCreateFieldItem "", gTHoliSystem(i).W6671, edbSingle '病假
Next i
.dbCreateFieldItem "", "W0075", edbText, 10 '
.dbCreateFieldItem "", "W0076", edbText, 255 '
Case Else
CreateAppTable = False
End Select
End With
End Function
Public Sub CreateAppRecords()
10 On Error GoTo ErrLabel
Dim i As Integer, j As Integer, n As Integer
Dim sIndex() As String
Dim sStr As String
Dim sSplit1
Dim sSplit2
Dim lMaxID As Long
Dim adoTempRS As ADODB.Recordset
20 Set adoTempRS = New ADODB.Recordset
30 adoTempRS.Open "SELECT ID,E6699,W0093,C6672,W6681,W0090,W0091,W0092 FROM T6651S001 WHERE W0090 ='WC'", gDBRecordConn, adOpenStatic, adLockOptimistic
40 For i = LBound(gsValidClass) To UBound(gsValidClass)
50 sStr = gsValidClass(i) & "00"
60 With adoTempRS
70 .Filter = "W6681 = '" & sStr & "'"
80 If .RecordCount <= 0 Then
90 .AddNew
100 lMaxID = gclsCommon.CBNGetMaxID("T6651S001"): lMaxID = lMaxID + 1
110 !W6681 = sStr
120 !C6672 = gsValidClass(i) & "类班"
130 !W0090 = "WC"
140 !W0091 = 0
150 !W0093 = "WC"
160 !E6699 = "Sys" & i + 1
170 !ID = lMaxID
180 gDBRecordConn.Execute "UPDATE T6651S001 SET W0093 ='WC',W0090='" & sStr & "',W0091='0' WHERE (LEFT(W6681,1) ='" & gsValidClass(i) & "') AND (W0090 <> 'WC')"
190 .Update
200 If lMaxID > 0 Then gclsCommon.CBNSetMaxID "T6651S001", lMaxID
210 End If
220 End With
230 Next i
240 adoTempRS.Filter = 0
250 adoTempRS.Close
260 sStr = ""
270 Set adoTempRS = New ADODB.Recordset
280 adoTempRS.Open "SELECT ID,W6670,W6671,W6672,W6673,W6674,W6675,W6676,W6680,W6681 FROM T0118S001", gDBRecordConn, adOpenStatic, adLockOptimistic
290 n = UBound(gTHoliSystem) + 1
300 If adoTempRS.RecordCount < n Then
310 ReDim sIndex(1 To adoTempRS.Fields.Count, 1 To n)
320 For i = 1 To n
330 sIndex(1, i) = i 'ID
340 sIndex(2, i) = gTHoliSystem(i - 1).W6670
350 sIndex(3, i) = gTHoliSystem(i - 1).W6671
360 sIndex(4, i) = gTHoliSystem(i - 1).W6672
370 sIndex(5, i) = IIf(gTHoliSystem(i - 1).W6673, 1, 0)
380 sIndex(6, i) = 1 'W6674
390 sIndex(7, i) = 8 'W6675
400 sIndex(8, i) = gTHoliSystem(i - 1).W6676
410 sIndex(9, i) = 0 'W6680
420 sIndex(10, i) = gTHoliSystem(i - 1).W6681
430 Next i
440 gclsCommon.CBNFillTable adoTempRS, sIndex
450 End If
460 adoTempRS.Close
470 Set adoTempRS = New ADODB.Recordset
480 adoTempRS.Open "SELECT ID,W6683,W6686,W6687,W6688,W6689,W6690,W6696,W6697,W6698 FROM T0121S001", gDBRecordConn, adOpenStatic, adLockOptimistic
490 n = 5
500 If adoTempRS.RecordCount < n Then
510 ReDim sIndex(1 To adoTempRS.Fields.Count, 1 To n)
520 sIndex(1, 1) = SYS_LATER: sIndex(2, 1) = "迟到": sIndex(3, 1) = "30": sIndex(4, 1) = "1": sIndex(5, 1) = "5": sIndex(6, 1) = "30": sIndex(7, 1) = "24": sIndex(8, 1) = "1": sIndex(9, 1) = "0": sIndex(10, 1) = "1"
530 sIndex(1, 2) = SYS_EARLY: sIndex(2, 2) = "早退": sIndex(3, 2) = "30": sIndex(4, 2) = "1": sIndex(5, 2) = "5": sIndex(6, 2) = "30": sIndex(7, 2) = "24": sIndex(8, 2) = "1": sIndex(9, 2) = "0": sIndex(10, 2) = "1"
540 sIndex(1, 3) = SYS_PUNISH: sIndex(2, 3) = "扣罚": sIndex(3, 3) = "60": sIndex(4, 3) = "3": sIndex(5, 3) = "30": sIndex(6, 3) = "60": sIndex(7, 3) = "24": sIndex(8, 3) = "1": sIndex(9, 3) = "0": sIndex(10, 3) = "1"
550 sIndex(1, 4) = SYS_ABSENT: sIndex(2, 4) = "旷工": sIndex(3, 4) = "480": sIndex(4, 4) = "2": sIndex(5, 4) = "60": sIndex(6, 4) = "480": sIndex(7, 4) = "24": sIndex(8, 4) = "1": sIndex(9, 4) = "0": sIndex(10, 4) = "2"
560 sIndex(1, 5) = SYS_FEAST: sIndex(2, 5) = "法定假": sIndex(3, 5) = "0": sIndex(4, 5) = "3": sIndex(5, 5) = "0": sIndex(6, 5) = "0": sIndex(7, 5) = "24": sIndex(8, 5) = "1": sIndex(9, 5) = "0": sIndex(10, 5) = "1"
570 gclsCommon.CBNFillTable adoTempRS, sIndex
580 End If
590 adoTempRS.Close
600 Set adoTempRS = New ADODB.Recordset
610 adoTempRS.Open "SELECT C6689,W6684 FROM T6652S001", gDBRecordConn, adOpenStatic, adLockOptimistic
620 n = 5
630 If adoTempRS.RecordCount < n Then
640 ReDim sIndex(1 To adoTempRS.Fields.Count, 1 To n)
650 sIndex(1, 1) = "1": sIndex(2, 1) = "规律班次(标准工时=排班总工时)"
660 sIndex(1, 2) = "2": sIndex(2, 2) = "规律班次,尾段加班(标准工时=排班总工时-尾部加班工时)"
670 sIndex(1, 3) = "3": sIndex(2, 3) = "规律班次(自定义标准工时)"
680 sIndex(1, 4) = "4": sIndex(2, 4) = "实际打卡(自定义标准工时)"
690 sIndex(1, n) = "0": sIndex(2, n) = "无班次"
700 gclsCommon.CBNFillTable adoTempRS, sIndex
710 End If
720 adoTempRS.Close
730 Set adoTempRS = New ADODB.Recordset
740 adoTempRS.Open "SELECT C6690,W6682 FROM T0119S001", gDBRecordConn, adOpenStatic, adLockOptimistic
750 n = 3
760 If adoTempRS.RecordCount < n Then
770 ReDim sIndex(1 To adoTempRS.Fields.Count, 1 To n)
780 sIndex(1, 1) = "1": sIndex(2, 1) = "记迟到、早退"
790 sIndex(1, 2) = "2": sIndex(2, 2) = "不记迟到、早退"
800 sIndex(1, 3) = "3": sIndex(2, 3) = "不考勤"
810 gclsCommon.CBNFillTable adoTempRS, sIndex
820 End If
830 adoTempRS.Close
840 If gclsCommon.CBNIsJSType(gTAppLicInfo.DevMainType) Then '添加发卡设备
850 Set adoTempRS = New ADODB.Recordset
860 adoTempRS.Open "SELECT W1006,W1000,W1020,W1022,W1019,W1021,W1018," _
& "W1001,W1034,W1007,W1003,W1033,W1026,W1014,W1015," _
& "W1009,W1016,W1010,W1011,W1013,W1008,W1027,W1017" _
& " FROM T0102S001", gDBRecordConn, adOpenStatic, adLockOptimistic
870 n = 1
880 If adoTempRS.RecordCount < n Then
890 ReDim sIndex(1 To adoTempRS.Fields.Count, 1 To n)
900 sIndex(1, 1) = DEV_MIF_READ_NOPASSWD: sIndex(2, 1) = DEVICE_CN_ACCREDIT
910 sIndex(3, 1) = "1": sIndex(4, 1) = "4800"
920 sIndex(5, 1) = "0": sIndex(6, 1) = "8"
930 sIndex(7, 1) = "1": sIndex(8, 1) = "0"
940 sIndex(9, 1) = "BNRF25DC12A": sIndex(10, 1) = "BNSQ001"
950 sIndex(11, 1) = "0": sIndex(12, 1) = "0"
960 sIndex(13, 1) = "桌面": sIndex(14, 1) = "300"
970 sIndex(15, 1) = "100": sIndex(16, 1) = "0"
980 sIndex(17, 1) = "0": sIndex(18, 1) = "0"
990 sIndex(19, 1) = "0": sIndex(20, 1) = "300"
1000 sIndex(21, 1) = "0": sIndex(22, 1) = gclsInclude.MyGetHostName
1010 sIndex(23, 1) = FIELD_ATTEND_START
1020 gclsCommon.CBNFillTable adoTempRS, sIndex
1030 End If
1040 adoTempRS.Close
1050 End If
1060 Set adoTempRS = Nothing
1070 Exit Sub
ErrLabel:
gclsCommon.CBNSaveLogFile "CreateAppRecords:" & Err.Description & " Pos:" & Erl, True
Resume Next
End Sub
Public Function GetClassPlan(fsSQL As String, _
fDBegin As Date, _
fDEnd As Date) As String() '根据员工班次安排得到某时间范围的班次状态
Dim sPlanClass() As String
Dim adoReportRS As ADODB.Recordset
Dim iDays As Integer
Dim sSQL As String
Dim DDate As Date
Dim n As Integer
Dim bFlag As Boolean
Dim sEmpNum() As String
Dim sMonth() As String
Dim i As Integer
On Error GoTo ErrLabel
Set adoReportRS = New ADODB.Recordset
sSQL = ""
ReDim sMonth(DateDiff("m", fDBegin, fDEnd))
For i = 1 To UBound(sMonth) + 1
DDate = DateAdd("m", i - 1, fDBegin)
sMonth(i - 1) = Format(DDate, "YYYY-M")
' DDate = gclsInclude.MyGetFirstDay(DDate)
sSQL = sSQL & "W6626 = '" & sMonth(i - 1) & "' OR "
Next i
If sSQL <> "" Then sSQL = "(" & Trim(Left(sSQL, Len(sSQL) - 4)) & ")"
sSQL = fsSQL & " AND " & sSQL
With adoReportRS
.Open sSQL, gDBRecordConn, adOpenStatic, adLockReadOnly
n = 0
ReDim sEmpNum(0)
Do While Not .EOF
bFlag = False
For i = 0 To UBound(sEmpNum)
If sEmpNum(i) = !A0189 Then
bFlag = True
Exit For
End If
Next i
If Not bFlag Then
If sEmpNum(0) <> "" Then ReDim Preserve sEmpNum(n)
sEmpNum(n) = !A0189
n = n + 1
End If
.MoveNext
Loop
iDays = DateDiff("d", fDBegin, fDEnd) + 1
ReDim sPlanClass(1 To UBound(sEmpNum) + 1, 0 To iDays)
For i = 1 To UBound(sEmpNum) + 1
sPlanClass(i, 0) = sEmpNum(i - 1)
sSQL = ""
For n = 0 To UBound(sMonth)
.Filter = "A0189 = '" & sEmpNum(i - 1) & "' AND W6626 ='" & sMonth(n) & "'"
If .RecordCount > 0 Then
sSQL = sSQL & !W6630
Else
sSQL = sSQL & gclsInclude.MyString(gclsInclude.MyGetDays(CDate(sMonth(n) & "-01")), NO_CLASS)
End If
Next n
For n = 1 To iDays
sPlanClass(i, n) = Mid(sSQL, (Day(fDBegin) + n - 2) * Len(NO_CLASS) + 1, Len(NO_CLASS))
Next n
Next i
End With
GetClassPlan = sPlanClass
Exit Function
ErrLabel:
MsgBox Error
Resume Next
End Function
Public Function GetClassIndex(ByVal fsClassID As String) As Integer
On Error GoTo ErrLabel
Dim i As Integer
If fsClassID = NO_CLASS Then GetClassIndex = 0: Exit Function
For i = 1 To UBound(gTClassDef)
If gTClassDef(i).sClassID = fsClassID Then
GetClassIndex = i
Exit Function
End If
Next i
GetClassIndex = -1
Exit Function
ErrLabel:
If Err = 9 Then
gTClassDef = gclsCommon.CBNGetValidClass(gTAttendCtl.Use1CardRange)
End If
Resume Next
End Function
Public Sub InitAttendValue(fadoRS As ADODB.Recordset)
Dim i As Integer
With fadoRS
For i = 0 To UBound(gTHoliSystem)
.Fields(gTHoliSystem(i).W6671) = 0
Next i
!C6616 = 0 '休日工时
!C6617 = 0
!C6618 = 0 '法定假工时
!E6602 = 0 '
!E6604 = 0 '应上工时
!E6606 = 0 '考虑了迟到及早退以及有工时假
!E6609 = 0
!E6610 = 0
!E6611 = 0
!E6623 = 0 '旷工
!E6627 = 0
!E6630 = 0
!E6633 = 0
!E6635 = 0
!E6636 = 0
!E6679 = 0
!E6680 = 0
End With
End Sub
Public Function GetWorkChange(fsSQL As String) As WorkChange()
Dim adoWorkChange As ADODB.Recordset
Set adoWorkChange = New ADODB.Recordset
Dim l As Long
ReDim TWorkChange(0) As WorkChange
With adoWorkChange
.Open "SELECT * FROM QT6649A001_001 " & fsSQL, gDBRecordConn, adOpenStatic, adLockOptimistic
If .RecordCount > 0 Then
ReDim TWorkChange(.RecordCount)
For l = 1 To .RecordCount
TWorkChange(l).EmplyeeNum = !A0189
TWorkChange(l).FromDate = !W6616
TWorkChange(l).ToDate = !W6617
TWorkChange(l).ToWorkMode = gclsInclude.MyNz(!W6607, WK_NORMAL) '工时调换类别
TWorkChange(l).FromWorkMode = gclsInclude.MyNz(!W6647, WK_OVERTIME) '工时被调类别
If TWorkChange(l).FromWorkMode = WK_ALLSWITCH Then
TWorkChange(l).Value = 0
Else
TWorkChange(l).Value = !W6606
End If
.MoveNext
Next l
End If
End With
GetWorkChange = TWorkChange
End Function
Public Function GetMyEvents() As String
End Function