我需要更新FoxPro(dBase?)。dbf文件中的记录。我需要在记录内更新的字段也有一个索引。更新记录工作正常,但索引未更新。我已经在互联网上搜索了几天,但还没有任何结果。不知怎的,我也需要打开索引文件,但我不知道如何。
我正在通过de 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"
还没有运气!
答案 0 :(得分:1)
.DBF表上的更新操作(插入,更新,删除)将始终自动更新与表关联的复合索引(.CDX)文件 - 无需显式执行任何操作。如果涉及其他索引文件(.IDX)那么这是一个不同的故事。究竟是什么让你认为索引没有更新?你可以改用OLEDB驱动程序吗?
答案 1 :(得分:0)
@Zac L:这可能是可行的,你在.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