590
社区成员
发帖
与我相关
我的任务
分享
'判断出勤状态
Function cD(ByVal WorkerNO As String, ByVal rq As String, ByVal sbtim As Object, ByVal xbtim As Object) As String
cD = ""
Dim Week As String = ""
Week = WeekdayName(Weekday(rq))
Dim a As Boolean = True '正常出勤,正常工作日
If Week = "星期六" Or Week = "星期日" Then
a = False
End If
If ReadDeName(WorkerNO) = "总裁室" Then
cD = "-"
Exit Function
End If
'Response.End()
'Exit Function
If a = True Then
If CheckDepart(ReadDeName(CLng(WorkerNO))) = False Then
If sbtim Is DBNull.Value Then
cD = "漏打卡"
ElseIf DateDiff(DateInterval.Second, CDate(sbtim), CDate(rq & " 8:30:00")) <= 0 And DateDiff(DateInterval.Second, CDate(sbtim), CDate(rq & " 8:30:00")) > -1800 Then
cD = "迟到"
ElseIf xbtim Is DBNull.Value Then
cD = "漏打卡"
ElseIf sbtim = xbtim Or DateDiff(DateInterval.Second, CDate(sbtim), CDate(xbtim)) <= 1800 Then
cD = "漏打卡"
ElseIf DateDiff(DateInterval.Second, CDate(xbtim), CDate(rq & " 17:30:00")) > 1 And DateDiff(DateInterval.Second, CDate(xbtim), CDate(rq & " 17:30:00")) < 1800 Then
cD = "早退"
ElseIf 1800 <= DateDiff(DateInterval.Second, CDate(xbtim), CDate(rq & " 17:30:00")) Then '旷工
cD = "异常"
ElseIf DateDiff(DateInterval.Second, CDate(sbtim), CDate(rq & " 8:30:00")) <= -1800 Then '旷工
cD = "异常"
ElseIf DateDiff(DateInterval.Second, CDate(xbtim), CDate(rq & " 17:30:00")) <= 0 And DateDiff(DateInterval.Second, CDate(sbtim), CDate(rq & " 8:30:00")) >= 0 Then
cD = "正常"
End If
Else
If sbtim Is DBNull.Value Then
cD = "漏打卡"
ElseIf xbtim Is DBNull.Value Then
cD = "漏打卡"
ElseIf sbtim = xbtim Or DateDiff(DateInterval.Second, CDate(sbtim), CDate(xbtim)) < 1800 Then
cD = "漏打卡"
ElseIf DateDiff(DateInterval.Second, CDate(sbtim), CDate(rq & " 9:00:00")) <= -1800 Then '旷工
cD = "异常"
ElseIf DateDiff(DateInterval.Second, CDate(sbtim), CDate(rq & " 9:00:00")) <= 0 And DateDiff(DateInterval.Second, CDate(sbtim), CDate(rq & " 9:00:00")) > -1800 Then
cD = "迟到"
ElseIf CLng(cDh(sbtim, xbtim)) > 8 Then
cD = "正常"
ElseIf DateDiff(DateInterval.Second, CDate(sbtim), CDate(xbtim)) <= 13500 Then '旷工
cD = "异常"
ElseIf 32400 > DateDiff(DateInterval.Second, CDate(sbtim), CDate(xbtim)) > 13500 Then
cD = "早退"
Else
cD = "异常"
End If
End If
Else
If sbtim Is DBNull.Value Or xbtim Is DBNull.Value Then
cD = "漏打卡"
Else
cD = "双休加班"
End If
End If
If cD = "漏打卡" And DateDiff(DateInterval.Day, CDate(rq), Now) = 0 Then
'If DateDiff(DateInterval.Second, CDate(sbtim), CDate(rq & " 8:30:00")) <= -1800 Then
'cD = "异常"
If CheckDepart(ReadDeName(CLng(WorkerNO))) = False Then
If DateDiff(DateInterval.Second, CDate(sbtim), CDate(rq & " 8:30:00")) < 0 And DateDiff(DateInterval.Second, CDate(sbtim), CDate(rq & " 8:30:00")) > -1800 Then
cD = "迟到"
Else
cD = "尚未下班"
End If
ElseIf CheckDepart(ReadDeName(CLng(WorkerNO))) = True Then
If DateDiff(DateInterval.Second, CDate(sbtim), CDate(rq & " 9:00:00")) <= 0 And DateDiff(DateInterval.Second, CDate(sbtim), CDate(rq & " 9:00:00")) > -1800 Then
cD = "迟到"
Else
cD = "尚未下班"
End If
Else
cD = "尚未下班"
End If
ElseIf cD = "漏打卡" And Not xbtim Is DBNull.Value Then
cD = "异常"
End If
If sbtim Is DBNull.Value And xbtim Is DBNull.Value Then
cD = "未出勤"
End If
End Function