#789 外部のデータベース内のクエリを実行するには? クエリ、VBA

Accessでは、自分自身のデータベース内のテーブル(=ローカルテーブル)でなくても、外部のデータベース内のテーブルを”リンクテーブル”とすることで、あたかも自身のテーブルのように操作することができます。

また、クエリについてもローカルテーブルと同様に処理できますので、リンクテーブル間でレコード追加するクエリなども実行できます。

しかし一方、そのクエリ自体も外部のデータベース内にあるものを使いたい場合、「OpenQuery」メソッドを使って簡単にその追加クエリを実行させることはできません。クエリは”リンククエリ”のように出来ないからです。

そこで、「OpenDatabase」メソッドを使って外部のデータベースを開き、そこにある追加クエリのSQL文を取得、それをローカルから外部データベースに対して発行することで、そのクエリを実行させるプログラム例です。
この方法を使った場合、特に必要なければ追加元・追加先のテーブルをリンクテーブルとする必要もありません。

プログラム例:

Dim dbsExt As Database
Dim qdf As QueryDef
Dim strSQL As String

'外部のデータベースを開く
Set dbsExt = OpenDatabase("C:\テスト\Database2.accdb")

'外部のデータベース内のクエリの定義を取得
Set qdf = dbsExt.QueryDefs("qapp顧客マスタバックアップ")

'そのクエリのSQL文を取得
strSQL = qdf.SQL

'そのSQL文を外部データベースに対して発行
dbsExt.Execute strSQL


実行例:
■外部DBのオブジェクト

■実行前のテーブル

■実行するクエリのデザイン(「顧客マスタバックアップ」テーブルへの追加クエリ)

■実行後のテーブル
| Index | Prev | Next |



T'sFactory
Accessで動く生産管理DB
Ureru Express
Webで使う販売顧客管理
Access開発&アドバイス
DB開発やテクニカルアドバイス
Copyright © T'sWare All rights reserved