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


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

主题:工作时间统计问题

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


加好友 发短信
等级:超级版主 帖子:13837 积分:69650 威望:0 精华:0 注册:2016/11/1 14:42:00
  发帖心情 Post By:2016/12/21 16:24:00 [显示全部帖子]

Access数据库还是sqlserver数据库?查询表的sql语句怎么写的?贴出来看看看。

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


加好友 发短信
等级:超级版主 帖子:13837 积分:69650 威望:0 精华:0 注册:2016/11/1 14:42:00
  发帖心情 Post By:2016/12/21 20:09:00 [显示全部帖子]

 如果第四列是字符列,不能统计。第四列,必须是数值列或者是时段列,才可以的。
[此贴子已经被作者于2016/12/21 20:09:29编辑过]

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


加好友 发短信
等级:超级版主 帖子:13837 积分:69650 威望:0 精华:0 注册:2016/11/1 14:42:00
  发帖心情 Post By:2016/12/21 20:13:00 [显示全部帖子]

sql语句里面把字符转数值这样写

 

Select convert(numeric(18,0), 你数据库的列名), 其它列 from {某表}


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


加好友 发短信
等级:超级版主 帖子:13837 积分:69650 威望:0 精华:0 注册:2016/11/1 14:42:00
  发帖心情 Post By:2016/12/22 9:02:00 [显示全部帖子]

 时间列,是不能直接汇总的,只有个数值列可以。

 

 你数据具体是怎样的?做个例子上来。而且,前面已经告诉你如何处理时间列了啊。


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


加好友 发短信
等级:超级版主 帖子:13837 积分:69650 威望:0 精华:0 注册:2016/11/1 14:42:00
  发帖心情 Post By:2016/12/22 9:51:00 [显示全部帖子]

 你查询表的sql语句怎么写的?

 

如果原本写 Select * from {表A}

 

现在就改成 Select convert(numeric(18,0) as 列名, * from {表A}


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


加好友 发短信
等级:超级版主 帖子:13837 积分:69650 威望:0 精华:0 注册:2016/11/1 14:42:00
  发帖心情 Post By:2016/12/22 11:43:00 [显示全部帖子]

Select convert(numeric(18,0), 列1) as 新的列名, * from {表A}

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


加好友 发短信
等级:超级版主 帖子:13837 积分:69650 威望:0 精华:0 注册:2016/11/1 14:42:00
  发帖心情 Post By:2016/12/22 16:01: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 idx As Integer = 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
            idx = 0
            Continue For
        ElseIf r.IsNull("时间") = False AndAlso r2.IsNull("时间") = False
            If idx = 0 Then
                r("第四列") = (cdate(r("时间")) - cdate(r2("时间"))).TotalSeconds
                idx = 1
            Else
                r("第四列") = Nothing
            End If
        End If
    Else
        r2 = r
        idx = 0
    End If
Next


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


加好友 发短信
等级:超级版主 帖子:13837 积分:69650 威望:0 精华:0 注册:2016/11/1 14:42:00
  发帖心情 Post By:2016/12/22 18:16: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 idx As Integer = 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
            idx = 0
            Continue For
        ElseIf r.IsNull("时间") = False AndAlso r2.IsNull("时间") = False
            If idx = 0 Then
                Dim sp As TimeSpan = cdate(r("时间")) - cdate(r2("时间"))
                If sp.TotalHours <= 12 Then
                    r("第四列") = sp.TotalSeconds
                Else
                    r("第四列") = Nothing
                   
                End If
                idx = 1
            Else
                r("第四列") = Nothing
            End If
        End If
    Else
        r2 = r
        idx = 0
    End If
Next


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


加好友 发短信
等级:超级版主 帖子:13837 积分:69650 威望:0 精华:0 注册:2016/11/1 14:42:00
  发帖心情 Post By:2016/12/22 18:16:00 [显示全部帖子]

 如果在你项目里面测试不行。应该是有其它代码影响了。你试试把你表事件的代码,都移除后测试。

 回到顶部