INDEX命令不能建立按降序排列的索引文件,只能升序排,
要想实现用INDEX命令建立按降序排列的索引文件需要用以下方法实现:
FoxBASE+中利用INDEX命令建立索引文件的命令格式是:
INDEX ON 〈关键表达式〉TO 〈索引文件名〉〔UNIQUE〕
本命令只能按关键字表达式值的升序排列。实际问题中,往往也需要按关键字表达式值的降序排列。对于数值型关键字表达式N(如入学总分),方法是-N (即-入学总分)作为关键字表达式建立索引;对于日期型关键字表达式D(如出生日期),其方法可用DATE()-D(即DATE()-出生日期)作为关键字表达式建立索引;对于字符型关键字表达式C,必须对原字符型数据利用CHR(N)和ASC(C)作变换,把原ASCII码值大(小)的字符转换成 ASCII码值小(大)的字符,即对于字符C
C->CHR(255-ASC(C))
例如,若按姓名(宽度为6)作为索引关键字,建立降序排列的索引文件,则索引关键字可写为:
CHR(255-ASC(SUBS(姓名,1,2)))+
CHR(255-ASC(SUBS(姓名,3,2)))+
CHR(255-ASC(SUBS(姓名,5,2)))
除此之外,为了建立按降序排列的索引文件,可以在先建立好按升序排列索引文件的基础上,再实现按降序排列,方法是将按升序建立的索引文件记录指针从文件尾向文件头方向移动。实现的程序如下:
SET TALK OFF
USE XSDA INDE XSDA
GO BOTT
DO WHLL.NOT.BOF()
DISP
SKIP-1
END