Foxtable(狐表)用户栏目专家坐堂 → 求,打卡数据处理思路,删除中间多余数据。


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

主题:求,打卡数据处理思路,删除中间多余数据。

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


加好友 发短信
等级:小狐 帖子:345 积分:4307 威望:0 精华:0 注册:2016/11/17 9:49:00
求,打卡数据处理思路,删除中间多余数据。  发帖心情 Post By:2023/2/28 14:41:00 [只看该作者]

表头如下:
工号 、姓名、时间、位置
记录如下:
001  张三   2023-02-27 07:54:34  地点1
001  张三   2023-02-27 08:54:34  地点1
001  张三   2023-02-27 09:54:34  地点1
001  张三   2023-02-27 12:54:34  地点1
001  张三   2023-02-27 20:54:34  地点1
001  张三   2023-02-28 07:54:34  地点1

问题如下:
1、需要删除中间的数据,即:只要最早的打卡记录与最晚的打卡记录(001  张三   2023-02-27 07:54:34  地点1与001  张三   2023-02-27 20:54:34  地点1)
2、最后的数据只保留一早一晚的记录,至于一天只有一次的打卡记录的我还没有思路如何处理?

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


加好友 发短信
等级:超级版主 帖子:110738 积分:563610 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2023/2/28 15:27:00 [只看该作者]

dim t as table = tables("表A")
t.sort = "工号,时间"
dim r1 as row = t.rows(t.rows.count - 1)
dim r as row
for i as integer = t.rows.count - 2 to 1 step -1
r = t.rows(i)
if r1("工号") = r("工号") andalso r1("时间").date = r("时间").date andalso t.rows(i-1)("工号") = r("工号") andalso t.rows(i-1)("时间").date = r("时间").date
r.delete
else
r1=r
end if
next

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


加好友 发短信
等级:小狐 帖子:345 积分:4307 威望:0 精华:0 注册:2016/11/17 9:49:00
  发帖心情 Post By:2023/3/31 10:11:00 [只看该作者]

蓝版,我把实体表改成窗口表后,提示:
.NET Framework 版本:4.0.30319.42000
Foxtable 版本:2022.8.18.1
错误所在事件:窗口,窗口1,Button6,Click
详细错误信息:
未找到类型“String”的公共成员“date”。

代码如下:
Dim t As Table = Tables("窗口1_Table1")
t.sort = "gh,sj"
Dim r1 As Row = t.rows(t.rows.count - 1)
Dim r As Row
For i As Integer = t.rows.count - 2 To 1 Step - 1
    r = t.rows(i)
    If r1("gh") = r("gh") AndAlso r1("sj").date = r("sj").date AndAlso t.rows(i - 1)("gh") = r("gh") AndAlso t.rows(i - 1)("sj").date = r("sj").date Then
        r.delete
    Else
        r1 = r
    End If
Next

求助,谢谢啦。

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


加好友 发短信
等级:超级版主 帖子:110738 积分:563610 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2023/3/31 10:16:00 [只看该作者]

sj列是字符列,不是日期列

AndAlso t.rows(i - 1)("sj") = r("sj")Then

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


加好友 发短信
等级:小狐 帖子:345 积分:4307 威望:0 精华:0 注册:2016/11/17 9:49:00
  发帖心情 Post By:2023/3/31 11:14:00 [只看该作者]

谢谢蓝版,目前我发现了一个问题:
我在mysql中把字段类型改为 datetime,但是导入窗口表,会丢失时间部分,即只有yyyy-mm-dd,所以我用Convert.ToDateTime(string),直接把字符串转换为日期时间类型。
另外目前数据量大约有100多万条记录,默认30秒的时间是显示超时的提示:
Timeout expired.  The timeout period elapsed prior to completion of the operation or the server is not responding. Timeout in IO operation
 可以在连接文件 config.json中,mysql连接信息追加一条:Connection Timeout= 2000 ,和 声明数据库连接的时候加一条如下:
Dim db = HySql.DataBaseFactory.CreateDatabase()
db.CommandTimeout = 200
.......
非常感谢蓝版,希望这些能帮助其它人。

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


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

时间部分不会丢失的,绑定表格后,设置一下窗口表的日期格式即可:http://www.foxtable.com/webhelp/topics/1611.htm

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


加好友 发短信
等级:小狐 帖子:345 积分:4307 威望:0 精华:0 注册:2016/11/17 9:49:00
  发帖心情 Post By:2023/3/31 11:38:00 [只看该作者]

好的 非常感谢,冒昧咨询,有没有直接把查询表转换为数据表的函数,遍历查询表然后再存储到foxtable的数据表效率好慢。

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


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

没有的

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


加好友 发短信
等级:小狐 帖子:345 积分:4307 威望:0 精华:0 注册:2016/11/17 9:49:00
  发帖心情 Post By:2023/3/31 11:47:00 [只看该作者]

还是非常感谢foxtable的蓝版,买了永久高开,很久没有用过了,非常谢谢。

 回到顶部