标题:求连续数据的筛选思路
只看楼主
sdta
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:江苏省连云港市
等 级:版主
威 望:323
帖 子:9621
专家分:26174
注 册:2012-2-5
得分:0 
给点测试数据

坚守VFP最后的阵地
2016-12-27 23:15
sdta
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:江苏省连云港市
等 级:版主
威 望:323
帖 子:9621
专家分:26174
注 册:2012-2-5
得分:0 
把旷工>=24小时的每个人的一行记录分成一天一条记录,过滤掉周六、周日的考勤记录,然后再查找连续三天旷工的记录。
比如第一条记录,是31天,就分成31条记录,以此类推。
也就是说,把列记录转换为行记录。

坚守VFP最后的阵地
2016-12-27 23:27
hu9jj
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:红土地
等 级:贵宾
威 望:396
帖 子:11713
专家分:43267
注 册:2006-5-13
得分:0 
可以考虑逐个员工计算,按照考勤记录,遇到旷工就开始计数、遇到节假日就跳过、遇到正常考勤就清零,超过三天的就很容易筛选出来了。

活到老,学到老! http://www. E-mail:hu-jj@
2016-12-28 07:40
lljchi
Rank: 2
等 级:论坛游民
帖 子:172
专家分:95
注 册:2016-7-21
得分:0 
回复 11楼 sdta
测试数据已上传
2016-12-28 08:25
吹水佬
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:432
帖 子:10064
专家分:41463
注 册:2014-5-20
得分:0 
数据只有1~31日,没有年月,这样怎样确定周六周日?
2016-12-28 09:06
lljchi
Rank: 2
等 级:论坛游民
帖 子:172
专家分:95
注 册:2016-7-21
得分:0 
回复 15楼 吹水佬
是根据当前月显示的
2016-12-28 09:10
吹水佬
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:432
帖 子:10064
专家分:41463
注 册:2014-5-20
得分:0 
这个问题应该不难解决。
某年某月某日是周六或周日,先确定某月的天数,再用DOW()返回就可以。
如果还要考虑节假日,这个与政策性有关,可以建一个数据表记录实际情况,写一个函数用来返回某年某月某日是否节假日。
2016-12-28 09:16
sdta
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:江苏省连云港市
等 级:版主
威 望:323
帖 子:9621
专家分:26174
注 册:2012-2-5
得分:20 
只考虑周六与周日的情况
程序代码:
close databases all
create cursor kgtj (姓名 c(10)) && 保存连续旷工三天的人员姓名
create cursor t1 (姓名 c(10),日期 d,旷工 n(2)) && 列记录转换为行记录用表
use 旷工 in 0 alias kg
select kg
scan
    scatter to asj
    for i=4 to fcount("kg")
        nday=val(right(field(i,"kg"),2))
        drq=date(year(date()),month(date()),nday)
        zdm=evaluate(field(i,"kg"))
        insert into t1 values (asj[1],drq,zdm)
    endfor
endscan
select t1
index on 姓名+dtoc(日期) tag xm for not inlist(dow(日期,2),6,7) && 过滤掉周六、周日
browse
cs=0
xm=姓名
scan
    if 姓名=xm and 旷工=8
        cs=cs+1
    else
        cs=0
    endif
    if cs=3
        insert into kgtj values (xm)
    endif
    xm=姓名
endscan
select kgtj
browse


[此贴子已经被作者于2016-12-28 10:43编辑过]


坚守VFP最后的阵地
2016-12-28 10:41
lljchi
Rank: 2
等 级:论坛游民
帖 子:172
专家分:95
注 册:2016-7-21
得分:0 
回复 18楼 sdta
感谢!
代码我慢慢研究,用了一些我不了解和不会灵活运用的知识
碰到这个问题后把您的博客又翻找了一遍
2016-12-28 11:24
lljchi
Rank: 2
等 级:论坛游民
帖 子:172
专家分:95
注 册:2016-7-21
得分:0 
回复 17楼 吹水佬
谢谢,上有政策下有对策啊
2016-12-28 11:28



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-472993-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.014508 second(s), 7 queries.
Copyright©2004-2025, BCCN.NET, All Rights Reserved