我正在尝试读取名为 SCHEDULE.dbf 的 foxpro 表。数据通过数据连接器在 PHP 中读取,然后通过管道传输到我的网页。如果我重命名 Schedule.dbf,这一切都非常有效。除了 Schedule 之外的任何名称似乎都可以使用。但是,当我运行名为 Schedule 的它时,我收到“SQL 错误:[Microsoft][ODBC dBase Driver] Index file not found., SQL state S0012 in SQLExecDirect”错误消息。我唯一的想法是 Schedule 是某个地方的保留字,但我在任何列表中都找不到它。我完全不知所措。重命名表并不是一个真正的选择,因为它是我不想修改的更大数据输入和管理系统的一部分。有什么建议么?
问问题
279 次
2 回答
0
错误是“未找到索引文件” - 匹配的 .cdx 索引文件与 .dbf 文件不在同一目录中。确保它位于同一目录中,或者您可以使用 FoxPro 从表中删除索引。
于 2012-04-25T13:41:11.730 回答
0
我不能说 dBASE(如果它是 Foxpro 数据而不是 dBASE,我会专门为 VFP 使用 Microsoft 的 OleDb 提供程序)。在 Foxpro 中,系统可以处理成对(甚至是三个)文件。所有对应的文件名都需要重命名,比如
SCHEDULE.DBF (main data)
SCHEDULE.CDX (compound index file for all indexes for given file)
SCHEDULE.FPT (separate file if any memo/general data columns in the file)
如果您尝试仅重命名 .DBF 而不是其余部分(仅当数据列的类型为 memo 或 general 时才找到 .FPT),那么它将阻塞打开文件。
此外。如果表是数据库容器的一部分(通过 VFP),并且您尝试打开它,则该文件具有额外的标头信息以指向它所绑定的数据库。如果它在数据库中找不到它,那也可能会给你一个误导的错误。
VFP 中的数据库容器具有 .DBC、.DCT 和 .DCX 的后缀值。
于 2012-04-25T15:22:55.467 回答