主题:关于排名次的问题
ffgzlxz
[专家分:0] 发布于 2009-03-16 14:55:00
有一个学生成绩库,按总分高低已排,名次字段要求,总分相同者名次一样,如,两第一,下来次就是第三,代码咋写?我急,各位大师帮帮啊!
回复列表 (共4个回复)
沙发
fyyylyl [专家分:8550] 发布于 2009-03-16 15:12:00
REPLACE ALL 名次 WITH RECNO()
GO top
n成绩=成绩
n名次=1
DO WHILE !EOF()
IF 成绩=n成绩
REPLACE 名次 WITH n名次
ENDIF
n成绩=成绩
n名次=名次
SKIP
ENDDO
板凳
qjbzjp [专家分:8830] 发布于 2009-03-16 16:24:00
[url=http://bbs.bccn.net/viewthread.php?tid=232909&extra=&highlight=&page=2]参考帖子[/url]
3 楼
心灵天窗 [专家分:0] 发布于 2009-03-16 17:45:00
[b] [size=1][color=0000FF] 大家好,我是刚来的,希望以后大家多多帮助[/color]。[/b][/size]
4 楼
jinlonggao [专家分:17130] 发布于 2009-03-16 18:02:00
假如你的成绩已按总分由高到低排过序了,假如你的成绩表也在当前工作区中打开了,如下代码可以一试:
m.mc = 0
m.xh = 0
m.zf = 10000 && m.zf 记录上一条记录的总分的内存变量,初始化为 10000
scan && 顺利成绩表
m.xh = m.xh + 1 && 序号加1
if zongfen < m.zf && 假设你成绩表中"总分"的字段名为"zongfen" , 如果本条记录的总分小于上一条记录,则
m.mc = m.xh && 本条记录的名次为本条记录的顺序号
m.zf = zongfen && 把本条记录的总分值给内存变量m.zf保存,以备与下一条记录的总分进行比较;
endif
repl mingci with m.mc && 假设你的成绩表中"名次"的字段名为 "mingci"
endscan
我来回复