一回も披露したことのない豆知識

こんにちは。
いつも良い回答ありがとうございます。

MS-ACCESSで別DBにあるクエリを実行する方法を教えて下さい。


メインDB.MDB <-- サーバー上にあります

サブDB.MDB <-- ローカルドライブにあります

サブDB.MDB内にあるクエリをメインDBから実行する方法がありましたら教えて下さい。

A 回答 (1件)

念のため、


A) Server-A 上には "メインDB.mdb" がある。
B) PC-A 上には "サブDB.mdb" があり、"サブDB.mdb" 内にはクエリ "q01" がある。
C) "q01" は "サブDB.mdb" に保存されているデータだけを操作対象としている。
D) ユーザーは PC-A にインストールされている Access から Server-A 上の "メインDB.mdb" を開いて作業を行う。
E) (D) の作業の中で "メインDB.mdb" は "サブDB.mdb" を開いて "q01" を実行する。

(C) の所、ご確認ください。

ADO を使って相手の DB のデータを登録・編集・削除しgたり、ADO のレコードセットとして選択結果を受け取る程度であれば DSN を定義すればできます。
PC-A [コントロール パネル]-[パフォーマンスとメンテナンス]-[管理ツール]-[データ ソース(ODBC)] を開く。
[システム DSN] タブを選択。
[追加] ボタンをクリック。
ドライバ一覧から「Microsoft Access Driver (*.mdb)」を選択して [完了] をクリック。
[データ ソース名] に適当な名前を入力。(例として subDbAccess とします)
[選択] をクリックして "サブDB.mdb" を選択。
[OK] をクリックして <ODBC Microsoft Access セットアップ> ダイアログを閉じる。
[OK] をクリックして <ODBC データ ソース アドミニストレータ> ウィンドウを閉じる。

サブDB.mdb には "q01" という名前の選択クエリがすでにあるものとします。
以下、メインDB.mdb の適当な場所に記述

Dim con As New ADODB.Connection
con.ConnectionString = "DSN=subDBAccess;"
con.Open

Dim cmd As New ADODB.Command
cmd.ActiveConnection = con
cmd.CommandText = "q01"
cmde.CommandType = adCmdStoredProc

Dim rst As New ADODB.Recordset
rst.CursorType = adOpenForwardOnly
rst.LockType = adLockOptimistic
Set rst = cmd.Execute

Do While Not rst.EOF
 Debug.Print rst.Fields("ID").Value
 Debug.Print rst.Fields("firstName").Value
 Debug.Print rst.Fields("lastName").Value
 rst.Movenext
Loop

rst.Close
con.Close
Set rst = Nothing
Set cmd = Nothing
Set con = Nothing

クエリ q01 を実行した結果が rst に ADO のレコードセット オブジェクトとして格納されています。
結果が不要で、実行させっぱなしなクエリな場合は
単に cmd.Execute だけでもいけます。
    • good
    • 1
この回答へのお礼

丁寧な回答ありがとうございます。
教えていただいた内容に沿ってまずはやってみます。

お礼日時:2006/12/25 19:48

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています


おすすめ情報

このQ&Aを見た人がよく見るQ&A