Foxtable(狐表)用户栏目专家坐堂 → 加班统计条件


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

主题:加班统计条件

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


加好友 发短信
等级:贵宾 帖子:39310 积分:196782 威望:0 精华:1 注册:2015/4/25 9:23:00
  发帖心情 Post By:2016/8/9 15:16:00 [显示全部帖子]

比如代码

 

Dim d as date = "19:00"
Dim bz As Date = "17:05"

Dim sp As TimeSpan = d - bz
msgbox(sp.TotalHours)


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


加好友 发短信
等级:贵宾 帖子:39310 积分:196782 威望:0 精华:1 注册:2015/4/25 9:23:00
  发帖心情 Post By:2016/8/9 16:00:00 [显示全部帖子]

参考

 

Dim d As Date = "18:36"
Dim bz As Date = "17:35"

Dim sp As TimeSpan = d - bz
Dim n As Double = Math.Ceiling(sp.TotalMinutes / 30)

msgbox(n*0.5)


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


加好友 发短信
等级:贵宾 帖子:39310 积分:196782 威望:0 精华:1 注册:2015/4/25 9:23:00
  发帖心情 Post By:2016/8/11 14:36:00 [显示全部帖子]

参考,其余自己写

 

Select Case e.DataCol.Name
    Case "签退时间", "日期"
        Dim d As Date = e.DataRow("日期")
        If d.DayOfWeek = 0 OrElse d.DayOfWeek = 6 Then
            Dim bz As Date = "8:00"
            Dim sp As TimeSpan = d - bz
            Dim n As Double = Math.Ceiling(sp.TotalMinutes / 30)
            e.DataRow("二倍") = sp.TotalHours
        Else
            d = e.DataRow("签退时间")
            Dim bz As Date = "17:35"
           
            If d > bz Then
                If d > "19:30" Then
                    d = d.AddMinutes(-30)
                ElseIf d > "19:00" Then
                    d = "19:00"
                End If
                Dim sp As TimeSpan = d - bz
                Dim n As Double = Math.Ceiling(sp.TotalMinutes / 30)
               
                e.DataRow("一倍") = n
            End If
        End If
End Select


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


加好友 发短信
等级:贵宾 帖子:39310 积分:196782 威望:0 精华:1 注册:2015/4/25 9:23:00
  发帖心情 Post By:2016/8/12 15:58:00 [显示全部帖子]

被赋值的列,不能判断,如红色的,要去掉。

 

Select Case e.DataCol.Name  
    Case  "日期","签到时间","迟到H"

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


加好友 发短信
等级:贵宾 帖子:39310 积分:196782 威望:0 精华:1 注册:2015/4/25 9:23:00
  发帖心情 Post By:2016/8/12 18:10:00 [显示全部帖子]

以下是引用zhangning在2016/8/12 17:09:00的发言:
按照老师说的,去掉了"迟到H"和"早退H",问题就解决了,
被赋值的列,不能判断, 相关的不明白,老师发些学习资料地址呗

 

一般情况,是没问题的。

 

如果你加入这几列的判断,只要代码稍微编写不严谨,就会照成死循环,所以一般不要判断被赋值的列。


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


加好友 发短信
等级:贵宾 帖子:39310 积分:196782 威望:0 精华:1 注册:2015/4/25 9:23:00
  发帖心情 Post By:2016/8/16 14:57:00 [显示全部帖子]

改成

 

            If qd < "12:00" AndAlso dt >= "19:30" Then

                e.DataRow("二倍加班H") = n*0.5 - 1.5

            ElseIf qd < "12:00" AndAlso dt > "13:00" Then

                e.DataRow("二倍加班H") = n*0.5 - 1
            Else
                e.DataRow("二倍加班H") = n*0.5
            End If

 回到顶部