2011-12-16 10 views
0

.NET RESTサービスからDBFファイルからデータを取得しようとしています。これらのファイルは、別のアプリケーションのビジネスデータです。これはかなり古いアプリですので、dBase/FoxProは私が扱う必要があります。他のアプリケーションがアクセスしているとDBFファイルにアクセスできない

私はデータを読みたいだけです。私は今更新/挿入に興味がありません。

サービスは正常に動作し、データを含むJSONメッセージを取得できます。この問題は、他のアプリが起動しているときに発生します。他のアプリケーションが実行されているときにデータにアクセスしようとすると、「エラー[HY000] [Microsoft] [ODBC dBaseドライバ]外部テーブルが期待どおりのフォーマットになっていません。他のアプリが実行されていないときにデータにアクセスできる限り、エラーメッセージは奇妙に聞こえます。

DBFエクスプローラのような別のソフトウェアは、他のアプリケーションを実行しているデータにアクセスすることができるので、接続文字列やドライバにいくつかの設定が間違っている必要があります。

他のアプリケーションで開いている間にこれらのテーブルにアクセスするためにODBC接続を設定する方法を知っている人はいますか?

ありがとうございます!

P.S:私の接続文字列:

@"Driver={Microsoft dBASE Driver (*.dbf)};DriverID=277;Dbq=" + pathtoDBFFile + ";"; 
+1

あなたはすでに最初の戦い:)おかげだった –

+0

それを見ていない場合は、http://www.connectionstrings.comで様々なオプションを試すことができます。私の接続文字列は、他のアプリケーションが実行されていないときに接続できる限り、正常に機能しているようです。たぶん、接続文字列のパラメータがありませんが、わかりません。 –

答えて

0

まず、dBASEドライバを使用せず、MSからVisual FoxPro OleDbドライバをダウンロードして使用します。

また、ConnectionStrings.comの次のサンプルでは、​​接続文字列の[Exclusive Use]の設定を[No]にすることができます。 Driver部分はOleDbプロバイダーには間違っていますが、Exclusive = No、deleted = noのコンテキストとそこにスローすることができる他の設定が役立ちます。

ドライバ= {Microsoft Visual FoxProドライバ}; SourceType = DBC; SourceDB = c:\ myvfpdb.dbc;排他=いいえ。 NULL = NO; Collat​​e = Machine; BACKGROUNDFETCH = NO; DELETED = NO;

Another link that reference connection to VFP tables, and a link for downloading the VFP OleDB provider.

+0

私はExclusive = Noを試しましたが、それは(dBaseドライバを使って)トリックをやっていませんでした:(おかげさまで、私は明日FoxProドライバを試します。 –

0

それはDBFアプリケーションのための典型的なのです。 DBFを使用するすべてのアプリケーションは、必要に応じてブロックすることができます(排他モードと呼ばれる)。

必要なファイルの一時コピーを作成すると、この問題を回避できます。このアプローチの結果として、システムが非同期になり、このDBFを再度コピーして状態を更新する必要があります。

+0

私はXBaseの時代からこれが典型的だと知っていますが、私が殺すのは、アプリケーションの実行中にDBFエクスプローラを使用できることです。エクスプローラがデータにアクセスできる場合は、別のアプリケーションからデータを取得する正しい方法が必要ですか?ありがとう! –

+0

はい、そうです。 – Eugene

関連する問題