0

我有一个正在运行的会计系统,并且在打开某个数据库时收到交易错误。问题是某些索引文件 (CDX) 已损坏。表文件(DBF)似乎很完美。即使使用 Excel,我也可以打开它并阅读所有内容。如何使用 visual fox pro 重建这些 cdx 文件?

我正在努力:

Use mydatabase.DBF exclusive

Reindex

Close all

但它正在生成一个 FXP 文件。我不确定这是否可行或我应该使用什么。

另外,如果我在这方面做错了什么,请原谅我。我正在尝试学习 VFP,因为我需要解决这个问题。

提前致谢。

4

4 回答 4

4

在哪里尝试这些命令?如果它来自命令行窗口,那应该可以工作(尽管 REINDEX 并不是修复损坏索引的最佳方法)。如果你把它们放在一个程序中,那么运行那个程序会生成一个 FXP,它是一个编译好的程序。

与其使用可以传播损坏标签的 REINDEX,不如获取 CDX 中所有标签的列表,然后发出:

全部删除

然后使用 INDEX 命令重新创建所有标签。(也就是说,在某些情况下这也不是一个好主意。如果表属于数据库 (DBC),并且它涉及持久关系,则 DELETE TAG ALL 可能会破坏这些关系。)

添马舰

于 2014-06-12T20:56:41.893 回答
1

我认为您将获得通过 Reindex 命令生成的 FXP 文件的唯一方法是您的索引(cdx 文件)是否包含函数调用。FXP 文件是编译后的 PRG(程序文件)。它们通常不是索引的一部分,但可以使用。

要查明您是否有这些索引标记之一,请在发出 USE MYDATABASE.DBF EXCLUSIVE 命令后,在命令窗口中键入 DISPLAY STATUS。该命令将列出结构 CDX 文件中的所有索引标签。

例子:

  Structural CDX file:   C:\PRO60\ARDATA\ARCUST02.CDX
        Index tag:   ADDRESS1     Collate: Machine    Key: UPPER(ADDRESS1)
        Index tag:   ADDRESS2     Collate: Machine    Key: UPPER(ADDRESS2)
        Index tag:   CURRENCY     Collate: Machine    Key: CURRENCY
        Index tag:   COMPANY1     Collate: Machine    Key: "G_RETSDX(COMPANY)"

最后一个标签包含一个函数调用。在上面的示例中,重新索引需要访问 G_RETSDX() 函数。

这解释了您的 FXP 问题。但是,这可能无法解决您的“交易错误”......您将不得不更具体地了解确切的错误消息以了解出了什么问题。

于 2014-06-12T04:16:45.750 回答
0

dbf文件和文件之间存在一对一的映射关系cdx

'mydatabase' 是否与文件同名cdx?如果不是,但你知道这是正确的cdx文件,你必须手动打开它(我不记得如何打开它)。

于 2014-06-11T23:59:03.010 回答
0

此 Oracle 数据库解决方案,如果您使用其他产品处理 dbf 文件,本指南将无法帮助您!

如果可能的话,将您的文件、所有数据库文件(控制文件、重做日志、数据、配置文件...)复制到新硬盘中的同一位置(目录)。然后使用 oradim 创建服务: oradim -new -startmode manual 如果服务尚未启动,则启动该服务。执行 sqlplus "/ as sysdba" 并尝试启动。如果所有文件都复制到同一位置,这应该可以工作。

于 2014-10-31T22:03:35.340 回答