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

解決済みの質問

SQL ServerとACCESSとのデータのやり取りについて

下記の仕組みを検討しています。データをSQL Serverに置く。(安全性などを考慮して)Access側にも同じ構造のテーブルを用意してデータの編集・検索表示などをACCESSで行う。更新したデータをSQL Serverの該当テーブルにSQL文を実行して書き込む。書き込み方法は、両者を比較してSQL Server側にないレコードをInsert文にて追加する。(Not Inによるサブクエリを使用)
お聞きしたいのは、ここで問題が発生していまして、
(1)単一主キーのテーブルの場合は動作しているが、複数主キーのテーブルの場合に、処理に非常に時間がかかる、もしくはエラーとなること(複数主キーでは処理できないものなのか)
(2)上記のようなSQL ServerにデータをおいてAccess側でデータの編集・検索表示などを行う場合の良い仕組みについて
色々とHPを探し回ったのですが、今回のケースにずばり当てはまるものがなく、解決の糸口もなく苦戦しています。わかりにくい質問文になって申し訳ないですが、似たようなご経験の皆様方おられましたらアドバイス頂けないでしょうか。お願い致します。

投稿日時 - 2005-02-15 00:19:35

QNo.1219032

困ってます

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

前職でSQLとAccessを連携させてシステムを構築していました。
2年前なので現在はもっと効率的な方法もあるのかもしれませんが
OJTで前述のような方法を学んでいました。

ただ私が後輩を指導する際には
http://www2.famille.ne.jp/~akio1998/l_msac.html であったり
書籍は谷尻かおりさんの書かれた物がに役立ってはいましたので
活用してみてください。

一番いいのは、開発者用サイト(SQL 質問 掲示板などで検索すると大体でてきますが)
にはQ&A掲示板があり、そこであればより多くの専門家が閲覧して
答えてくれるのでそこで得た答えを参考に試行錯誤を一度してみるのがスキルをつけるのにてっとり早いと思います。

投稿日時 - 2005-02-16 01:12:49

お礼

いままで見つけることのできなかったサイトをたくさん教えて頂きまして、とても参考になりました。ありがとうございました。こちらのQ&A掲示板をチェックして色々試してみたいと思います。書籍はやはり谷尻かおりさんのが評判良いですね。私も1冊参考にさせてもらっています。

投稿日時 - 2005-02-16 21:52:18

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

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

回答(2)

ANo.1

SQL側のテーブルはリンクされてMdb上には存在すると考えてよろしいでしょうか?
複数主キーのテーブルの場合に限らず、そのようなINSERTを行う場合はサブクエリーではなく

SQL側  Aテーブル  主キー A1 A2
Access側 Bテーブル  主キー B1 B2
だとすると

INSERT INTO Aテーブル(A1,A2,A3,A4)
SELECT B.B1,B.B2,B.B3,B.B4
FROM Bテーブル B
LEFT JOIN Aテーブル X
ON B.B1 = X.A1 AND B.B2 = X.A2
WHERE X.A1 IS NULL

とすればSELECT文で持ってこれるデータはAテーブルになくBテーブルに存在するデータのみとなり
そのデータをAテーブルにINSERTできるかと思いますが。

もし見当違いでしたらすみません。

投稿日時 - 2005-02-15 00:32:25

補足

わかりにくい質問ながらご回答頂きましてありがとうございます。
リンクテーブルは使わない様にと指示(遅くなる為)されていまして、構造を同じくするワークテーブルを作成しています。
アドバイス頂いた複数主キーテーブルに対して(SELECT文で抽出)の方法で処理時間がどのくらい早くなるか試してみたいと思います。
ご経験者でお詳しい様ですが、こういった仕組みについてどのように勉強されているのでしょうか?HPや書籍でお勧めのものがありましたら読んでみたいのですが。

投稿日時 - 2005-02-15 23:09:39

あなたにオススメの質問