Foxtable(狐表)用户栏目专家坐堂 → 工时计算问题


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

主题:工时计算问题

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


加好友 发短信
等级:六尾狐 帖子:1257 积分:8555 威望:0 精华:0 注册:2019/6/13 9:57:00
工时计算问题  发帖心情 Post By:2022/5/2 16:46:00 [显示全部帖子]

需求:加班工时=卡一+卡二都以超过15分钟(-00:15或00:15),以15分钟为单位或说每15分钟计算,



If e.DataCol.Name = "卡一" Then '如果
':
    If e.NewValue Is Nothing Then
        e.DataRow("加班工时") = Nothing
'       
    ElseIf e.NewValue > 00:15 Then 
        e.DataRow("加班工时") = 00:15 / 60 
             
    ElseIf e.NewValue > -00:15 Then
        e.DataRow("加班工时") = 00:15 / 60 
       
    Else
        e.DataRow("加班工时") = 0
    End If
End If

If e.DataCol.Name = "卡二" Then '如果
':
    If e.NewValue Is Nothing Then
        e.DataRow("加班工时") = Nothing
'       
    ElseIf e.NewValue > 00:15 Then 
        e.DataRow("加班工时") = 00:15 / 60 
             
    ElseIf e.NewValue > -00:15 Then
        e.DataRow("加班工时") = 00:15 / 60 
       
    Else
        e.DataRow("加班工时") = 0
    End If
End If

e.DataRow("加班工时") = "卡一" + "卡二"

请老师,帮助纠正,谢谢

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


加好友 发短信
等级:六尾狐 帖子:1257 积分:8555 威望:0 精华:0 注册:2019/6/13 9:57:00
  发帖心情 Post By:2022/5/4 22:48:00 [显示全部帖子]

 "卡一" , "卡二",加班工时,都是双精“时段”型,

存储的是什么数据, 大于或超过"卡一" , "卡二"的时间(15分钟),以15分钟单位,进行计算,转为小时为单位,存入”加班工时“列


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


加好友 发短信
等级:六尾狐 帖子:1257 积分:8555 威望:0 精华:0 注册:2019/6/13 9:57:00
  发帖心情 Post By:2022/5/7 12:23:00 [显示全部帖子]

 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:时间计算 - 问题.zip


上实例,请老师,帮纠正,完善一下,谢谢
能正确实现“加班工时”,“用时”的计算

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


加好友 发短信
等级:六尾狐 帖子:1257 积分:8555 威望:0 精华:0 注册:2019/6/13 9:57:00
  发帖心情 Post By:2022/5/7 14:53:00 [显示全部帖子]

1,计算“加班工时”

如果,“卡一”≥ - 00:15 or “卡一”≥  00:15,“卡二”≥ - 00:15 or “卡二”≥  00:15

      “加班工时”=“卡一”+“卡二”


具体计算方法:

A.当大于15分钟时(- 00:15或00:15),以15分钟进行计算

   卡一的加班工时 = 15分钟/60=0.25小时
   卡一的加班工时 = 30分钟/60=0.50小时
   卡一的加班工时 = 45分钟/60=0.75小时

   卡二的加班工时 = 15分钟/60=0.25小时
   卡二的加班工时 = 30分钟/60=0.50小时
   卡二的加班工时 = 45分钟/60=0.75小时

“加班工时”=“卡一”+“卡二”
问题一: 如何实现图一,每个大于等于15分钟时行计算


图片点击可在新窗口打开查看此主题相关图片如下:时间计算1.jpg
图片点击可在新窗口打开查看

问题二:如何实现,用时负数为正确数?如下图


图片点击可在新窗口打开查看此主题相关图片如下:时间计算2.jpg
图片点击可在新窗口打开查看






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


加好友 发短信
等级:六尾狐 帖子:1257 积分:8555 威望:0 精华:0 注册:2019/6/13 9:57:00
  发帖心情 Post By:2022/5/7 16:15:00 [显示全部帖子]

 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:时间计算 - 问题.zip


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


加好友 发短信
等级:六尾狐 帖子:1257 积分:8555 威望:0 精华:0 注册:2019/6/13 9:57:00
  发帖心情 Post By:2022/5/7 19:07:00 [显示全部帖子]

If e.DataCol.Name = "卡一" OrElse e.DataCol.Name = "卡三" OrElse e.DataCol.Name = "卡五" Then '如果
    Dim d1 As Double = Math.Abs(e.DataRow("卡一"))
    Dim d2 As Double = Math.Abs(e.DataRow("卡三"))
    Dim d2 As Double = Math.Abs(e.DataRow("卡五"))
    
    If d1 > 900 AndAlso d1 < 1800 Then
        d1 = 900
    ElseIf d1 >= 1800 AndAlso d1 < 2700 Then
        d1 = 1800
    ElseIf d1 >= 2700 Then
        d1 = 2700
    Else
        d1 = 0
    End If 
    
    If d2 > 900 AndAlso d2 < 1800 Then
        d2 = 900
    ElseIf d2 >= 1800 AndAlso d2 < 2700 Then
        d2 = 1800
    ElseIf d2 >= 2700 Then
        d2 = 2700
    Else
        d2 = 0
        
    End If 
    If d3 > 900 AndAlso d3 < 1800 Then
        d3 = 900
    ElseIf d3 >= 1800 AndAlso d3 < 2700 Then
        d3 = 1800
    ElseIf d3 >= 2700 Then
        d3 = 2700
    Else
        d3 = 0 
        
    End If 
    e.DataRow("加班工时") = d1 + d2 + d3
End If

老师,上面代码报错,提示“变量d1在封闭块中隐藏变量,
 Dim d1 As Double = Math.Abs(e.DataRow("卡一")),



 回到顶部