Foxtable(狐表)用户栏目专家坐堂 → 请教老师考勤数据处理


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

主题:请教老师考勤数据处理

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


加好友 发短信
等级:小狐 帖子:366 积分:3522 威望:0 精华:0 注册:2016/5/25 21:31:00
请教老师考勤数据处理  发帖心情 Post By:2019/7/2 17:29:00 [只看该作者]

原始记录为每行一个时间,同一日打6次卡
需要按月度对员工所有考勤进行汇总处理,并按班次时段归到对应列去,怎么统计代码
需要实现下面的结果

图片点击可在新窗口打开查看此主题相关图片如下:微信图片_20190702172614.png
图片点击可在新窗口打开查看
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:考勤.table

谢谢老师

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


加好友 发短信
等级:超级版主 帖子:110597 积分:562881 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2019/7/2 21:10:00 [只看该作者]

Dim dtb As New DataTableBuilder("统计")
dtb.AddDef("编号", Gettype(String), 16)
dtb.AddDef("打卡时间", Gettype(Date))
For Each r As Row In Tables("班次").Rows
    dtb.AddDef(r("打卡时段"), Gettype(Date))
Next
dtb.Build()
MainTable= Tables("统计")
For Each r As Row In Tables("班次").Rows
    DataTables("统计").DataCols(r("打卡时段")).SetDateTimeFormat(DateTimeFormatEnum.Time)
Next
Dim ds As List(Of String) = DataTables("考勤表").SQLGetValues("编号+','+format(打卡时间,'yyyy-MM-dd')")
For Each s As String In ds
    Dim s1() As String = s.Split(",")
    Dim r1 As Row = Tables("统计").AddNew
    r1("编号") = s1(0)
    Dim d As Date = cdate(s1(1))
    r1("打卡时间") = s1(1)
    For Each dr As DataRow In DataTables("考勤表").Select("编号='" & s1(0) & "' And 打卡时间 >= #" & d & "# And 打卡时间<#" & d.AddDays(1) & "#")
        Dim d2 As Date = cdate(Format(dr("打卡时间"),"1900-01-01 HH:mm:ss"))
        Dim dr2 As DataRow = DataTables("班次").Find("起始时间 <= #" & d2 & "# And 结束时间 >=#" & d2 & "#")
        If dr2 IsNot Nothing Then
            r1(dr2("打卡时段")) = d2
        End If
    Next
Next
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:考勤.zip


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


加好友 发短信
等级:小狐 帖子:366 积分:3522 威望:0 精华:0 注册:2016/5/25 21:31:00
  发帖心情 Post By:2019/7/3 0:08:00 [只看该作者]

蓝老师,代码可以用,不过在由于实际员工打卡并不规范,很多打卡不在设置范围内,造成记录未汇总上来
能否不按班次,直接将所有同日的记录汇总在一行里,像下面这样

图片点击可在新窗口打开查看此主题相关图片如下:微信图片_20190703000704.png
图片点击可在新窗口打开查看


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


加好友 发短信
等级:超级版主 帖子:110597 积分:562881 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2019/7/3 8:48:00 [只看该作者]

Dim dtb As New DataTableBuilder("统计")
dtb.AddDef("编号", Gettype(String), 16)
dtb.AddDef("打卡时间", Gettype(Date))
dtb.AddDef("打卡时段", Gettype(String),255)
dtb.Build()
MainTable= Tables("统计")

Dim ds As List(Of String) = DataTables("考勤表").SQLGetValues("编号+','+format(打卡时间,'yyyy-MM-dd')")
For Each s As String In ds
    Dim s1() As String = s.Split(",")
    Dim r1 As Row = Tables("统计").AddNew
    r1("编号") = s1(0)
    Dim d As Date = cdate(s1(1))
    r1("打卡时间") = s1(1)
    r1("打卡时段") = DataTables("考勤表").SQLGetComboListString("format(打卡时间,'HH:mm')","编号='" & s1(0) & "' And 打卡时间 >= #" & d & "# And 打卡时间<#" & d.AddDays(1) & "#").replace("|"," ")
Next

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


加好友 发短信
等级:婴狐 帖子:11 积分:126 威望:0 精华:0 注册:2019/7/3 7:14:00
  发帖心情 Post By:2019/7/3 10:51:00 [只看该作者]

请问各位老师这种表格用foxtable制作,谢谢!
图片点击可在新窗口打开查看此主题相关图片如下:360截图20190703104826116.jpg
图片点击可在新窗口打开查看


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


加好友 发短信
等级:超级版主 帖子:110597 积分:562881 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2019/7/3 11:13:00 [只看该作者]

用法和上面差不多,创建临时表,然后根据考勤表数据进行填充。

论坛搜索“考勤”,看看别人用法

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


加好友 发短信
等级:小狐 帖子:366 积分:3522 威望:0 精华:0 注册:2016/5/25 21:31:00
  发帖心情 Post By:2019/7/3 19:49:00 [只看该作者]

蓝老师,只能用内部表吗,用外部ACCESS或SQL数据库出错


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


加好友 发短信
等级:超级版主 帖子:110597 积分:562881 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2019/7/4 8:38:00 [只看该作者]

内部外部都可以,外部表提示什么错误?

能不能主动一点把错误描述发上来的,方便别人分析问题,还要每次等我们问,何必呢。
[此贴子已经被作者于2019/7/4 8:38:54编辑过]

 回到顶部