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