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


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

主题:工作时间统计问题

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


加好友 发短信
等级:管理员 帖子:47497 积分:251403 威望:0 精华:91 注册:2008/6/17 17:14:00
  发帖心情 Post By:2016/12/19 11:50:00 [显示全部帖子]

这样就行了:

Tables("表A").Sort = "第一列,时间"
Tables("表A").Filter = "第一列 is not null"
Dim d As Date
Dim r As Row
Dim r2 As Row = Tables("表A").Rows(0)
Dim t As new timespan(0,0,0,0)
For i As Integer = 0 To Tables("表A").Rows.Count - 1
    r = Tables("表A").Rows(i)
    If r2("第一列") = r("第一列") Then
        If r2("出入") = r("出入") Then
            r2 = r
            Continue For
        ElseIf r.IsNull("时间") = False AndAlso r2.IsNull("时间") = False
            r("第四列") = (cdate(r("时间")) - cdate(r2("时间"))).TotalSeconds
        End If
    Else
        r2 = r
    End If
Next
DataTables("表B").DataRows.clear()
For Each nm As String In DataTables("表A").GetValues("第一列")
    Dim dr As DataRow = DataTables("表B").aDdnew()
    dr("第一列") = nm
    dr("工作时间汇总") = DataTables("表A").Compute("sum(第四列)","第一列= '" & nm  & "'")
Next


记得将第二个表的工作时间汇总列改为时段型。

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


加好友 发短信
等级:管理员 帖子:47497 积分:251403 威望:0 精华:91 注册:2008/6/17 17:14:00
  发帖心情 Post By:2016/12/25 8:31:00 [显示全部帖子]

换个解题思路,简单可靠,望仔细体会:

Dim nms As List(of String) = DataTables("表A").GetValues("第一列","第一列 Is Not Null")
For Each nm As String In nms
    Dim drs1 As List(of DataRow) = DataTables("表A").Select("第一列= '" & nm & "' and 出入='1'","时间")
    Dim drs2 As List(of DataRow) = DataTables("表A").Select("第一列= '" & nm & "' and 出入='2'","时间")
    Dim cnt As Integer = Math.Min(drs1.Count,drs2.Count)
    For r As Integer = 0 To cnt - 1
        Dim sp As TimeSpan =  cdate(drs2(r)("时间")) - cdate(drs1(r)("时间"))
        If sp.TotalHours <=12 Then
            drs2(r)("第四列") = sp.TotalSeconds
        Else
            drs2(r)("第四列") = Nothing
        End If
    Next
Next
[此贴子已经被作者于2016/12/25 8:31:02编辑过]

 回到顶部