注册 登录
编程论坛 VFP论坛

如何统计每个人每月早、中、晚班天数

王咸美 发布于 2023-04-09 11:57, 681 次点击
现有表文件,如何统计每个人每月早、中、晚班天数,【字段名为:姓名 C(10),早班(个) N(4), 中班(个) N(4), 晚班(个) N(4),餐补 N(5,1)】餐补计算方法:早、中班餐补5元,晚班餐补3.5元。请高手赐教,万分感谢!
只有本站会员才能查看附件,请 登录


[此贴子已经被作者于2023-4-9 12:29编辑过]

3 回复
#2
吹水佬2023-04-09 13:33
之前的大同小异,变通一下就可以
只有本站会员才能查看附件,请 登录

程序代码:
CREATE CURSOR tt (xm c(10), j1 c(2), j2 c(2), j3 c(2))
INSERT INTO tt VALUES ("姓名1","早","中","晚")
INSERT INTO tt VALUES ("姓名2","中","晚","早")
INSERT INTO tt VALUES ("姓名3","早","晚","早")
INSERT INTO tt VALUES ("姓名4","晚","中","晚")
SELECT *, fun("早") 早班, fun("中") 中班, fun("晚") 晚班 FROM tt

FUNCTION fun(cj)
    LOCAL i,ret
    ret = 0
    FOR i=2 TO FCOUNT()
        IF EVALUATE(FIELD(i))==cj
            ret = ret + 1
        ENDIF
    ENDFOR
    RETURN ret
ENDFUNC

#3
sdta2023-04-09 13:42
程序代码:
CREATE CURSOR tj (xm c(10), 餐补 n(5,1), 早班 n(4), 中班 n(4), 晚班 n(4))
CREATE CURSOR tt (xm c(10), hj n(6,2), a01 c(2), a02 c(2), a03 c(2))
INSERT INTO tt VALUES ("aaa", 0, "中", "早", "晚")
INSERT INTO tt VALUES ("bbb", 0, "晚", "晚", "晚")
INSERT INTO tt VALUES ("ccc", 0, "中", "早", "早")
SCAN
    lnsum = 0
    lcStr = SPACE(0)
    FOR ln = 3 TO FCOUNT()
        lnsum = lnsum + IIF(INLIST(EVALUATE(FIELD(ln)), "中", "早"), 5, 3.5)
        lcStr = lcStr + "," + EVALUATE(FIELD(ln))
    ENDFOR
    INSERT INTO tj VALUES (tt.xm, lnsum, OCCURS("早", lcStr), OCCURS("中", lcStr), OCCURS("晚", lcStr))
ENDSCAN
SELECT tj
BROWSE

只有本站会员才能查看附件,请 登录
#4
王咸美2023-04-09 13:55
谢谢两位的热心指点!!!
1