标题:如何计算一月份每个人的餐补费用
只看楼主
王咸美
Rank: 1
等 级:新手上路
帖 子:569
专家分:0
注 册:2018-1-4
结帖率:96.99%
已结贴  问题点数:20 回复次数:10 
如何计算一月份每个人的餐补费用
如何计算每个人一月份的餐补费用?早、中班餐补5元,晚班餐补3.5元。数据很多,仅列举部分,供测试用。请高手赐教,万分感谢!【由于电脑不在身边,无法上传具体数据】


[此贴子已经被作者于2023-4-8 19:24编辑过]

搜索更多相关主题的帖子: 数据 上传 月份 计算 测试 
2023-04-08 19:22
sdta
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:江苏省连云港市
等 级:版主
威 望:323
帖 子:9621
专家分:26174
注 册:2012-2-5
得分:0 
等你电脑在身边了,上传相关表。

坚守VFP最后的阵地
2023-04-08 19:38
shizi0
Rank: 3Rank: 3
等 级:论坛游侠
威 望:3
帖 子:32
专家分:116
注 册:2012-10-2
得分:3 
cFld='jan_01+jan_02.....'
select 姓名,sum(occurs('早',evalute(cFld))*3.5+occurs('中',evalute(cFld))*5+occurs('晚',evalute(cFld))*5) as 总餐补 from 表 group by 姓名
2023-04-08 20:52
王咸美
Rank: 1
等 级:新手上路
帖 子:569
专家分:0
注 册:2018-1-4
得分:0 
谢谢!相加的字段有31个之多,对应31天。Jan_01+Jan_02+Jan_03+……+Jan_31这31个字段值相加如何简写?望赐教。谢谢!
2023-04-08 22:26
pvm2000
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:24
帖 子:159
专家分:256
注 册:2022-12-22
得分:1 
以下是引用王咸美在2023-4-8 22:26:37的发言:

谢谢!相加的字段有31个之多,对应31天。Jan_01+Jan_02+Jan_03+……+Jan_31这31个字段值相加如何简写?望赐教。谢谢!

这个简单,用宏替换
2023-04-09 00:58
王咸美
Rank: 1
等 级:新手上路
帖 子:569
专家分:0
注 册:2018-1-4
得分:0 
宏替换怎么用,请指点!谢谢!
2023-04-09 06:56
吹水佬
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:432
帖 子:10064
专家分:41463
注 册:2014-5-20
得分:8 
理顺一下数据关系,数据结构应该可以优化一下,算法会灵活一些。

程序代码:
ALINES(cj,"早,中,晚",",")
ALINES(nj,"5,5,3.5",",")
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() hj FROM tt

FUNCTION fun()
    LOCAL i,ret
    ret = 0
    FOR i=2 TO FCOUNT()
        ret = ret + VAL(nj[ASCAN(cj,EVALUATE(FIELD(i)))])
    ENDFOR
    RETURN ret
ENDFUNC


2023-04-09 08:03
sdta
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:江苏省连云港市
等 级:版主
威 望:323
帖 子:9621
专家分:26174
注 册:2012-2-5
得分:8 
程序代码:
CREATE CURSOR tt (xm c(10), hj n(6,2), a01 c(4), a02 c(4), a03 c(4))
INSERT INTO tt VALUES ("aaa", 0, "中", "早", "晚")
INSERT INTO tt VALUES ("bbb", 0, "晚", "晚", "晚")
INSERT INTO tt VALUES ("ccc", 0, "中", "早", "早")
SCAN
    lnsum = 0 
    FOR ln = 3 TO FCOUNT() 
        lnsum = lnsum + IIF(INLIST(EVALUATE(FIELD(ln)), "中", "早"), 5, 3.5)
    ENDFOR
    REPLACE hj WITH lnsum
ENDSCAN 
BROWSE 

坚守VFP最后的阵地
2023-04-09 08:33
王咸美
Rank: 1
等 级:新手上路
帖 子:569
专家分:0
注 册:2018-1-4
得分:0 
谢谢各位的热心指点!我想另外生成一张表 Cbb.dbf 字段名为:姓名 C(10),早班(个)N(4),中班 N(4),晚班(个)N(4),餐补 N(5,1) 请各位赐教,谢谢!!!

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

2023-04-09 09:34
sam_jiang
Rank: 8Rank: 8
等 级:贵宾
威 望:10
帖 子:542
专家分:781
注 册:2021-10-13
得分:0 
感觉餐补明细账的表格应该设置为姓名,日期,班次,餐补四个字段,31个字段太多了。难道每个月做一个表格?
2023-04-09 10:17



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




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

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