Foxtable(狐表)用户栏目专家坐堂 → 求助:考勤报表产生


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

主题:求助:考勤报表产生

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


加好友 发短信
等级:二尾狐 帖子:526 积分:5083 威望:0 精华:0 注册:2015/4/15 15:25:00
求助:考勤报表产生  发帖心情 Post By:2016/11/15 17:34:00 [显示全部帖子]

考勤数据已从考勤机获取,表结构如下所示:
(困惑:上/下班数据不在同一行上。)

图片点击可在新窗口打开查看此主题相关图片如下:111.jpg
图片点击可在新窗口打开查看


查询了论坛的一些帖子,感觉下面的代码有用:
Dim dt1 As Date = #11/14/2016#
Dim dt2 As Date = #11/14/2016#
Dim dtb As New DataTableBuilder("统计表1")
dtb.AddDef("name", Gettype(String), 32)
dtb.AddDef("cardno", Gettype(String), 32)
dtb.AddDef("date", Gettype(Date))
dtb.AddDef("t1", Gettype(String))
dtb.AddDef("t2", Gettype(String))
dtb.Build
For Each dr1 As DataRow In DataTables("AtdRecord88").DataRows
    For i As Integer = 0 To (dt2 - dt1).TotalDays
        Dim dr2 As DataRow
        dr2 = DataTables("统计表1").Addnew
        dr2("name") = dr1("recName")
        dr2("CardNo") = dr1("CardNo")
        dr2("date") = dt1.AddDays(i)
        Dim drs As List(of DataRow) =  DataTables("AtdRecord88").Select("CardNo = '" & dr2("CardNo") & "'And Time >= #" & dr2("Date") & "# And Time < #" & dr2("Date").AddDays(1) & "# ")
        For n As Integer = 0 To drs.count -1
            If n = 0 Then
                dr2("t1") = Format(drs(n)("Time"),"HH:mm")
            ElseIf n = 1 Then
                dr2("t2") = Format(drs(n)("Time"),"HH:mm")
                Exit For
            End If
        Next
    Next
Next

得到如下结果:

图片点击可在新窗口打开查看此主题相关图片如下:222.jpg
图片点击可在新窗口打开查看


需要麻烦解决:
1.同一人的数据产生的2次(重复数据),删除其中1次;
2.若只刷了下班时候(12:00以后),希望时间能新增到t2,t1时间留空;---难的话,这点可以不解决

非常感谢~

[此贴子已经被作者于2016/11/15 17:36:58编辑过]

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


加好友 发短信
等级:二尾狐 帖子:526 积分:5083 威望:0 精华:0 注册:2015/4/15 15:25:00
  发帖心情 Post By:2016/11/18 15:39:00 [显示全部帖子]

 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:测试1116.foxdb




代码放在窗口了,运行结果都不是需要的。


[此贴子已经被作者于2016/11/18 16:35:52编辑过]

 回到顶部