标题:同分同名次示例
只看楼主
sdta
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:江苏省连云港市
等 级:版主
威 望:323
帖 子:9621
专家分:26174
注 册:2012-2-5
结帖率:86.67%
 问题点数:0 回复次数:2 
同分同名次示例
程序代码:
* VFP9代码
SET SAFETY OFF 
SET COLLATE TO "MACHINE" 
=SYS(3099,70) 
cStr="班级,总分,语文,数学,英语,物理,化学,生物,历史,地理,政治"
=ALINES(azdm,cStr,",")
nbj=50
CREATE CURSOR cj (bjh c(2),xh c(6),km c(4),kmbh n(2),cj n(4)) && bjh:班级编号,xh:学号,km:科目,kmbh:科目编号 排序时用
* 生成测试数据
=RAND(-1)
FOR i=1 TO nbj && 班级
    FOR ii=3 TO ALEN(azdm,1) && 科目
        FOR iii=1 TO 60 && 每个班60人
            INSERT INTO cj VALUES (PADL(i,2,"0"),PADL(i,2,"0")+PADL(iii,4,"0"),azdm[ii],ii-1,RAND()*IIF(BETWEEN(ii,3,5),150,60))
        ENDFOR
    ENDFOR
ENDFOR
*!* 数据处理
t1=SECONDS()
SELECT *,0000 bjmc,00000 njmc FROM cj ORDER BY bjh,kmbh,cj DESC INTO CURSOR mc READWRITE 
*!* 按照bjh、kmbh排班级名次
nbj="" && 记录班级号
ckm="" && 记录km(科目)名称
mc=1 && 记录班级名次
ncj=0 && 记录上条记录的cj
nrs=1 && 记录班级单科人数
*BROWSE 
SCAN
    IF bjh!=nbj 
        STORE 1 TO nrs,mc
    ELSE
        IF km!=ckm
            STORE 1 TO nrs,mc
        ENDIF
        IF cj!=ncj
            mc=nrs
        ENDIF
    ENDIF
    REPLACE bjmc WITH mc
    nrs=nrs+1
    ncj=cj
    nbj=bjh
    ckm=km
ENDSCAN
*BROWSE 
*!* 按照km(科目)、cj(成绩)排年级名次
INDEX ON km+str(cj) Tag px descending
mc=0 && 记录KM年级名次
ncj=0 && 记录上条记录成绩
nrs=1 && 记录单科科目的人数
ckm="" && 记录上条记录的科目
SCAN
    IF km!=ckm
        STORE 1 TO nrs,mc
    ELSE
        IF cj!=ncj
            mc=nrs
        ENDIF
    ENDIF
    REPLACE njmc WITH mc
    nrs=nrs+1
    ncj=cj
    ckm=km
ENDSCAN
SET ORDER TO
MESSAGEBOX(TRANSFORM(RECCOUNT("mc"))+" 条记录共运行:"+TRANSFORM(SECONDS()-t1)+"秒")
GO TOP 
BROWSE 
搜索更多相关主题的帖子: 同名 FOR IF 记录 BROWSE 
2017-10-28 14:12
分号
Rank: 1
等 级:新手上路
帖 子:154
专家分:0
注 册:2006-12-4
得分:0 
你这个程序好像不能排单科的班级名次和年级名次吧?
2017-10-28 21:19
sdta
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:江苏省连云港市
等 级:版主
威 望:323
帖 子:9621
专家分:26174
注 册:2012-2-5
得分:0 
回复 2楼 分号
这个代码你运行过了

坚守VFP最后的阵地
2017-10-28 21:51



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




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

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