2

一部のクライアントから受信した .DBF ファイルをプレビューできる VB.NET アプリケーションがあります。次に、アプリケーションは、このファイルから CSV を吐き出そうとします。この CSV は、さまざまな環境で使用できます。このアプリケーションは、Windows XP 32 ビットで動作しました。私たちの会社は最近、私たちのほとんどを Windows 7 x64 にアップグレードしたため、このアプリケーションが失敗しました。このアプリケーションのターゲット ビルドが「任意の CPU」ではなく x86 であることを確認し、アプリを再ビルドしましたが、同じ問題が発生しました。

元々使用していたSystem.Data.Odbcconnection.ConnectionString = "Driver={Microsoft dBASE VFP Driver (*.dbf)};SourceType = DBF;SourceDB=" & dbfSourcePath & ";Exclusive=No; Collate=Machine;BACKGROUNDFETCH=NO;". 障害の場所はconnection.Open()です。表示されるエラーは、「エラー [IM001] [Microsoft][ODBC Driver Manager] ドライバーはこの機能をサポートしていません」です。

VFP のドライバーがインストールされておらず、Access DBF ドライバーがここの投稿のように機能しないことに気付きました。そこに記載されている修正プログラムは VFPro SP2 をインストールすることですが、サービス パックをインストールするための FoxPro インストールはありません。次に、VFP 9.0 用の OLEDB ドライバーをインストールしようとしましたが、現在 and を使用System.Data.OleDbしてconnection.ConnectionString = "Provider=VFPOLEDB.1;SourceDB=" & dbfSourcePath & ";"いますが、connection.Open()行に次のエラーがあることがわかりました:「機能は利用できません」。

このアプリケーションを Windows 7 x64 で動作させる方法について、私は完全に途方に暮れています。以下は、読みやすくするためにファイルを開くパスを削除したコードの 2 つのバリアントです (パスとファイルが存在することを確認しました)。

ODBC バージョン:

Imports System.Data.Odbc
Dim strSelect As String
strSelect = "SELECT * FROM " & dbfSourceName
Dim connection As New Odbc.OdbcConnection
Dim adp As New Data.Odbc.OdbcDataAdapter
connection.ConnectionString = "Driver={Microsoft dBASE VFP Driver (*.dbf)};SourceType = DBF;SourceDB=" & dbfSourcePath & ";Exclusive=No; Collate=Machine;BACKGROUNDFETCH=NO;"
Dim command As New OdbcCommand(strSelect, connection)
connection.Open()          ' Here is where it throws the error.

OLEDB バージョン:

Imports System.Data.OleDb
Dim strSelect As String
strSelect = "SELECT * FROM " & dbfSourceName
Dim connection As OleDbConnection = New OleDbConnection()
Dim adp As New Data.OleDb.OleDbDataAdapter
connection.ConnectionString = "Provider=VFPOLEDB.1;SourceDB=" & dbfSourcePath & ";"
Dim Command As New OleDbCommand(strSelect, connection)
connection.Open()          'Error occurs here.

OLEDB または ODBC 接続を使用して、これらの .DBF ファイルを Windows 7 x64 で開くにはどうすればよいですか?

4

1 に答える 1

4

いくつかの代替接続文字列を試しましたか? www.connectionstrings.com/dbf-foxproをご覧ください

connection.ConnectionString = _
  "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & _
  dbfSourcePath & ";Extended Properties=dBASE IV;"

64 ビット システムで Jet for Access を使用する場合の注意事項も参照してください。

更新: Jet ドライバーを使用する代わりに、DBF に直接アクセスできます。幸いなことに、ファイル形式は比較的単純です。この直接アクセスを示す既存の Code Project ソリューションを次に示します。

http://www.codeproject.com/KB/bugs/LoadDBF.aspx

于 2010-12-20T18:28:06.700 に答える