0

私はこのシナリオを持っています: OleDBConnection (エンジン = Microsoft.Jet.OLEDB.4.0) を介して mdb ファイル (Access 2003) に接続する C# アプリケーションを開発しました。この mdb ファイルには、同じディレクトリ内の別の mdb ファイルにいくつかのリンクされたテーブルがあります。すべてがローカル環境で完全に機能し、メインの mdb ファイルのみを接続しても、クエリはリンクされたテーブルからデータを取得します。単純化されたスキーマは次のようになります。

ローカル マシンの私のアプリケーション --> C:\mydir\main.mdb --> C:\mydir\linked_tables.mdb

ただし、このアプリケーションは、ローカル ネットワークの一部のホスト コンピューターで動作するはずです。また、mdb ファイルはサーバーの共有ディレクトリに保存されます。さて、アプリケーションがホストで実行されている場合、パスを次のように設定します。

\\myserver\mydir\main.mdb

接続は機能します。リンクされたテーブルからデータを取得しようとするクエリを起動すると、問題が発生します。C:\mydir\linked_tables.mdb でリンク テーブルを見つけようとしますが、このパスはホストではなくサーバーにあります。

彼に伝える方法はありますか: メインの mdb ファイルのパスが \\myserver\mydir\main.mdb の場合、\\myserver\mydir\linked_tables.mdb のリンク テーブルを (自動的に) 取得する必要がありますか?

ありがとうございました

4

1 に答える 1

0

別の接続で解決しました。つまり、mdb ファイルごとに異なる OleDBConnection を使用します。

OleDbConnection MainConn = new OleDbConnection("\\myserver\mydir\main.mdb");
OleDbConnection LinkedTablesConn = new OleDbConnection("\\myserver\mydir\linked_tables.mdb");

それほどエレガントではありませんが、機能します。異なるデータベースにあるテーブルを結合する必要がある場合は、それらをいくつかの汎用コレクション オブジェクトで管理します。

于 2013-11-12T20:31:06.087 に答える