2012-02-21 15 views
1

C#コードを継承しました。古いdBaseファイルを処理します。誰も少なくとも3〜5年はコードに触れておらず、コンパイルされたバージョンはどこかで動作しますが、私はそれにアクセスすることはできません。今、私はそれは(同じアーキテクチャ、十分な探しドライバ)を実行することになっているのと同じ格好の環境上のソースからそれを再コンパイルすることにより、どのように機能するかを試すこと、それは私に次のエラーを与える:なぜ私のODBC dBaseテーブルにアクセスできないのですか?

[42S02] [Microsoft][ODBC dBase driver] A Microsoft Jet database engine could not find the object 'test'. Make sure the object exists and that you spell its name and the path name correctly. 

EDITを )接続文字列

OdbcConnection connection = new OdbcConnection(String.Format("driver={{Microsoft dBase Driver (*.dbf)}};DriverID=533;Dbq={0};Exclusive=1;", path)); 

dbCommand.CommandText = "SELECT Count(*) FROM test"; 
recNum = (int)dbCommand.ExecuteScalar(); 

EDIT)の2行目

私は、ファイルが実際にそこにあるかどうかを確認したり、ファイル名を変更したりするなど、Google上で見つかった明白な解決策を試しました。だから、ファイルがどこにあるのかかなり確信していますファイルが破損していないことを確認してください(インターネットからダウンロードしたシェアウェアを使用してファイルを開くこともできますが、ファイルは過去3〜5年以内に変更されませんでした)。これはdBaseとODBCの私の初めてのことですので、明らかにすべき何かを見逃すかもしれません。

これ以外に何ができるのですか?

+0

コードが失敗した行にコードを提供できますか? –

+0

x64マシンでC#コードを使用したときに問題が発生しました。私の場合は、ターゲット出力をx86に変更して作業しました。しかし一方、マシン上にdBaseドライバの存在もチェックしなければなりませんでした。どちらが一番苦痛な部分でしたか?しかし、幸いにも、私はインストール後に動作するすべての必要なドライバとものをインストールするインストーラのプロダクションバージョンにアクセスできました。 – Nauman

+0

編集が追加されました。アーキテクチャは以前(x86)と同じですが、dBaseドライバはおそらく同じです。私は違いがあるかどうか私にどのように伝えることができるかわかりません。残念ながら、プロダクションバージョンのインストーラはドライバをインストールしません。 – ytg

答えて

0

ODBCデータソース([スタート]> [設定]> [コントロールパネル]> [ODBC])を構成しているかどうかを確認します。 データソースの名前は、Connectionオブジェクトの接続文字列に含める必要があります。 テーブル・テストは、構成されたデータ・ソースが指すデータベースの表でなければなりません。

+0

これは、ディレクトリにファイルDSNを設定するまでは有望でした。たぶん私は間違ったことをするかもしれませんが、ディレクトリに '.dsn'ファイルを作成したばかりです。疑いの余地があるのは、もしそれがすべてであれば、ファイルはすでに存在するはずだからです。言うまでもなく、データベーステーブルをまったく指していないようです。 (ディレクトリのみ)私はXPを使用しています。 – ytg

+0

dsnファイルは、ODBC設定のパラメータを含む単なるファイルです。私はユーザーDSNを作成することをお勧めします。 [追加]をクリックし、使用するdBaseファイルとdBase ODBCドライバを選択し、構成パラメータを入力します。アプリケーションでは、接続文字列でそのデータソースを参照する必要があります。 –

+0

これではまだ動作しません。とにかく元の接続文字列にはデータソースがありませんでしたので、別の方法で処理した可能性があります。 (元の質問に接続文字列が追加されました) – ytg

0

多くの人が古い.dbfファイルでJetを使用したいのですが、実際にはdBASEではなく、実際はFoxpro(わずかに異なるヘッダー情報)です。実際には、VFP OleDBプロバイダをダウンロードして使用する必要があります。

接続を表示/記述するのに役立つanswered previous questionsがあります。また、最新のVisual Foxpro OleDBプロバイダを取得/ダウンロードするためのMicrosoftへのリンクもあります。

接続文字列にちょうど注意してください。 .dbfファイルが "データベース"の一部ではなく空きテーブルであっても、データが格納されている物理PATHに接続したいだけで、データを取得するためにテーブルの名前に基づいてクエリを実行するだけです。