当前位置:编程学习 > VB >>

关于考勤时间分析问题

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 ,  数据库(包含打印,安装,报表)
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,