• ベストアンサー
  • 困ってます

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

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

共感・応援の気持ちを伝えよう!

  • 回答数2
  • 閲覧数755
  • ありがとう数3

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

  • ベストアンサー
  • 回答No.2

前職でSQLとAccessを連携させてシステムを構築していました。 2年前なので現在はもっと効率的な方法もあるのかもしれませんが OJTで前述のような方法を学んでいました。 ただ私が後輩を指導する際には http://www2.famille.ne.jp/~akio1998/l_msac.html であったり 書籍は谷尻かおりさんの書かれた物がに役立ってはいましたので 活用してみてください。 一番いいのは、開発者用サイト(SQL 質問 掲示板などで検索すると大体でてきますが) にはQ&A掲示板があり、そこであればより多くの専門家が閲覧して 答えてくれるのでそこで得た答えを参考に試行錯誤を一度してみるのがスキルをつけるのにてっとり早いと思います。

共感・感謝の気持ちを伝えよう!

質問者からのお礼

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

関連するQ&A

  • ACCESS2002でSQL Server2005のテーブルをODBC

    ACCESS2002でSQL Server2005のテーブルをODBC接続でリンクさせています。(「外部データの取り込み」-「テーブルのリンク」) そのリンクしたテーブルのプロパティーを見ると「主キー」が設定されているのですが、プロシージャでこのテーブルをOpenし、IndexでSeekすることはサポートされていないのでしょうか?

  • SQL Server とaccess この認識であってますか?

    SQL Serverを使えば共有されていない2台のパソコンからでもIDとPWがわかれば テーブルをSQL Serverにアップしてaccessで操作できると言う認識であってますか? accessの本体の部分(フォームなど)をこの2台のパソコンに入れておけば 同じデータ(テーブル)を扱えるのでしょうか? ご回答よろしくお願いします。

  • AccessのNULL値とSQL ServerのNULL値で違いはありますか?

    SQL ServerのテーブルをAccessにODBCでリンクを貼っています。 AccessでSQL ServerのNULL項目を表示した際に挙動がおかしくなったので… そこでSQL ServerのテーブルのNULL値を空文字("")にしたら正常になりました。 AccessのNULL値とSQL ServerのNULL値で違いはありますか? ご存知の方がいましたらご教授お願いします。

その他の回答 (1)

  • 回答No.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できるかと思いますが。 もし見当違いでしたらすみません。

共感・感謝の気持ちを伝えよう!

質問者からの補足

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

関連するQ&A

  • AccessとSQL Serverの連携について

    現在Accessで組まれているデータベースがあるのですが、複数人で入力をする必要が出てきたため、SQL Serverへ移行したいと思っています。 ただ、まだデータベースの内容が完全にFIXしておらず、項目に変更や追加が発生する可能性があります。 そこで、 ●Accessを管理画面として使い、 ●Access上で内容を変更したら、システム全体もその通り変わる ような仕組みを作りたいのですが、可能でしょうか。 (完全にSQL Serverへ移行するのではなく、AccessとSQL Serverを連携させる?) よき方法がありましたら教えて頂けましたら幸いです。 ちなみにコストはあまり大きくはかけられません・・。 どうぞよろしくお願いします。 (※私はシステムはど素人なので、なるべく簡単に教えて頂けたら嬉しいです。なお、説明がおかしなこともあるかと思いますがご容赦ください。)

  • AccessとSQL Serverの連携について

    Accessをフロントエンドとして、SQL Serverをバックエンドとしてデータベースを構築したいとします。 【質問1】 構築後、Accessのテーブルやフィールドを変更することはできるのでしょうか。 【質問2】 上記の仕組みをWindowsサーバではなく、UNIXサーバ上で実現できるでしょうか。

  • SQL Server へのデータ追加について

    現在a、b、cの店舗でそれぞれAccessをDBとして活用しているのですが、それとは別に 3店舗分のデータを一つにまとめた統合用DBとしてSQL Serverを利用したいと考えています。その際、それぞれ各店舗分のデータをSQL Serverへと追加していきたいのですが、どういった処理が最適で効率が良いのか分からず困っています。 希望する処理的には何らかのexeファイルを作成し、そのexeファイルを叩くとAccessからデータを吸い上げ、SQL Serverへとデータを追加するということを行いたいです。 私が考えられる処理としては以下の2点でした。 1、Accessから吸い上げたデータをストアドを使い、データを追加していく。 2、Accessから吸い上げたデータをCSVに変換し外部ファイルとし、ローダーを使用して   データを追加する。 それぞれの店舗データが3万件程あります。 なるべくDBに負担をかけないで以上の様な事を行いたいです。 DBまわりにお詳しい方、ご教授よろしくお願い致します。

  • Accessのテーブルへのデータインポートについて

    Accessのテーブルへのデータインポートについて Access2002で、A.mdbのTESTテーブルからB.mdbのTESTテーブル(構造は同じ)へテーブルデータをインポートしたいのです。 TESTテーブルの主キーはSEQ(オートナンバー)しかありません。 そのときに、コピー元とコピー先の主キーに重複があった場合、オートナンバーなので自動で再付番しデータが追加して欲しかったのですが、 Accessの機能のエクスポート、インポートでは、コピー先に主キーに重複があったデータは上書きされてしまいます。 テーブルを開き、データをコピー&ペーストしますと、ペーストしたときにオートナンバーで自動で再付番されます。 この方法でもいいのですが、データが数百万件あるので、現実的ではありません。 Accessのインポート・エクスポートで、オートナンバーで主キーを再付番してから、B.mdbのTESTテーブルにデータ追加する方法はないでしょうか? よろしくお願いいたします。

  • ACCESS+SQL Serverで主キーを自動採番する

    ACCESS+SQL Serverで主キーを自動採番する ACCESSを独学で勉強を開始しているものです。 顧客管理のようなものを作りたいと思っているのですが、 オートナンバーではない主キー(顧客コード)を設定しているテーブルがあります。 顧客コードの構成はアルファベット1文字+数字8桁です。 そのうち、数字は西暦2桁+月2桁+日2桁+下2桁は連番です。 ACCESS2007プロジェクトで、SQL Server 2005 Express Editionへ接続しテーブルは作ってあり、既に顧客データが10件ほど入っています。 新規に顧客データを追加する際に、必要事項を入力し、登録ボタンを押した段階で顧客コードを自動生成し、重複チェックし、採番したいと考えています。 アルファベットは必要事項入力時に入力済み、日付もその日の日付を6桁設定し、とりあえず「01」と下2桁を採番して、現在のデータに同じものがないかチェックします。 そして、同じものがあれば「01」+1を繰り返しながらチェックしていくというようなコードはどのようにすればいいでしょうか? わかりづらいとは思いますが、よろしくお願いします。

  • AccessのテーブルをSQL Serverに自動インポートする方法について

    現在SQL Server2005を使用しております。 別のサーバー内でAccessのテーブルデータが定期的に更新されており、 このデータを利用したシステムをSQL Server上で作ろうと考えています。 手動でSQL ServerにAccessのテーブルデータをインポートするやり方は分かりましたが、(データ更新の為に)定期的にインポートする方法がわかりません。 どのように実現すればよいか、サンプルや参考になるHPがありましたら 是非教えていただけないでしょうか?

  • ACCESSでEXCELの複数のデータをテーブルに貼り付けた時、必ず貼

    ACCESSでEXCELの複数のデータをテーブルに貼り付けた時、必ず貼り付けられないデータがある。 エクセルの4行19列のデータをACCESSのテーブルに貼り付けようとしました。テーブルに主キーの設定はなく規制は全くないテーブルです。データ型はテキスト型になっておりEXCELデータと一致しています。しかし特定の1行だけが毎回貼り付かず、3行のみとなってしまいます。 しかしその1行だけを個別で貼り付けると貼りつけることが出来ます。貼り付けエラーは発生しません。 キツネにつままれたような気がして、4行のデータでしたので気付きましたが多数では気づくことが出来ず重要なデータを漏らす恐れがあるため解決したいと思います。 心当たりのある方お願いします。

  • ACCESS VBAでSQL Server使用

    ACCESS VBAでSQL Server使用しています。 データ量が多い場合、 リンクテーブルを張ってDocmdでJetデータベースエンジンを使う方法と SQL ServerにADOで接続してT-SQLを使用する方法ではどちらが早いでしょうか?

  • ACCESSで質問です。

    ACCESSで質問です。 テーブルA(複数企業)とテーブルB(Aの企業に対する対応状況)があります。 選択クエリにてAとBの2つのテーブルを電話番号でリレーションをもたせ、その企業の対応状況を検索し、結果をフォームに表示できるものを作りました。 しかし、企業(テーブルA)に対して複数の対応状況(テーブルB)があるため、フォームでBの対応状況分と同じ枚数のAレコードが表示されてしまいます。 クエリのプロパティで「固有のレコード」を「はい」にしても表示されてしまいます。 イメージでは、AテーブルとBテーブルの項目どれでも検索ができ、初めに検索結果をフォーム1で企業データを表示させ、コマンドボタンをクリックするとフォーム2で、その企業の対応状況が表示されるようにしたいのです。 現在検索は出来ていますが、フォーム1で同じ企業データレコードが複数表示されないようにしたいのです。 どのようにしたら出来ますでしょうか?アドバイスお願いします。 ・使用バージョンはACCESS2000です。 ・Aテーブルの企業データは重複なしです。 ・Aテーブルの主キーは電話番号です。 ・検索条件はA・Bの項目合わせて10項目で、全てIIFを使用して検索しています。 ACCESSを始めたばかりの初心者です。質問も初心者レベルですが、よろしくお願いします。

  • SQL server 2008 management studio で

    SQL server 2008 management studio でテーブル内を1000件以上表示させ、編集したい。 いつもお世話になっております。 今回、DBにSQL server 2008を使用しており、 DBの中身を、management studioで確認しておりました。 テーブル内のデータが1000件以上になり、 1000件以上のデータを表示したくても、 できません・・・。 management studioでは1000件以上のデータ表示はできないのでしょうか? management studioでの1000件以上の表示方法、 もしくは、それ以外の初心者でも使えるツールで、 1000件以上のデータの表示と編集・削除ができる方法を、 教えていただけましたら幸いです。 すみませんが、よろしくお願いいたします。