| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
共有 592 人关注过本帖
标题:根据数值大小(前5名,数值相同排名相同)对数据表中的每条记录的字段名进行 ...
只看楼主 加入收藏
王咸美
Rank: 1
等 级:新手上路
帖 子:696
专家分:3
注 册:2018-1-4
结帖率:97.63%
收藏
已结贴  问题点数:20 回复次数:4 
根据数值大小(前5名,数值相同排名相同)对数据表中的每条记录的字段名进行动态排序
现有表文件tt.dbf ,对每个学生学科成绩前5名进行排名,并将学科名写入学段pm中。请高手赐教,万分感谢!!!
排名规则:
1、动态排名:字段名可增加或减少,个数不固定;
2、数值相同,排名相同;
3、名次排列:① 1、1、3、4、5
           ② 1、2、2、4、5
           ③ 1、2、3、3、3、6
4、不同名次之间用分号(;)隔开,相同名次之间用顿号(、)隔开。
tt.rar (619 Bytes)

原始表Tt.dbf格式如下:
图片附件: 游客没有浏览图片的权限,请 登录注册

结果表格式如下:
图片附件: 游客没有浏览图片的权限,请 登录注册


[此贴子已经被作者于2025-3-12 10:59编辑过]

2025-03-12 10:55
wengjl
Rank: 14Rank: 14Rank: 14Rank: 14
等 级:贵宾
威 望:109
帖 子:2253
专家分:4013
注 册:2007-4-27
收藏
得分:8 
tt.rar (1 KB)

部分已解决,供参考!

只求每天有一丁点儿的进步就可以了
2025-03-12 13:12
王咸美
Rank: 1
等 级:新手上路
帖 子:696
专家分:3
注 册:2018-1-4
收藏
得分:0 
谢谢!!!
2025-03-12 13:52
星光悠蓝
Rank: 9Rank: 9Rank: 9
来 自:山水甲天下
等 级:贵宾
威 望:52
帖 子:529
专家分:1308
注 册:2010-1-11
收藏
得分:12 
增加字段测试也可以,是不是这样?
图片附件: 游客没有浏览图片的权限,请 登录注册

程序代码:
SET TALK OFF
USE d:\tt\tt.dbf
REPLACE PM WITH ''
ZDMC=''
Q1= AFIELDS(TTArray)  && 创建数组。
FOR i = 2 TO Q1-1   
    ZDMC=ZDMC+IIF(i#2,',','')+TTArray(i,1)  && 取字段名列表
ENDFOR
SCAN 
    Q1= AFIELDS(TTArray)  && 创建数组。
    DIMENSION ME(Q1-2)
    FOR i = 2 TO Q1-1 
       ME(i-1)= TTArray(i,1)  && 赋字段名用于排序
    ENDFOR
    *SCATTER FIELDS 语文,数学,外语,物理,化学,政治,历史,地理,生物,信息,艺术,体育 TO SArray 
    SCATTER FIELDS &ZDMC. TO SArray 
    FOR i=1 TO Q1-3
        FOR j=1 TO Q1-2-i
            IF SArray(j)<SArray(j+1)
                Mel=SArray(j)
                SArray(j)=SArray(j+1)
                SArray(j+1)=Mel
                Nel=ME(j)
                ME(j)=ME(j+1)
                ME(j+1)=Nel            
            ENDIF 
        ENDFOR
    ENDFOR
    ss=1
    AM=ME(1)
    FOR j =1 TO Q1-3
        ss=ss+1 
        IF SArray(j)=SArray(j+1)
            AM=AM+"、"+ME(j+1)
        ELSE
            IF ss>5
                EXIT
            ENDIF 
            AM=AM+","+ME(j+1)
        ENDIF  
    ENDFOR
    REPLACE PM WITH AM 
ENDSCAN
BROWSE 


2025-03-13 18:13
王咸美
Rank: 1
等 级:新手上路
帖 子:696
专家分:3
注 册:2018-1-4
收藏
得分:0 
谢谢!!!
2025-03-13 21:01
快速回复:根据数值大小(前5名,数值相同排名相同)对数据表中的每条记录的字段 ...
数据加载中...
 
   



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

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.026231 second(s), 11 queries.
Copyright©2004-2025, BC-CN.NET, All Rights Reserved