こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

パススルークエリの使い方

Windows server 2003 + SQL server 2000の環境にあるDBがあります。
同じネットワーク上のWindows XP Pro + Access2000のPCからそのサーバのDBへデータをINSERTするのにはパススルークエリを使えという話になりました。
そのサーバへODBC接続の設定はできています。
パススルークエリの情報が乏しく、どのようにしたらよいのかちょっとわかりません。
どなたかご教授よろしくお願いいたします。

投稿日時 - 2008-09-10 15:14:52

QNo.4318318

すぐに回答ほしいです

質問者が選んだベストアンサー

#1です。やり方はわかったようですので、補足ですが、
パススルークエリは丸ごとSQL Serverにクエリを投げるので、
INSERT INTO (SQL Serverのテーブル) SELECT * FROM (Accessのテーブル)
みたいな使い方はできません。
基本的にはパラメータも渡すことができないので、実行の都度QueryDefのSQLを書き換えてExecuteするような使い方になるかと思います。

今回は1レコードだけということなので、特に問題はないと思いますが、複数レコードをINSERTするのだったら、
INSERT INTO TABLE VALUES ('A','B','C');
INSERT INTO TABLE VALUES ('D','E','F');
INSERT INTO TABLE VALUES ('G','H','I');

と並べるよりは
INSERT INTO TABLE
SELECT 'A','B','C'
UNION ALL SELECT 'D','E','F'
UNION ALL SELECT 'G','H','I'
とやると1ステートメントでINSERTできるので少し速いはずです。

投稿日時 - 2008-09-12 13:48:48

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

-広告-
-広告-

回答(3)

ANo.2

本当にパススルークエリが使えるのか疑問なのでいくつか確認。

INSERTというのはどこから(どこへ…はSQLServerなんですよね)?
例)
・Access2000のフォームに入っているものを
・Access2000のmdb上のテーブルから

それと、一度にInsertするのはなんレコード?

投稿日時 - 2008-09-11 21:39:33

補足

どこから:同じネットワーク上にあるWindowsXP PC + Access2000のフォームに入力した1レコードを新規で追加。
どこへ:SQL Server

以上、よろしくお願いします。

投稿日時 - 2008-09-12 10:55:47

ANo.1

この説明がわかりやすいのではないですか?
INSERTでも同様にできるはずです。
http://www.atmarkit.co.jp/fwin2k/win2ktips/347dbquery/dbquery.html

投稿日時 - 2008-09-11 00:18:48

補足

ありがとうございます。
また、こちらでも「Access開発実践ノウハウ」というパススルークエリについて詳しく書いている本を見つけました。

投稿日時 - 2008-09-12 11:00:44

-広告-
-広告-
-広告-
-広告-