| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1781 人关注过本帖
标题:求连续数据的筛选思路
只看楼主 加入收藏
sdta
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:江苏省连云港市
等 级:版主
威 望:335
帖 子:9841
专家分:27213
注 册:2012-2-5
收藏
得分:0 
给点测试数据

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

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

活到老,学到老!http://www.(该域名已经被ISP盗卖了)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
等 级:版主
威 望:451
帖 子:10607
专家分:43186
注 册: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
等 级:版主
威 望:451
帖 子:10607
专家分:43186
注 册:2014-5-20
收藏
得分:0 
这个问题应该不难解决。
某年某月某日是周六或周日,先确定某月的天数,再用DOW()返回就可以。
如果还要考虑节假日,这个与政策性有关,可以建一个数据表记录实际情况,写一个函数用来返回某年某月某日是否节假日。
2016-12-28 09:16
sdta
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:江苏省连云港市
等 级:版主
威 望:335
帖 子:9841
专家分:27213
注 册: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
快速回复:求连续数据的筛选思路
数据加载中...
 
   



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

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