Foxtable(狐表)用户栏目专家坐堂 → [求助]时间计算代码修改


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

主题:[求助]时间计算代码修改

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


加好友 发短信
等级:七尾狐 帖子:1530 积分:10633 威望:0 精华:0 注册:2008/9/24 11:16:00
[求助]时间计算代码修改  发帖心情 Post By:2014/9/26 20:38:00 [只看该作者]


计算同一员工时间记录的时差,如何通过修改代码,实现计算时差为实际时差的5倍,请各位老师指教,谢谢。

            drs = DataTables("C").Select("[序号] >= " & dr("序号") & " And [员工] = '" & dr("员工") & "'", "[序号]")
            For k As Integer = 1 To drs.Count - 1 '重算余下行的时差
                Dim t As TimeSpan = CDate(drs(k)("时间")) - CDate(drs(k-1)("时间"))
                drs(k)("用时") = (Format(t.Hours,"00") & ":" & Format(t.Minutes,"00") & ":" & Format(t.Seconds,"00"))
            Next

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


加好友 发短信
等级:七尾狐 帖子:1530 积分:10633 威望:0 精华:0 注册:2008/9/24 11:16:00
  发帖心情 Post By:2014/9/27 8:04:00 [只看该作者]


自己设法解决,方法是先将时间转换为以秒为单位的数值格式,乘以5以后再转换成时间格式。有没有更简洁的方法,请各位老师指教,谢谢

    For Each dr As DataRow In DataTables("C").DataRows
        Dim N As Integer
        Dim mr As DataRow = dr
        Dim drs As List(of DataRow)
        If dr.IsNull("用时") Then
            dr = DataTables("C").Find("[序号] < " & mr("序号") & " And [员工] = '" & mr("员工") & "'And [日期] = '" & mr("日期") & "'", "[序号] Desc") '找出上一行
            If dr Is Nothing Then '如果没有找到上一行,说明本行就是第一行
                N = mr("工时")
                mr("用时") = (new Date(1,1,1,0,0,0)).AddSeconds(N)
                dr = mr
            End If
            drs = DataTables("C").Select("[序号] >= " & dr("序号") & " And [员工] = '" & dr("员工") & "'And [日期] = '" & mr("日期") & "'", "[序号]")
            For k As Integer = 1 To drs.Count - 1 '重算余下行的时差
                Dim t As TimeSpan = CDate(drs(k)("时间")) - CDate(drs(k-1)("时间"))
                Dim d4 As Integer = t.Hours * 3600 + t.Minutes * 60 + t.Seconds
                Dim N1,h,m,s As Integer
                Dim sj As Date
                N1 = d4 * 5
                h = N1 \ 3600
                m = (N1 Mod 3600) \ 60
                s = N1 Mod 60
                drs(k)("用时") = Format(new Date(1,1,1,h,m,s), "HH:mm:ss")
            Next
        End If
    Next

 回到顶部