高手帮忙解释下vfp 中关于索引的知识

高手帮忙解释下vfp 中关于索引的知识,第1张

索引是一种逻辑排序方法,它不改变记录在物理上的排列顺序,而是建立一个与原文件相对应的索引文件,索引文件中存储了一组记录指针,它指向原文件的记录。如按总分字段建立的索引文件中包含两列信息:第一列按序存放总分,第二列则是对应的记录号,如下表。
总分的索引值 记录号
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)唯一索引:允许有重复值,只存储第一次出现的重复值。

问题可能出现在append blank上,如果你多按了一次该按钮,就会出现两个空记录,编号重复。或者A表已经有了一条空记录,运行时又加了一条空记录,出现编号重复。另外go bottom是多余的,当前记录就是空记录,如果索引打开了,go bottom就不指向空记录了(空记录是第一条记录)。
解决的方法:最好不用append blank,因为如果你放弃 *** 作不保存,空记录依然存在;如果你一定要用append blank,那么,在后面要加一条:thisenabled=f,防止重复按该按钮,如果放弃 *** 作,还要:
sele 人员信息
delete for empty(编号)
pack


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

原文地址: https://outofmemory.cn/yw/13366555.html

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

发表评论

登录后才能评论

评论列表(0条)

保存