| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1942 人关注过本帖
标题:VFP中对某字段(学院)按自定义顺序排列,求代码?
只看楼主 加入收藏
dengxsh
Rank: 2
等 级:论坛游民
帖 子:87
专家分:40
注 册:2013-2-26
结帖率:73.68%
收藏
已结贴  问题点数:10 回复次数:6 
VFP中对某字段(学院)按自定义顺序排列,求代码?
比如:
    有一报名表(bm.dbf),其中含有学院字段(studep),原报名记录随机排列。
    现需要对学院字段(studep)按照“轻工学部、机械学院、电气学院、计算机学院”自定义顺序进行重新排列。
搜索更多相关主题的帖子: 计算机学院 报名表 机械 记录 
2014-01-07 20:39
qjbzjp
Rank: 13Rank: 13Rank: 13Rank: 13
来 自:尧的故乡
等 级:贵宾
威 望:48
帖 子:1914
专家分:4397
注 册:2007-3-14
收藏
得分:4 
新建一个数值型字段,用来排序。先用Replace all studep with 1 for stedep="轻工学部"、……。
将“轻工学部、机械学院、电气学院、计算机学院”记录的排序字段置换为1、2、3……

相互学习,互相交流,共同提高。
2014-01-07 20:49
dengxsh
Rank: 2
等 级:论坛游民
帖 子:87
专家分:40
注 册:2013-2-26
收藏
得分:0 
请赐予全部代码,谢谢!
2014-01-07 21:20
bccn0906
Rank: 9Rank: 9Rank: 9
来 自:广州
等 级:蜘蛛侠
威 望:2
帖 子:414
专家分:1183
注 册:2013-10-16
收藏
得分:4 
SELECT *,ICASE(studep='轻工学部',1,studep='机械学院',2,studep='电气学院',3,studep='计算机学院',4,9) 排序 FROM bm ORDER BY 排序
2014-01-07 21:59
bccn0906
Rank: 9Rank: 9Rank: 9
来 自:广州
等 级:蜘蛛侠
威 望:2
帖 子:414
专家分:1183
注 册:2013-10-16
收藏
得分:0 
为了日后方便维护,还是先建一个表,用于定义各学院的顺序
如:排序表(studep C(60),序号 INT)
studep    序号
轻工学部   1
机械学院   2
电气学院   3
计算机学院 4

按 studep 索引一下
INDEX ON studep TAG studep


然后就可以这样排序了,若要修改顺序(或增加学院),只要维护"排序表 "就可以了.
SELECT a.*,NVL(b.序号,999) 排序 FROM bm a LEFT JOIN 排序表 b ON a.studep=b.studep ORDER BY 排序
----------------------------------------------------------
你还可以自定义一个过程,用于返回“序号”
FUNCTION 获取序号(学院名 as string) AS Integer
    IF NOT USED('排序表')
        USE 排序表 IN 0
    ENDIF
    SET ORDER TO studep IN 排序表
    RETURN IIF(SEEK(m.学院名,'排序表'),排序表.序号,9999)
ENDFUNC

然后就可以这样排序了
SELECT *,获取序号(studep) 排序 FROM bm ORDER BY 排序


[ 本帖最后由 bccn0906 于 2014-1-8 09:59 编辑 ]
2014-01-08 09:41
qjbzjp
Rank: 13Rank: 13Rank: 13Rank: 13
来 自:尧的故乡
等 级:贵宾
威 望:48
帖 子:1914
专家分:4397
注 册:2007-3-14
收藏
得分:0 
ALTER table bm ADD COLUMN xh n(2)  &&增加一个排序用的字段“XH”
REPLACE ALL xh WITH 1 FOR ALLTRIM(studep) =="轻工学部"
REPLACE ALL xh WITH 2 FOR ALLTRIM(studep) =="机械学院"
REPLACE ALL xh WITH 3 FOR ALLTRIM(studep) =="电器学院"
REPLACE ALL xh WITH 4 FOR ALLTRIM(studep) =="计算机学院"
INDEX on xh TO tempindex
BROWSE

相互学习,互相交流,共同提高。
2014-01-08 10:05
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:4 
對的,映射排序是基本思路。

授人以渔,不授人以鱼。
2014-01-08 11:29
快速回复:VFP中对某字段(学院)按自定义顺序排列,求代码?
数据加载中...
 
   



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

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