注册 登录
编程论坛 VFP论坛

自定义函数fun1( )、fun2( )可以合并为一个fun( ) 吗?

王咸美 发布于 2023-04-12 16:04, 194 次点击
只有本站会员才能查看附件,请 登录
(压缩文件中含表文件:kqb.dbf)
我想将下列代码中的自定义函数fun1( )、fun2( )可以合并为一个fun( ) ,不知可行,请高手赐教,万分感谢!!!

CLOSE DATABASES
CLEAR ALL
cPath=ADDBS(JUSTPATH(SYS(16)))
SET DEFAULT TO (cPath)

ALINES(cj,"早,中,晚",",")
ALINES(nj,"5,5,3.5",",")
* SELECT *,fun1("早") 早班,fun1("中") 中班,fun1("晚") 晚班, fun2() hj FROM kqb
                                                 && 在"查询"中显示统计结果
SELECT 姓名,fun1("早") 早班,fun1("中") 中班,fun1("晚") 晚班, fun2() hj FROM kqb INTO TABLE tongji
                                              && 在新表tongji.dbf中显示统计结果
BROWSE

FUNCTION fun1(cj) && 统计早、中、晚班个数
LOCAL i,ret1
ret1 = 0
FOR i=2 TO FCOUNT()
    IF ALLTRIM(EVALUATE(FIELD(i)))==cj
        ret1=ret1+1
    ENDIF
ENDFOR
RETURN ret1
ENDFUNC

FUNCTION fun2() && 统计每个人餐补费用
LOCAL i,ret2
ret2 = 0
FOR i=2 TO FCOUNT()
    ret2= ret2 + VAL(nj[ASCAN(cj,alltrim(EVALUATE(FIELD(i))))])
ENDFOR
RETURN ret2
ENDFUNC
4 回复
#2
吹水佬2023-04-12 18:21
这两个函数,重要的函数的返回结果。
试试带一个输入参数来决定是返回哪一个结果。
#3
王咸美2023-04-12 20:12
如何同时返回ret1和ret2的值?请指点。谢谢!
#4
吹水佬2023-04-12 20:22
程序代码:
ALINES(cj,"早,中,晚",",")
ALINES(nj,"5,5,3.5",",")
SELECT 姓名,fun("早") 早班,fun("中") 中班,fun("晚") 晚班,fun() 合计 FROM kqb

FUNCTION fun(cp)
    LOCAL i,ret
    ret = 0
    FOR i=2 TO FCOUNT()-1
        IF !EMPTY(cp)
            IF ALLTRIM(EVALUATE(FIELD(i)))==cp
                ret = ret + 1
            ENDIF
        ELSE
            ret = ret + VAL(nj[ASCAN(cj,alltrim(EVALUATE(FIELD(i))))])
        ENDIF
    ENDFOR
    RETURN ret
ENDFUNC
#5
王咸美2023-04-12 20:49
@吹水佬 谢谢🙏

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

1