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

问题描述 投票:1回答:2

使用VFP 9,我使用group(DBF中的一列)索引了一个DBF文件

 INDEX ON group TO group1

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

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

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

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

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

这可能是像我这样的初学者感兴趣的:qazxsw poi

database indexing format visual-foxpro dbf
2个回答
3
投票

通常不建议使用IDX。为了获得CDX(复合索引),请使用这种稍微不同的语法(“TAG”而不是“TO”):

http://www2.hkedcity.net/sch_files/a/tps/tps-comp/visitor_cabinet/123570/db-ch05.pdf

我还建议不要使用“group”作为字段/列名,因为它是VFP中的保留字。


2
投票

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

INDEX ON group TAG group1

要么

USE filename
SET ORDER TO group1
© www.soinside.com 2019 - 2024. All rights reserved.