FoxPro dbf中的更新查询后如何更新索引文件

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

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

我正在通过Microsoft Visual FoxPro驱动程序建立连接。这是一些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"

仍然没有运气!

vb6 foxpro dbase
2个回答
2
投票

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


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

© www.soinside.com 2019 - 2024. All rights reserved.