ms-accessデータベースと複数のODBCリンクテーブルがあります。ms-access VBAでテーブルのodbcデータベース名を取得する方法
私はODBCデータベースの2つのセットを持っているので、1つは本番用、もう1つは開発用です。開発と生産の名前はそれぞれ異なります。
VBAを使用してリンクテーブルのodbc情報を取得するにはどうすればよいですか?
ms-accessデータベースと複数のODBCリンクテーブルがあります。ms-access VBAでテーブルのodbcデータベース名を取得する方法
私はODBCデータベースの2つのセットを持っているので、1つは本番用、もう1つは開発用です。開発と生産の名前はそれぞれ異なります。
VBAを使用してリンクテーブルのodbc情報を取得するにはどうすればよいですか?
テーブルのローカル名を使用すると、テーブルの外部名のMSysObjectsシステムテーブル(通常は非表示)をクエリできます。
SELECT MSysObjects.ForeignName
FROM MSysObjects
WHERE (((MSysObjects.Name)="LocalTableName"));
外部テーブルの詳細が必要な場合は、同じテーブルの[接続]列を解析するときに手を差してください。
システムテーブルの使用は正式にはサポートされていないため、おそらく安全ではありません。将来のバージョンで変更される可能性があります。私はAccess2007 ACEの.accdbファイルでこれを試してみました。「レコードは読み込めません。読み込み権限は「MSysObjects」です。」 .accdb形式でユーザーレベルのセキュリティが削除されたことを考慮すると、回避策はありますか? – onedaywhen
実際、ODBCを使用してAccessデータベースであるかのように.mdbファイルに接続できます。リンクされたテーブルはそのODBC接続に表示され、完全なODBC速度でアクセスできます。
あなたのプログラムはテーブルがリンクテーブルであるかどうかを知る必要はありません。これらのすべてのシステム管理者レベルの詳細を単一の場所に入れることはいいことです。
ソースを特定する私の通常の方法は、ネイティブテーブルと同じように、テーブルの名前を変更することです。私はtblTrombone_DEV
とtblTrombone_PROD
のような接尾辞または接頭辞を追加することがあります。
どのODBC情報が必要ですか?これは、どのアプローチが最も効率的になるかを決定します。 –