1

我需要更新 FoxPro (dBase?) .dbf 文件中的记录。我需要在记录中更新的字段也有一个索引。更新记录工作正常,但索引没有更新。我已经在互联网上搜索了几天,还没有任何结果。不知何故,我也需要打开索引文件,但我不知道如何。

我正在通过 de Microsoft Visual FoxPro Driver 建立连接。这是一些 VB6(!) 代码:

Dim CNF As ADODB.connection, CNFRS as ADODB.Recordset
Set CNF = New ADODB.connection
CNF.ConnectionString = "Provider=MSDASQL; Driver={Microsoft Visual FoxPro Driver};SourceType=DBF;SourceDB=" & pvApp.General.TableName & ";"
CNF.Open
Set CNFRS = CNF.Execute("UPDATE " & pvApp.General.TableName & " SET SYNC_ID='" & sync_id & "' WHERE PVSYSID='" & PVSYSID & "'")

所以,更新成功了,但是索引没有更新。任何帮助深表感谢。

OLEDB方式:

CNF.ConnectionString = "Provider=VFPOLEDB.1;Data Source=C:\DB;Password=;Collating Sequence=MACHINE"

仍然没有运气!

4

2 回答 2

2

.DBF 表上的更新操作(插入、更新、删除)将始终自动更新与表关联的复合索引 (.CDX) 文件 - 无需显式执行任何操作。如果涉及其他索引文件 (.IDX),那就另当别论了。究竟是什么让您认为索引没有更新?您可以改用 OLEDB 驱动程序吗?

于 2011-12-13T08:29:31.190 回答
1

@netiul:有可能,您对 .dbf 文件的实验可以删除 .dbf 文件中到 .cdx(索引)文件的链接(链接是 .dbf 文件中的一位)。结果“Visual FoxPro Provider”认为您的 .dbf 没有关联的 .cdx 文件并且不更新它。

在 MSDN 中阅读有关 DBF 文件结构http://msdn.microsoft.com/en-us/library/st4a0s68%28v=vs.80%29.aspx检查字节偏移量 28,标志 0x01

于 2011-12-28T05:31:16.873 回答