在VFP中用循环语句添加记录?

有一个表如下:姓名成绩名次李四98李那98王林96赵凡95孙欣95房卓88祝晴88请问:如何根据成绩添加名次字段的记录?并且相同的成绩名次要相同?这个表格中有两个98分的... 有一个表如下:
姓名 成绩 名次
李四 98
李那 98
王林 96
赵凡 95
孙欣 95
房卓 88
祝晴 88
请问:如何根据成绩添加名次字段的记录?并且相同的成绩名次要相同?
这个表格中有两个98分的,那么96分的名次应该是3。
可能是我没说清。针对这个表格,第一名是并列两个人,在名次中就不应该再出现2,我想名次字段出现的结果是:1,1,3,4,4,6,6.请问这个程序该怎样写?
展开
 我来答
单独谁找贼0e
2009-12-22 · TA获得超过450个赞
知道小有建树答主
回答量:373
采纳率:0%
帮助的人:528万
展开全部

*** 假设一:〔成绩〕〔名次〕皆为数字型字段;

*** 假设二:你没有进行过索引。

CLOSE ALL

CLEAR ALL

CLEAR

SET SAFETY OFF

USE YourTable

INDEX ON 成绩 TAG Achievem ADDITIVE DESCENDING

GO TOP

nLastAchievement = 0

nSequence = 0

DO WHILE NOT EOF()

 IF NOT 成绩 = nLastAchievement

  nSequence = nSequence + 1

 ENDIF

 REPLACE 名次 WITH nSequence

 nLastAchievement = 成绩

 SKIP

ENDDO

GO TOP

BROWSE LAST

CLOSE ALL

CLEAR ALL

SET SAFETY ON 

补充一:

*** ===================================================

&&& 你这个小妹妹还真难侍候!给了你一个同成绩同名次的处理方法,你还不满意?!

&&& 要是你当老师,同成绩却不同名次,那排在后一名的学生或家长跑来问你:

&&& 〔凭什么相同的成绩,会是不同的名次?〕你怎么回答呢???嘿嘿嘿。。。

&&& 好了,言归正传,你仔细对比一下下面的语句与上面的语句有何不同:

CLOSE ALL

CLEAR ALL

CLEAR

SET SAFETY OFF

USE YourTable

INDEX ON 成绩 TAG Achievem ADDITIVE DESCENDING

GO TOP

nLastAchievement = 0

nSequence = 0

DO WHILE NOT EOF()

* IF NOT 成绩 = nLastAchievement &&& 这一套 〔IF...ENDIF〕就是处理〔同成绩同名次〕的,把它删除了或注释了就不起作用了!

  nSequence = nSequence + 1

* ENDIF

 REPLACE 名次 WITH nSequence

 nLastAchievement = 成绩

 SKIP

ENDDO

GO TOP

BROWSE LAST

CLOSE ALL

CLEAR ALL

SET SAFETY ON 

补充二:

*** ===================

你的前言:

。。。并且相同的成绩名次要相同? 。。。

===================

baihualin1 2009-12-19 19:27:28

非常谢谢你给出的程序!在这个表格中,有两个98分的,96分的就应该是第三名,可按你写出的程序,96分的是第二名,这和要求不太相符。请问有没有解决的方法?

你的后语:

。。。这和要求不太相符。。。。

===================

看图写成语:

[前言不搭后语],嘿嘿嘿。。。是吧? 

补充三:

===================

不是做不到,是因为我这个人比较懒。。。

你自己动一下脑筋看看! 

补充四:

===================

I 服了 You!!!

*** 好了,这下应该不会再有补充了吧,呵呵...

*** Begin

CLOSE ALL

CLEAR ALL

CLEAR

SET SAFETY OFF

USE YourTable

INDEX ON 成绩 TAG Achievem ADDITIVE DESCENDING

GO TOP

nLastAchievement = 9999

nSequence = 0

nSameTimes = 0

nReplNo = 0

DO WHILE NOT EOF()

 nSequence = nSequence + 1

 IF 成绩 = nLastAchievement

  nSameTimes = nSameTimes + 1

  nReplNo = nSequence - nSameTimes

 ELSE

  nSameTimes = 0

  nReplNo = nSequence

 ENDIF

 REPLACE 名次 WITH nReplNo

 nLastAchievement = 成绩

 SKIP

ENDDO

GO TOP

BROWSE LAST

CLOSE ALL

CLEAR ALL

SET SAFETY ON

RETURN

*** End

推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式