VFP 索引并在 CDX 存在时使用 INDEX ON 保存

VFP indexing and saving with INDEX ON while CDX exists

使用 VFP 9,我使用

通过 group(DBF 中的一列)索引了一个 DBF 文件
 INDEX ON group TO group1

并且记录的顺序正确。但是,每当我关闭并重新打开 DBF 时,索引都会丢失(group 没有顺序)。我在与我的 group.idx 和 dbf 相同的文件夹中找到了一个 .CDX 文件,它看起来像是在为 DBF 提供结构,但我不知道如何更改或查看它。

为了解决这个问题,我删除了 CDX 文件(当然是一个错误弹出窗口,因为它找不到 .cdx)并使用 COPY TO 函数来保留索引 DBF 但这不是该问题的真正解决方案(这是论坛中提到的解决方案,但对我来说似乎不是最佳方法)。 我还尝试在最后使用 PACK 函数,就在关闭数据库之前,但没有使数据集保持索引。

除了上面提到的,我在网上找不到这个特定问题的任何答案,所以我非常感谢任何评论,以帮助我理解它并解决编码时的索引问题,当然还有制作确保在关闭数据库时索引和更改将保持不变。非常感谢!

附加问题: 通常,当我建立索引时,我会为创建的 IDX 文件命名,但当使用类似的 DBF 时,我会重复编码,并在不同的表上使用相同的索引idx 名称(所以我每次都覆盖.idx,认为它不再有用了),但我真的不知道这是否会在未来给我带来问题。

更新: 虽然我无法使用索引和排序命令直接解决特定 DBF 的问题,但我使用了COPY TO 命令,然后用旧的手动替换新的 dbf。

像我这样的初学者可能会感兴趣:http://www2.hkedcity.net/sch_files/a/tps/tps-comp/visitor_cabinet/123570/db-ch05.pdf

通常不推荐使用 IDX。为了获得 CDX(复合索引),请使用这种略有不同的语法("TAG" 而不是 "TO"):

INDEX ON group TAG group1

我还建议不要使用 "group" 作为 field/column 名称,因为它是 VFP 中的保留字。

除了使用INDEX ON group TAG group1命令外,当您(重新)打开文件时,还需要select索引。这可以通过以下两种方式之一完成。

两者都

USE filename
SET ORDER TO group1

USE filename ORDER TAG group1