1

FoxPro (dBase?) .dbf ファイル内のレコードを更新する必要があります。レコード内で更新する必要があるフィールドにもインデックスがあります。レコードの更新は正常に機能しますが、インデックスは更新されません。私はインターネットを数日間検索していますが、まだ結果はありません。どういうわけかインデックスファイルも開く必要がありますが、方法がわかりません。

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ファイル内の1ビットです)。その結果、「Visual FoxProプロバイダー」は、.dbfに関連付けられた.cdxファイルがないと見なし、それを更新しません。

DBFファイル構造についてMSDNで読むhttp://msdn.microsoft.com/en-us/library/st4a0s68%28v=vs.80%29.aspxバイトオフセット28、フラグ0x01を確認する

于 2011-12-28T05:31:16.873 に答える