【问题标题】:Reindex visual foxpro table (corrupt cdx)重新索引视觉 foxpro 表(损坏的 cdx)
【发布时间】:2014-06-11 22:39:44
【问题描述】:

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

我正在尝试:

Use mydatabase.DBF exclusive

Reindex

Close all

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

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

提前致谢。

【问题讨论】:

    标签: dbf visual-foxpro reindex


    【解决方案1】:

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

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

    全部删除标记​​p>

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

    添马舰

    【讨论】:

      【解决方案2】:

      我认为您要获得通过 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 问题。但是,这可能无法解决您的“交易错误”...您将不得不更具体地了解确切的错误消息以了解发生了什么问题。

      【讨论】:

        【解决方案3】:

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

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

        【讨论】:

          【解决方案4】:

          此解决方案适用于 Oracle 数据库,如果您使用其他产品处理 dbf 文件,本指南对您没有帮助!

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

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2016-08-30
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2010-10-06
            相关资源
            最近更新 更多