标题:已知年级总成绩库,求各单科的年级名次和班级名次,解释其原理,写出代码, ...
只看楼主
sdaqlf
Rank: 1
等 级:新手上路
帖 子:9
专家分:0
注 册:2017-8-1
得分:0 
回复 10楼 sdta
感谢10楼的鼓励
2017-08-02 08:46
sylknb
Rank: 4
等 级:贵宾
威 望:14
帖 子:1519
专家分:174
注 册:2006-6-3
得分:5 

用VFP6,简单点
use cjk

inde on -tot1 to ls   **总分倒排,分数大的在前,小的在后

copy to pmb1  &&必须生成物理库(新库,才能产生新的记录号),分数最高的排在庫的第一条记录
SELECT 2

use pmb1

Y='0001' && 分数最高者名次(mch)为1
 X=tot1  &&把最高分先赋于x
FOR I=1 TO RECCOUNT()
        GO I
        REPLACE MCh WITH IIF(tot1=X,Y,PADL(ALLTRIM(STR(RECNO(),4,0)),4,'0'))&&关鍵是iif里面的判断(刚打开表时。表中的总分=循环外的赋值,名次为“0001”,如果不等则用新的名次号,新的名次号用函数转化后的记录号
        Y=MCh    &&再把当前的一条记录的名次号赋于y
         X=tot1   &&再把当前的一条记录的成绩赋于x,然后再去比较I=2
ENDFOR


[此贴子已经被作者于2017-8-2 12:56编辑过]

2017-08-02 12:44
mywisdom88
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:190
帖 子:3125
专家分:8340
注 册:2015-3-25
得分:0 
以下是引用sylknb在2017-8-2 12:44:27的发言:


用VFP6,简单点
use cjk

inde on -tot1 to ls   **总分倒排,分数大的在前,小的在后

copy to pmb1  &&必须生成物理库(新库,才能产生新的记录号),分数最高的排在庫的第一条记录
SELECT 2

use pmb1

Y='0001' && 分数最高者名次(mch)为1
 X=tot1  &&把最高分先赋于x
FOR I=1 TO RECCOUNT()
        GO I
        REPLACE MCh WITH IIF(tot1=X,Y,PADL(ALLTRIM(STR(RECNO(),4,0)),4,'0'))&&关鍵是iif里面的判断(刚打开表时。表中的总分=循环外的赋值,名次为“0001”,如果不等则用新的名次号,新的名次号用函数转化后的记录号
        Y=MCh    &&再把当前的一条记录的名次号赋于y
         X=tot1   &&再把当前的一条记录的成绩赋于x,然后再去比较I=2
ENDFOR


要简单,SQL最简单,1句就出来了.

select 学号,总分,nvl((select count(1) from 成绩 where 总分>a.总分),0) +1 as 排名 from 成绩 as a INTO CURSOR tmp_成绩

2017-08-02 13:28
sdaqlf
Rank: 1
等 级:新手上路
帖 子:9
专家分:0
注 册:2017-8-1
得分:0 
感谢12楼和13楼两位专家的热情解答!
2017-08-02 15:01
sdta
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:江苏省连云港市
等 级:版主
威 望:323
帖 子:9621
专家分:26174
注 册:2012-2-5
得分:0 
速度是第一位,代码是第二位,用什么写代码不重要,关键是运行速度!

坚守VFP最后的阵地
2017-08-02 15:40
sylknb
Rank: 4
等 级:贵宾
威 望:14
帖 子:1519
专家分:174
注 册:2006-6-3
得分:0 
以下是引用mywisdom88在2017-8-2 13:28:40的发言:

 
 
要简单,SQL最简单,1句就出来了.
 
select 学号,总分,nvl((select count(1) from 成绩 where 总分>a.总分),0) +1 as 排名 from 成绩 as a INTO CURSOR tmp_成绩
 
虽简单,但不太好理介
2017-08-02 16:40
sdaqlf
Rank: 1
等 级:新手上路
帖 子:9
专家分:0
注 册:2017-8-1
得分:0 
以下是引用sdta在2017-8-1 19:11:55的发言:

没有自学能力是学不好VFP的

请问专家,为什么我把项目连编后运行时一闪而过?请指教。
2017-08-03 20:50



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




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

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