2010-12-20 7 views
2

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

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

VFPのドライバがインストールされておらず、Access DBFドライバがポストhereのように動作していないことに気付きました。記載されている修正プログラムはVFPro SP2をインストールすることですが、FoxProをインストールしてもサービスパックをインストールする必要はありません。私はその後、VFP 9.0用のOLEDBドライバをインストールしようとしましたが、現在はSystem.Data.OleDbconnection.ConnectionString = "Provider=VFPOLEDB.1;SourceDB=" & dbfSourcePath & ";"を使用していますが、connection.Open()行に "Feature is not available"と表示されます。

私は、このアプリケーションを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. 

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

+0

チェック:私はここに掲載する前にhttp://connectionstrings.com/dbf-foxpro –

+0

うんは、そのサイトに行ってきました。問題は、Windows 7 x64でconnection.Open()が失敗することです。 Windows XPではODBCバージョンが正しく機能しました。 – wergeld

答えて

4

いくつかの代替接続文字列を試しましたか?ジェットドライバを使用する代わりに 、あなたが直接DBFにアクセスすることができ、幸い:64 bit systems

Updateでのアクセスのためにジェットを使用してノートを参照してください。またwww.connectionstrings.com/dbf-foxpro

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

を見てみましょうファイル形式は比較的簡単です。このダイレクトアクセスを実証する既存のコードプロジェクトソリューションがあります。この

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

+0

私はさまざまな接続文字列パラメータを試してきましたが、動作するものをまだ見つけていません。私はConnection Stringsページのすべてのバリアントを見てきましたが、まだ喜んでいません。私は別のエラーを取得しています:ISAM、期待されたフォーマットではないテーブル、 "何もしない"。 DBFタイプのタイプが分かっていれば、はるかに簡単です。また、Access 2010ではこれらのファイルを開くことができないため、ヘルプは表示されません。 – wergeld

+0

@wergeld、あなたはDBFでどのような処理をしていますか?単純にすべてのデータを読み込み、インデックスファイルに関係がない場合、DBF形式は非常に簡単です。あなたは簡単に直接DBFを読むためのいくつかのコードを書くことができます。 http://www.dbase.com/KnowledgeBase/int/db7_file_fmt。htm –

+0

データが読み込まれ、フラットテキストファイルとして出力される前にフィールドで変換/フィルタリングが行われます。インデックス、キーなどは使用されません(.DBFファイルから、彼らはコースの目的地で使用されます)。この問題は、運転者が働いている(または働いていない)方法の変更と関係しています。 JETを64ビットで使用するために提供されたリンクは、私が直面している問題に対処しませんでした。 DBF v7ファイルdocへのリンクは興味深いですが、最初からDBFリーダーを作成することは今のところ私の地平にはありません。 – wergeld

関連する問題