以下是引用月沐庭轩在2012-11-14 19:30:18的发言:
我是用了replace语句。
USE 年休假汇总表
SCAN
REPLACE 工作年限 WITH f工作年限(工作时间)
REPLACE 年休假天数 WITH f年休假天数(工作年限)
REPLACE 本年应休 WITH ALLTRIM(STR(VAL(年休假天数)+VAL(上年未休)))
REPLACE 合计 WITH ALLTRIM(STR(VAL(一月)+VAL(二月)+VAL(三月)+VAL(四月)+VAL(五月)+VAL(六月)+VAL(七月)+VAL(八月)+VAL(九月)+VAL(十月)+VAL(十一月)+VAL(十二月)))
REPLACE 年休假剩余 WITH ALLTRIM(STR(VAL(本年应休)-VAL(合计)))
ENDSCAN
BROWSE
FUNCTION f工作年限(工作时间)
当前总月份=YEAR(DATE())*12+MONTH(DATE())
参加工作总月份=VAL(LEFT(ALLTRIM(m.工作时间),4))*12+VAL(RIGHT(ALLTRIM(m.工作时间),2))
f工作年限=ALLTRIM(STR(INT((当前总月份-参加工作总月份)/12)))
RETURN f工作年限
ENDFUNC
FUNCTION f年休假天数(工作年限)
f年休假天数=""
DO CASE
CASE VAL(m.工作年限)>=20
f年休假天数="15"
CASE VAL(m.工作年限)>=10
f年休假天数="10"
CASE VAL(m.工作年限)>=1
f年休假天数="5"
ENDCASE
RETURN f年休假天数
ENDFUNC
首先要谢谢你,不过我看了下,还是存在几个不足:我是用了replace语句。
USE 年休假汇总表
SCAN
REPLACE 工作年限 WITH f工作年限(工作时间)
REPLACE 年休假天数 WITH f年休假天数(工作年限)
REPLACE 本年应休 WITH ALLTRIM(STR(VAL(年休假天数)+VAL(上年未休)))
REPLACE 合计 WITH ALLTRIM(STR(VAL(一月)+VAL(二月)+VAL(三月)+VAL(四月)+VAL(五月)+VAL(六月)+VAL(七月)+VAL(八月)+VAL(九月)+VAL(十月)+VAL(十一月)+VAL(十二月)))
REPLACE 年休假剩余 WITH ALLTRIM(STR(VAL(本年应休)-VAL(合计)))
ENDSCAN
BROWSE
FUNCTION f工作年限(工作时间)
当前总月份=YEAR(DATE())*12+MONTH(DATE())
参加工作总月份=VAL(LEFT(ALLTRIM(m.工作时间),4))*12+VAL(RIGHT(ALLTRIM(m.工作时间),2))
f工作年限=ALLTRIM(STR(INT((当前总月份-参加工作总月份)/12)))
RETURN f工作年限
ENDFUNC
FUNCTION f年休假天数(工作年限)
f年休假天数=""
DO CASE
CASE VAL(m.工作年限)>=20
f年休假天数="15"
CASE VAL(m.工作年限)>=10
f年休假天数="10"
CASE VAL(m.工作年限)>=1
f年休假天数="5"
ENDCASE
RETURN f年休假天数
ENDFUNC
1、“合计”的运行结果都是整数
2、“年休假天数”也没有达到我想要的结果,可能你们还没有理解我的意思,我再举个例子吧,某人2000年2月开始工作,2010年1月统计休假天数,那么他工作年限不足10年,9年11个月份,那么他首先有5天的休假,然后多出来的11个月也要计算天数,即(11/12)*5,总的天数就是5+(11/12)*5。如果2010年4月统计休假天数,那么他满足的10年的工作年限,享受10天的休假,然后多出来的2个月也要计算,即(2/12)*10,总的天数就是10+(2/12)*10。
想学好VFP,想做VFP高手,想帮助更多的人解决VFP问题!