注册 登录
编程论坛 VFP论坛

如何统计A、B、C、D的个数,并计算总分

王咸美 发布于 2023-04-17 09:24, 1010 次点击
现有表文件cpb.dbf,如何统计A、B、C、D的个数,并计算总分,生成Tjb.dbf。[赋分规则 A:20 B:18 C:12 D:8],盼高手赐教,万分感谢!!!
只有本站会员才能查看附件,请 登录

只有本站会员才能查看附件,请 登录

只有本站会员才能查看附件,请 登录
9 回复
#2
sdta2023-04-17 09:48
又把老帖子翻出来了?
#3
王咸美2023-04-17 10:02
原来每个字段只有一个汉字,现在有5个字符。由于不会变通,还请指点一下,谢谢!!!

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

#4
sdta2023-04-17 10:50
程序代码:
CLOSE DATABASES
CREATE CURSOR tjb (班级 C(4),A1 N(4), B1 N(4), C1 N(4), D1 N(4), 总分 N(4))
INSERT INTO tjb (班级) SELECT DISTINCT 班级 FROM cpb
INDEX ON 班级 TAG bj
SELECT cpb
SET RELATION TO 班级 INTO tjb
ALINES(la1, "A,B,C,D", ",")
ALINES(la2, "20,18,12,8", ",")
SCAN
    FOR ln1 = 2 TO FCOUNT()
        lc1 = ALLTRIM(EVALUATE(FIELD(ln1)))
        FOR ln2 = 1 TO LEN(lc1)
            lc2 = SUBSTR(lc1, ln2, 1)
            IF FOUND("tjb")
                REPLACE (lc2 + "1")    WITH EVALUATE(lc2 + "1") + 1, 总分 WITH 总分 + VAL(la2[ASCAN(la1, lc2)]) IN tjb
            ENDIF
        ENDFOR
    ENDFOR
ENDSCAN
SET RELATION TO
SELECT tjb
BROWSE
#5
王咸美2023-04-17 11:13
@sdta 非常感谢!!!
#6
ybq10142023-04-17 13:25
回复 4楼 sdta
老哥,无敌的人很寂寞
#7
hu9jj2023-04-17 14:16
s版诲人不倦
#8
吹水佬2023-04-17 14:35
只有本站会员才能查看附件,请 登录

程序代码:
SET COMPATIBLE OFF
CREATE CURSOR tt (a I,b I,c I,d I)
INSERT INTO tt VALUES (20,18,12,8)
SELECT * FROM tt INTO ARRAY ci
DIMENSION cj[4]
SELECT *, cj[1] A, cj[2] B, cj[3] C, cj[4] D,;
     cj[1]*ci[1]+cj[2]*ci[2]+cj[3]*ci[3]+cj[4]*ci[4] 总分 FROM cpb WHERE fun()

FUNCTION fun()
    STORE 0 TO cj
    cs = ALLTRIM(s1-s2-s3-s4-s5-s6-s7-s8)
    FOR i=1 TO LEN(cs)
        k = ASC(SUBSTR(cs,i,1)) - ASC("A") + 1
        IF BETWEEN(k,1,4)
            cj[k] = cj[k] + 1
        ENDIF  
    ENDFOR
    RETURN .t.
ENDFUNC
#9
gs25367856782023-04-17 14:51
我的程序代码,通俗易懂,最和合初学者。
只有本站会员才能查看附件,请 登录

************
王咸美,我的代码朴实无华,通俗易懂,值得一看。
用最通俗的手法,写出最深刻的代码,这才是真正的程序员!

[此贴子已经被作者于2023-4-17 15:03编辑过]

#10
王咸美2023-04-17 17:41
谢谢各位的热心指点!一定好好学习。
1