📄 frmdealdata.frm
字号:
Set mrc = ExecuteSQL(txtSql)
If Not mrc.EOF Then
BeginEnd1 = True
txtBegin1 = mrc.Fields(2).Value
End If
End If
begintxt = DoubleToTimeStr(endTime)
endtxt = DoubleToTimeStr(endTime + PaleTime)
'下班刷卡
txtSql = "select * from daydata where Id ='" & vtId & "' and BrushDate='" & vtDate & "' and BrushTime>='" & begintxt & "' and BrushTime <='" & endtxt & "'"
Set mrc = Nothing
Set mrc = ExecuteSQL(txtSql)
If Not mrc.EOF Then
FlagEnd = True
txtEnd = mrc.Fields(2).Value
Else
begintxt = DoubleToTimeStr(endTime - LateTime)
endtxt = DoubleToTimeStr(endTime)
'下班早退刷卡
txtSql = "select * from daydata where Id ='" & vtId & "' and BrushDate='" & vtDate & "' and BrushTime>='" & begintxt & "' and BrushTime <='" & endtxt & "'"
Set mrc = Nothing
Set mrc = ExecuteSQL(txtSql)
If Not mrc.EOF Then
FlagEnd1 = True
txtEnd1 = mrc.Fields(2).Value
End If
End If
If FlagBegin Then '正常上班
If FlagEnd Then '正常下班
JudgeDayData = arrayPeriod(i, 2) + JudgeDayData
Else
If FlagEnd1 Then '早退
JudgeDayData = (TimeStrToDouble(txtEnd1) - arrayPeriod(i, 0)) / 60 + JudgeDayData
n2 = n2 + 1 ' 早退一次
Else '下班未刷卡
n3 = n3 + 1 '旷工一次
End If
End If
Else
If FlagBegin1 Then '迟到
If FlagEnd Then '正常下班
JudgeDayData = (arrayPeriod(i, 1) - TimeStrToDouble(txtBegin1)) / 60 + JudgeDayData
n1 = n1 + 1 '迟到一次
Else
If FlagEnd1 Then '早退
JudgeDayData = (TimeStrToDouble(txtEnd1) - TimeStrToDouble(txtBegin1)) / 60 + JudgeDayData
n1 = n1 + 1 '迟到一次
n2 = n2 + 1 '早退一次
Else '下班未刷卡
n3 = n3 + 1 '旷工一次
End If
End If
Else
n3 = n3 + 1 '旷工一次
End If
End If
Next i
If n1 > 0 Then '迟到
txtSql = "select * from abnormity where Id ='" & vtId & "' and DealDate='" & vtDate & "' and AbnormityCode='01'"
Set mrc = Nothing
Set mrc = ExecuteSQL(txtSql)
If Not mrc.EOF Then
mrc.Fields(3) = n1
mrc.Update
Else
txtSql = "select * from abnormity"
Set mrc = Nothing
Set mrc = ExecuteSQL(txtSql)
mrc.Fields(0) = vtId
mrc.Fields(1) = vtDate
mrc.Fields(2) = "01"
mrc.Fields(3) = n1
mrc.Update
End If
Else
txtSql = "delete from abnormity where Id ='" & vtId & "' and DealDate='" & vtDate & "' and AbnormityCode='01'"
Set mrc = Nothing
Set mrc = ExecuteSQL(txtSql)
End If
If n2 > 0 Then '早退
txtSql = "select * from abnormity where Id ='" & vtId & "' and DealDate='" & vtDate & "' and AbnormityCode='02'"
Set mrc = Nothing
Set mrc = ExecuteSQL(txtSql)
If Not mrc.EOF Then
mrc.Fields(3) = n2
mrc.Update
Else
txtSql = "select * from abnormity"
Set mrc = Nothing
Set mrc = ExecuteSQL(txtSql)
mrc.Fields(0) = vtId
mrc.Fields(1) = vtDate
mrc.Fields(2) = "02"
mrc.Fields(3) = n2
mrc.Update
End If
Else
txtSql = "delete from abnormity where Id ='" & vtId & "' and DealDate='" & vtDate & "' and AbnormityCode='02'"
Set mrc = Nothing
Set mrc = ExecuteSQL(txtSql)
End If
If n3 > 0 Then '旷工
txtSql = "select * from abnormity where Id ='" & vtId & "' and DealDate='" & vtDate & "' and AbnormityCode='03'"
Set mrc = Nothing
Set mrc = ExecuteSQL(txtSql)
If Not mrc.EOF Then
mrc.Fields(3) = n3
mrc.Update
Else
txtSql = "select * from abnormity"
Set mrc = Nothing
Set mrc = ExecuteSQL(txtSql)
mrc.AddNew
mrc.Fields(0) = vtId
mrc.Fields(1) = vtDate
mrc.Fields(2) = "03"
mrc.Fields(3) = n3
mrc.Update
End If
Else
txtSql = "delete from abnormity where Id ='" & vtId & "' and DealDate='" & vtDate & "' and AbnormityCode='01'"
Set mrc = Nothing
Set mrc = ExecuteSQL(txtSql)
End If
End Function
'将数字转成时间格式
Private Function DoubleToTimeStr(ByVal vtTime As Double) As String
Dim temp1, temp2 As Integer
Dim temp As Double
Dim i As Integer
Dim txt1, txt2 As String
DoubleToTimeStr = ""
temp = vtTime
temp1 = temp / 60 '小时
temp = temp - (temp1 * 60)
temp2 = temp / 60 '分
txt1 = Trim(str(temp1))
txt2 = Trim(str(temp2))
For i = Len(txt1) To 1
txt1 = "0" + txt1
Next i
For i = Len(txt2) To 1
txt2 = "0" + txt2
Next i
DoubleToTimeStr = txt1 + ":" + txt2 + ":00"
End Function
'将字串时间转换成分钟
Private Function TimeStrToDouble(ByVal vtTime As String) As Integer
Dim txt As String
Dim nTime As Integer
TimeStrToDouble = 0
nTime = 0
txt = vtTime
nTime = Val(Left(txt, 2)) * 60 + Val(Mid(txt, 4, 2))
TimeStrToDouble = nTime
End Function
'存盘每日考勤资料
Private Function SaveDayData(vtId As String, vtMonth As String, vtday As Integer, vtCount As Double) As Boolean
SaveDayData = True
txtSql = "select * from dutdata where Id ='" & vtId & "' and DealMonth ='" & vtMonth & "'"
Set mrc = Nothing
Set mrc = ExecuteSQL(txtSql)
If Not mrc.EOF Then
mrc.Fields(vtday + 1) = vtCount
mrc.Update
Else
txtSql = "select * from dutdata"
Set mrc = Nothing
Set mrc = ExecuteSQL(txtSql)
mrc.AddNew
mrc.Fields(0) = vtId
mrc.Fields(1) = vtMonth
mrc.Fields(vtday + 1) = vtCount
mrc.Update
End If
End Function
'找请假原因
Private Function JudgeHoliday(vtId As String, vtDate As Date) As String
JudgeHoliday = ""
txtSql = "select * from holiday where Id ='" & vtId & "' and BeginDate >='" & vtDate & "' and EndDate <='" & vtDate & "'"
Set mrc = Nothing
Set mrc = ExecuteSQL(txtSql)
If Not mrc.EOF Then
JudgeHoliday = mrc.Fields(3).Value
End If
mrc.Close
End Function
Private Function JudgeWeekDay(vtDate As Date) As Boolean
Dim i As Integer
JudgeWeekDay = False
i = Weekday(vtDate)
Select Case i
Case 1 '星期日
JudgeWeekDay = False
Case 2 '星期一
JudgeWeekDay = True
Case 3 '星期二
JudgeWeekDay = True
Case 4 '星期三
JudgeWeekDay = True
Case 5 '星期四
JudgeWeekDay = True
Case 6 '星期五
JudgeWeekDay = True
Case 7 '星期六
JudgeWeekDay = False
End Select
End Function
Private Function JudgeFeria(vtDate As Date, vFlag As Boolean) As Boolean
JudgeFeria = vFlag
txtSql = "select * from feria where DealDate ='" & vtDate & "'"
Set mrc = Nothing
Set mrc = ExecuteSQL(txtSql)
If Not mrc.EOF Then
If mrc.Fields(1).Value >= "2" Then '为正常班 或加班
JudgeFeria = True
Else '1 为 假日
JudgeFeria = False
End If
End If
End Function
Private Sub Form_Load()
Dim FlagEnabled As Boolean
Me.Left = (Screen.Width - Me.Width) / 2
Me.Top = (Screen.Height - Me.Height) / 2
FlagEnabled = CheckProgramLimit("hrd204")
cmdDeal.Enabled = FlagEnabled
Call Init '初始化数据
End Sub
Private Sub Init()
Dim i As Integer
txtItem(0).Text = "000000"
txtItem(1).Text = "999999"
DTPDealDate(0).Value = Date
DTPDealDate(1).Value = Date
'找上班时段
txtSql = "select * from period"
Set mrc = Nothing
Set mrc = ExecuteSQL(txtSql)
nPeriodRecord = mrc.RecordCount
ReDim arrayPeriod(nPeriodRecord - 1, 2)
i = 0
nCountPeriod = 0
Do While Not mrc.EOF
'arrayPeriod(i, 0) = mrc.Fields(0).Value
'arrayPeriod(i, 1) = mrc.Fields(1).Value
'arrayPeriod(i, 2) = mrc.Fields(2).Value
arrayPeriod(i, 0) = Val(Left(Trim(mrc.Fields(0).Value), Len(Trim(mrc.Fields(0).Value)) - 3)) * 60 + Val(Right(mrc.Fields(0).Value, 2))
arrayPeriod(i, 1) = Val(Left(Trim(mrc.Fields(1).Value), Len(Trim(mrc.Fields(1).Value)) - 3)) * 60 + Val(Right(mrc.Fields(1).Value, 2))
arrayPeriod(i, 2) = mrc.Fields(2).Value
nCountPeriod = nCountPeriod + mrc.Fields(2).Value '总计一天的上班时数
i = i + 1
mrc.MoveNext
Loop
End Sub
Private Function check_dealData() As Boolean
Dim i As Integer
check_dealData = True
For i = 0 To 1
If txtItem(i).Text = "" Then
MsgBox "输入的数据不能为空", vbCritical + vbOKOnly, "错误提示:"
check_dealData = False
txtItem(i).SetFocus
Exit Function
End If
If DTPDealDate(i).Value = "" Then
MsgBox "输入的数据不能为空", vbCritical + vbOKOnly, "错误提示:"
check_dealData = False
DTPDealDate(i).SetFocus
Exit Function
End If
Next i
End Function
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -