VFP排序与索引问题

VFP排序与索引问题,第1张

你需要记清这两个命令格式:
sort on 字段名1,字段名2, to <新表文件名>
所以排序可以将多个字段名用逗号分开,含义是:先按第一个字段排序,当第一个字段有相同值时,再按第二个字段排序,依此类推。结果生成一个新的表文件。
index on <关键字表达式> tag <索引名> |to <独立索引文件名>|of <非结构复合索引文件名>
看清楚,此命令中只允许出现一个表达式,如果要求按几个字段索引,那就要交这几个字段按顺序要求转换成同一个数据类型,用+连接起来。

索引时如果有两个条件则需要用表达式的形式将两个条件联接起来,一般用加法,如果是不同的数据类型,则需要用函数进行转换。如学生表中有性别和成绩字段,如先按性别升序,性别相同则按成绩降序,因为性别为字符型,成绩为数值型,它们的字段类型不同,所以表达式为:性别+str(1000-成绩),这里str()函数就将后面的成绩转换成了字符型,可以与前面的性别联接了,而成绩是降序,所以用“1000-成绩”,完整的索引命令就是:
index
on
性别+str(1000-成绩)
to
aa

索引是一种逻辑排序方法,它不改变记录在物理上的排列顺序,而是建立一个与原文件相对应的索引文件,索引文件中存储了一组记录指针,它指向原文件的记录。如按总分字段建立的索引文件中包含两列信息:第一列按序存放总分,第二列则是对应的记录号,如下表。
总分的索引值 记录号
302 8
357 2
358 1
387 4

Visual FoxPro 中的索引和书中的索引类似。书中的索引是一份页码的列表,指向书中的页号。表索引是一个记录号的列表,指向待处理的记录,并确定了记录的处理顺序。对于已经建好的表,索引可以帮助我们对其中的数据进行排序,以便加速检索数据的速度;可以快速显示、查询或者打印记录;还可以选择记录、控制重复字段值的输入并支持表间的关系 *** 作。
(一)单索引文件:IDX
相关命令:
建立索引:INDEX ON [-]<字段名表达式> TO <索引文件名>
同时打开:USE <表名> INDEX <索引文件名>
单独打开:SET INDEX TO <索引文件名>
关闭索引:SET INDEX TO
说明:
(1)逻辑型、备注型和通用型字段不能作索引关键字,且只能有一个索引关键字。
(2)加参数[-]时为降序排序,缺省为升序(由小到大)。
(3)<索引文件名>可不加扩搌名,系统自动加上扩展名IDX。
(4)必须打开索引文件后才能看到索引排序的结果。
例如:
use d:\studentdbf 打开表studentdbf
index on 总分 to d:\s1idx 以总分字段建立单索引文件
set index to d:\s1idx 打开索引文件
browse 浏览结果
set index to 关闭索引
browse 浏览结果,与前一次作比较
(二)复合索引文件:CDX
复合索引能在一个独立文件中存储多个索引,必须为每个索引建立独特的标志名(TAG),标志名必须以字母或下划线开头,可以包含字母、数字、下划线,单只有十个有效名字空间。
相关命令:
建立索引:INDEX ON <字段名> TAG <标记> [Asceding|Descending]
同时打开:USE <表名> ORDER [TAG] <标记>
单独打开:SET ORDER TO [TAG] <标记>
关闭索引:SET ORDER TO
关闭索引:DELETE TAG <标记>
例如:在Studentdbf中以总分从大到小排列
use d:\studentdbf 打开表studentdbf
index on 总分 tag zongfen descending 以总分字段索引
browse 浏览结果
set order to 关闭索引
browse 浏览结果,与前一次作比较
菜单 *** 作:打开“表设计器”,选择“索引”标签,然后建立索引,使用时打开相应的索引。
索引的类型有:
(1)主索引:字段不允许有重复的索引,一个表只能有一个主索引,主索引只能用于在数据库内部建的表,不能用于自由表。
(2)候选索引:字段不允许有重复值,作为主索引的候选字段。
(3)普遍索引:字段允许重复值,一个表有多个普通索引。
(4)唯一索引:允许有重复值,只存储第一次出现的重复值。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/12829995.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-28
下一篇 2023-05-28

发表评论

登录后才能评论

评论列表(0条)

保存