关于考勤时间分析问题
Public Sub EmpStrdate()Dim emp_id As String, emp_name As String, depart_name As String, Sign_date As String, work_days, intime As String, outtime As String, late_mins As String, leave_mins As String, leave_days As String, absent_days As String
Dim w As String
Dim d As String
Dim t As String
Dim m As Integer
Dim n As Integer
Dim i, j As Integer
Call Frmdata
opencn
openrs EmpStr
closecn
If rs.RecordCount <= 0 Then Exit Sub
m = rs.RecordCount 'm变量用来记录记录集rs中的记录总数
rs.MoveFirst
Do While Not rs.EOF
With rs
emp_id = .Fields("emp_id").Value
emp_name = .Fields("emp_name").Value
depart_name = .Fields("depart_name").Value
d = .Fields("sign_time").Value
Sign_date = Format(d, "yy-mm-dd")
w = Weekday(d, vbSunday)
work_days = "星期" & Mid("日一二三四五六", w, 1)
t = Format(d, "hh:mm")
If t = "" Then
absent_days = 1 '当时间为空时显示缺勤一天
ElseIf t <= "13:30" And t = "" Then
intime = "未打卡"
ElseIf t > "13:30" And t = "" Then
outtime = "未打卡"
ElseIf t <= "8:00" Then
intime = MIN(t) '当小于8:00的时候显示考勤最小的那时间,也就是第一次打的那次卡.
late_mins = 0
ElseIf t > "8:00" And t <= "13:30" Then
late_mins = t - "8:00" '在这个时间段里就是迟到分钟把值赋给迟到那个变量.
intime = t
ElseIf t > "13:30" And t < "17:00" Then
leave_mins = "17:00" - t '在这个时间段里早退分钟.
outtime = t
ElseIf t >= "17:00" Then
outtime = MAX(t) '正常下班把下班最大的那个时间打的那次卡赋值
leave_mins = 0
'=================================
End If
dgDayreport.Cols = 13
dgDayreport.Rows = m + 1
For i = 1 To m
dgDayreport.TextMatrix(i, 1) = emp_id '卡号
dgDayreport.TextMatrix(i, 2) = emp_name '姓名
dgDayreport.TextMatrix(i, 3) = depart_name '部门
dgDayreport.TextMatrix(i, 4) = Sign_date '打卡日期
dgDayreport.TextMatrix(i, 5) = work_days '星期
dgDayreport.TextMatrix(i, 6) = intime '上班
dgDayreport.TextMatrix(i, 7) = outtime '下班
dgDayreport.TextMatrix(i, 8) = late_mins '迟到分钟
dgDayreport.TextMatrix(i, 9) = leave_mins '早退分钟
dgDayreport.TextMatrix(i, 10) = intime '暂定的数据,这里我想搞个变量做为请假数据,比如有请假数据的时候这里显示请假/病假等
dgDayreport.TextMatrix(i, 11) = absent_days '缺勤1天
dgDayreport.TextMatrix(i, 12) = "" '备注信息,请假内空显示
dgDayreport.Row = i
.MoveNext
Next i
End With
Loop
End Sub
上面的程序时间MIN和MAX不行啊,还有把这个函数删了时间比较也不对,显示能显示就是显示就是原来的T数据.不会根据对比赋值到各变量中去.大侠们帮忙看看呀.
补充:VB , 数据库(包含打印,安装,报表)