| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 3605 人关注过本帖, 1 人收藏
标题:考勤表统计
只看楼主 加入收藏
杂七杂八
Rank: 1
等 级:新手上路
帖 子:217
专家分:7
注 册:2018-2-20
结帖率:96%
收藏(1)
已结贴  问题点数:20 回复次数:13 
考勤表统计
有一张考勤表,记录数在3000~5000左右,其中每月的日期用J1~J31表示,每天的出勤状态用简称填写如病、事、旷表示,现统计每月的具体出勤天数(数值型)
附表,用VFP6.0
考勤表1.rar (433 Bytes)

求解.谢谢!
搜索更多相关主题的帖子: VFP6.0 天数 统计 考勤 表示 
2019-12-12 13:20
厨师王德榜
Rank: 18Rank: 18Rank: 18Rank: 18Rank: 18
等 级:贵宾
威 望:199
帖 子:987
专家分:4946
注 册:2013-2-16
收藏
得分:15 
代码供参考:
LOCAL bj ,sj ,kg,hj,cc,nx as Integer   && 病假/事假/旷工/婚假/出差/年休
LOCAL ii as Integer  && 1-31天
LOCAL fieldname ,fieldVal as String
STORE 0 TO bj ,sj ,kg,hj,cc,nx
SELECT 考勤表1  && 假定前面已经use 了这张表
GO TOP
SCAN
    FOR ii =1 TO 31
        fieldname = "J" + LTRIM(STR(ii))
        fieldVal = &fieldname
        DO CASE
            CASE fieldVal = '病'
                bj = bj + 1
            CASE fieldVal = '事'
                sj = sj + 1
            CASE fieldVal = '旷'
                kg = kg + 1
            CASE fieldVal = '婚'
                hj = hj + 1
            CASE fieldVal = '差'                                            
                cc = cc + 1
            CASE fieldVal = '年'            
                nx = nx + 1
        ENDCASE
    ENDFOR
    REPLACE 病假 WITH bj ,事假 WITH sj , 旷工 WITH kg ,婚假 WITH hj ,出差 WITH cc , 年休 WITH nx , ;
        合计 WITH  bj +sj +kg +hj +cc + nx
    STORE 0 TO bj ,sj ,kg,hj,cc,nx
ENDSCAN
MESSAGEBOX('完毕.',64,'考勤统计')
2019-12-12 14:00
杂七杂八
Rank: 1
等 级:新手上路
帖 子:217
专家分:7
注 册:2018-2-20
收藏
得分:0 
回复 2楼 厨师王德榜
我已试过了,好用.非常谢谢!厨师王德榜
我想在考勤表增加一个字段为单位部门名称,如分公司1,分公司2 来统计出各分公司当月出勤状态人数如病假几人,事假几人
部门         病假人数     事假人数     ***
分公司1         X            X          X
分公司2         X            X          X
能行吗?
2019-12-12 16:58
hu9jj
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:红土地
等 级:贵宾
威 望:400
帖 子:11771
专家分:43421
注 册:2006-5-13
收藏
得分:1 
当然可以,在计算时添加部门作为条件。

活到老,学到老!http://www.(该域名已经被ISP盗卖了)E-mail:hu-jj@
2019-12-12 18:12
杂七杂八
Rank: 1
等 级:新手上路
帖 子:217
专家分:7
注 册:2018-2-20
收藏
得分:0 
回复 4楼 hu9jj
我写一句
SELE BM,COUN(病假)AS 病假人数,COUN(事假)AS 事假人数 FROM 考勤表1 GROU BY BM   INTO TABL LST_TABL
结果显示 病假人数和事假人数二列的统计人数是一样的,这显然是错误的。
2019-12-12 21:07
杂七杂八
Rank: 1
等 级:新手上路
帖 子:217
专家分:7
注 册:2018-2-20
收藏
得分:0 
CLOSE DATABASES
USE 考勤表1
BLANK FIELDS 病假,事假,旷工,出差,年休 ALL

LOCAL bj ,sj ,kg,hj,cc,nx as Integer   && 病假/事假/旷工/婚假/出差/年休
LOCAL ii as Integer  && 1-31天
LOCAL fieldname ,fieldVal as String
STORE 0 TO bj ,sj ,kg,hj,cc,nx
SELECT 考勤表1  && 假定前面已经use 了这张表
GO TOP
SCAN
    FOR ii =1 TO 31
        fieldname = "J" + LTRIM(STR(ii))
        fieldVal = &fieldname
        DO CASE
            CASE fieldVal = '病'
                bj = bj + 1
            CASE fieldVal = '事'
                sj = sj + 1
            CASE fieldVal = '旷'
                kg = kg + 1
            CASE fieldVal = '婚'
                hj = hj + 1
            CASE fieldVal = '差'                                            
                cc = cc + 1
            CASE fieldVal = '年'            
                nx = nx + 1
        ENDCASE
    ENDFOR
    REPLACE 病假 WITH bj ,事假 WITH sj , 旷工 WITH kg ,婚假 WITH hj ,出差 WITH cc , 年休 WITH nx , ;
        合计 WITH  bj +sj +kg +hj +cc + nx
    STORE 0 TO bj ,sj ,kg,hj,cc,nx
ENDSCAN
MESSAGEBOX('完毕.',64,'考勤统计')
BROWSE

SELECT BM,COUN(病假) AS 病假人数,COUN(事假) AS 事假人数,COUN(旷工) AS 旷工人数 FROM 考勤表1 GROUP BY BM INTO TABLE LS_TABL
USE LS_TABL
BROW
考勤表1.rar (508 Bytes)
LS_TABL.rar (199 Bytes)


[此贴子已经被作者于2019-12-12 21:40编辑过]

2019-12-12 21:34
杂七杂八
Rank: 1
等 级:新手上路
帖 子:217
专家分:7
注 册:2018-2-20
收藏
得分:0 
SELE BM,COUN(病假)AS 病假人数,COUN(事假)AS 事假人数 FROM 考勤表1 GROU BY BM   INTO TABL LST_TABL
结果显示 病假人数和事假人数二列的统计人数是一样的
求助高手!!!
2019-12-13 04:36
schtg
Rank: 12Rank: 12Rank: 12
来 自:https://t.me/pump_upp
等 级:贵宾
威 望:67
帖 子:1541
专家分:3003
注 册:2012-2-29
收藏
得分:3 
回复 7楼 杂七杂八
非高手,提供一个思路简单的操作方法:
*|* Test.prg

select *,space(50) jz from 考勤表1 into cursor ls readwrite
cstr = ""
for i = 1 to 31
    cc = "j" + alltrim(str(m.i))
    cstr = cstr + "alltrim(" + alltrim(cc) + ")" + iif(m.i = 31,""," + ")
endfor
update ls set jz = &cstr.
select distinct bm as 部门,sum(iif("病"$jz,1,0)) as 病假,sum(iif("事"$jz,1,0)) as 事假,sum(iif("旷"$jz,1,0)) as 旷工  from ls group by bm into table hz

 也可以使用数组来解决问题的。
2019-12-13 10:37
sdta
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:江苏省连云港市
等 级:版主
威 望:335
帖 子:9795
专家分:26886
注 册:2012-2-5
收藏
得分:1 
如果一个人同时存在病假、旷工、事假,这算几个人

坚守VFP最后的阵地
2019-12-13 18:27
杂七杂八
Rank: 1
等 级:新手上路
帖 子:217
专家分:7
注 册:2018-2-20
收藏
得分:0 
回复 8楼 schtg
谢谢!!!
我试用了,管用。这是VFP9。0的代码吧。
2019-12-13 23:08
快速回复:考勤表统计
数据加载中...
 
   



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

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