Foxtable(狐表)用户栏目专家坐堂 → 考勤报表


  共有3525人关注过本帖树形打印复制链接

主题:考勤报表

帅哥哟,离线,有人找我吗?
大红袍
  11楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:贵宾 帖子:39310 积分:196782 威望:0 精华:1 注册:2015/4/25 9:23:00
  发帖心情 Post By:2016/6/12 1:22:00 [只看该作者]

参考代码

 

Dim sum As Double = 0
For Each dr As DataRow In e.DataRow.DataTable.Select("姓名 = '" & e.DataRow("姓名") & "'")
    Dim d As Date = dr("加班时间")
    sum += d.Hour * 3600 + d.Minute * 60 + d.Second
Next
e.Book.Marks("加班总计") = sum / 3600


 回到顶部
帅哥哟,离线,有人找我吗?
sf020cf
  12楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:一尾狐 帖子:412 积分:2665 威望:0 精华:0 注册:2015/10/2 23:48:00
  发帖心情 Post By:2016/6/12 11:26:00 [只看该作者]

原来是要这样才行,对了我想问一下,
<GroupHeader,考勤明细,姓名,1>
<GroupHeader,考勤明细,姓名,1>
<考勤明细,姓名>
<GroupFooter,考勤明细,姓名,1>
<GroupFooter,考勤明细,姓名,1>
<end>
模板是这样设计的,在保持现状的情况下,怎样让日期按升序排列 有的人统计出来的效果日期是排好的 有的是乱的

 回到顶部
帅哥哟,离线,有人找我吗?
大红袍
  13楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:贵宾 帖子:39310 积分:196782 威望:0 精华:1 注册:2015/4/25 9:23:00
  发帖心情 Post By:2016/6/12 11:31:00 [只看该作者]

这样写

 

<考勤明细,姓名|日期>


 回到顶部
帅哥哟,离线,有人找我吗?
sf020cf
  14楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:一尾狐 帖子:412 积分:2665 威望:0 精华:0 注册:2015/10/2 23:48:00
  发帖心情 Post By:2016/6/12 12:37:00 [只看该作者]

感谢红版

Select Case e.Book.TempLate
    Case "考勤"
        Dim str1 As String = ""
        Dim Filter As String = "姓名 = '" & e.DataRow("姓名") & "'"
        For Each dr As String In e.DataRow.DataTable.GetValues("早退时间", filter)
            str1 &= dr & ","
        Next
        e.Book.Marks("请假明细") = str1.trim(",")
        Dim sum As Double = 0
        For Each dr As DataRow In e.DataRow.DataTable.Select("姓名 = '" & e.DataRow("姓名") & "'")
            Dim d As Date = dr("加班时间")
            sum += d.Hour * 3600 + d.Minute * 60 + d.Second
        Next
        e.Book.Marks("加班总计") = sum/3600
        Dim sum1 As Double = 0
        For Each dr As DataRow In e.DataRow.DataTable.Select("姓名 = '" & e.DataRow("姓名") & "'")
            Dim d As Date = dr("迟到时间")
            sum1 += d.Hour * 3600 + d.Minute * 60 + d.Second
        Next
        e.Book.Marks("迟到总计") = sum1 /60
        Dim sum2 As Double = 0
        If e.Book.Marks("迟到总计")< 5 AndAlso e.Book.Marks("迟到总计")>0 Then
            sum2 = e.Book.Marks("加班总计")*18-10
        Else
            sum2 = e.Book.marks("加班总计")*18-(e.Book.Marks("迟到总计")-5)*10-10
        End If
        e.Book.Marks("加班费") = sum2
End Select

这个加班费:加班总计和迟到总计都为零,加班费理应也为0 为什么统计出来等于40 

e.Book.Marks("加班总计") = sum/3600 用round()还是其他的保留两位小数


 


 回到顶部
帅哥哟,离线,有人找我吗?
大红袍
  15楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:贵宾 帖子:39310 积分:196782 威望:0 精华:1 注册:2015/4/25 9:23:00
  发帖心情 Post By:2016/6/12 15:00:00 [只看该作者]

If e.Book.Marks("迟到总计")< 5 AndAlso e.Book.Marks("迟到总计")>0 Then
    sum2 = e.Book.Marks("加班总计")*18-10
ElseIf e.Book.Marks("迟到总计")>0 Then
    sum2 = e.Book.marks("加班总计")*18-(e.Book.Marks("迟到总计")-5)*10-10
End If

 回到顶部
帅哥哟,离线,有人找我吗?
sf020cf
  16楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:一尾狐 帖子:412 积分:2665 威望:0 精华:0 注册:2015/10/2 23:48:00
  发帖心情 Post By:2016/6/12 15:50:00 [只看该作者]

这个我想到了,后来改成

If e.Book.Marks("迟到总计") < = 5 AndAlso e.Book.Marks("迟到总计") <> 0 Then
            sum2 = e.Book.Marks("加班总计")*18-10
        ElseIf e.Book.Marks("迟到总计") > 5
            sum2 = e.Book.marks("加班总计")*18-(e.Book.Marks("迟到总计")-5)*10-10
        End If
        e.Book.Marks("加班费") = sum2 & "元"
劳烦我试过:<Round(<加班总计>,2)> 不行 那么在 e.Book.Marks("加班总计") = sum/3600 怎样直接限定保留两位小数就好


 


 回到顶部
帅哥哟,离线,有人找我吗?
大红袍
  17楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:贵宾 帖子:39310 积分:196782 威望:0 精华:1 注册:2015/4/25 9:23:00
  发帖心情 Post By:2016/6/12 17:41:00 [只看该作者]

e.Book.Marks("加班总计") = Format(sum/3600, "0.00")

 回到顶部
帅哥哟,离线,有人找我吗?
sf020cf
  18楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:一尾狐 帖子:412 积分:2665 威望:0 精华:0 注册:2015/10/2 23:48:00
  发帖心情 Post By:2016/6/12 17:48:00 [只看该作者]

谢谢版主

 回到顶部
总数 18 上一页 1 2