- ベストアンサー
ACCESSに同時アクセス(編集)をしたい
教えてください。 ACCESSのDBに複数のユーザが同時にアクセスして、 データを追加・編集したいのですが、 やはり、不可能でしょうか?
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
- ベストアンサー
マイクロソフトのアクセスに同時に複数のユーザが同時にアクセスして データベースを操作することは可能です。いくつかの方法がありますが、 昔私が簡便に行なっていた方法は「テーブルのリンク」です。 あるコンピュータにアクセスでdb1という名前のデータベースを作って ここにデータを格納しておきます。 他方で別のコンピュータに、アクセスでdb2という名前のデータベースを作ります。 このdb2というデータベースのメニューで 「ファイル」->「外部データの取り込み」->「テーブルのリンク」 というのがありますから、最初に作ったdb1をたどり、リンクしたいテーブルを 選択します。 こうすることにより、db2にdb1のテーブルがリンクされ(リンクテーブルと 呼ばれます。アイコンが通常のテーブルと違います。)、db1に格納された データをdb2で編集することができます。 db2で、db1からのリンクテーブルを元にクエリーを作成することもできます。 リンクテーブルに対してできないことはテーブル構造の変更くらいで 他のことはだいたいできると思っていいかと思います。 このような形をとれば、ローカルエリアネットワーク内の複数のコンピュータ から同時に同じアクセスデータベースにアクセスすることは可能かと思います。 このやり方にはおそらく問題もあるだろうと思うのですが、昔私がやって いた頃は、特段支障もなく業務を行なうことができました。問題は、これを 読んだ他の誰かが指摘してくださるかと思います。 同じレコードに複数ユーザが同じタイミングでアクセスするとややこしい ことになります。これを回避するためには、db2にワークテーブルを備えておき、 リンクテーブルからレコードを一度db2に格納し、編集を終了したのちに リンクテーブルのレコードを削除し、ワークテーブルで編集したレコードを リンクテーブルに追加する、などのルーティンをマクロやVBAで構築するのが よいかと思います。私はそのようにしていました。 他に、ADOを使う方法などもあります。方法はいくつかありますから、 少し研究してみるといいですよ。(^-^)
その他の回答 (3)
- snoopy64
- ベストアンサー率42% (337/793)
#1 です。当方で再現してみました。 サーバー内に「db1.mdb(テーブル1)」を作成、パソコンA上のマイドキュメント内に「db2.mdb(テーブル1=リンク)」を作成、この「db2.mdb」をパソコンBにコピーし、パソコンAとBで同時にテーブル1への追加をしましたが、問題なくできました。 やってみて気付いたのですが、当方ではテーブル1を作成する際、主キーとしてはオートナンバーのフィールドを設けましたので、キーの重複が発生していません。 ひょっとして主キーのフィールドが手入力するようになっていて、かつ「重複なし」になっていませんか?
お礼
わざわざ、ありがとうございました。 主キーの設定等は問題なかったのですが、 同じDBは操作できましたが、同じレコードにアクセスするときに問題が発生してました。 別の方法で一応、逃げ対策ではありますが解決しました。 ありがとうございました。
#2です。 >また、同じレコードに複数ユーザが同じタイミングでアクセスする説明なんですが、 >動作はわかるのですが、それを実行するためのマクロ・VBAが分かりません…。 動作が理解できるようでしたら、あとは確かにマクロやVBAを習得するのみです。 きっとイケますよ。フォームはdb2の中に作ってください。 残念ながら、マクロの組み方やフォームの作り方、さらにはVBAなどの詳しい 説明は、キリがないのでここではできませんし、とても1日2日で習得できるものでも ないかと思います。そういう意味で、先にお示しした方法は、00hiroto00様が 現在急を要するようですと、有効性が薄いです。ごめんなさい。 ただ、今後もアクセスをお仕事などに使っていかれるようでしたら、 こういったことをステップにして少しずつ知らなかったことをご自分の ものにしていかれると、スキルアップを図ることができるのではないかと 思います。 たいした回答もできませんですいませんでしたが、そんなところでお許しください。
お礼
いえいえ、ありがとうございました。 VBAの使用ではないのですが、ひとまず問題は解決しました。 ありがとうございました。
- snoopy64
- ベストアンサー率42% (337/793)
当方ACCESS2000ですが、 ツール→オプション→詳細 既定の開くモード=共有モード 既定のレコードロック=ロックしない レコードレベルでロックして開く=オン これで実現できると思います。 他の方のために、バージョンなどを補足してください。
補足
回答有難うございます。 私の使用しているバージョンもACCESS2000です。 回答いただいた設定を確認いたしましたが、 最初からそのような設定になっていました。 しかし、同時に二人のユーザで同じテーブル等に追加処理を行うと、 最後に編集した方に「どちらの変更を保存しますか?」と表示されてしまいます。 二人の編集を別々のレコードでそれぞれ追加できませんか?
補足
ご回答ありがとうございます。 リンクテーブルのところまでは理解できました。 複数ユーザが、フォームを使ってデータを登録・編集するようにしたいのですが、 その場合、db2に対するフォームを作ればよいのでしょうか? また、同じレコードに複数ユーザが同じタイミングでアクセスする説明なんですが、 動作はわかるのですが、それを実行するためのマクロ・VBAが分かりません…。 すいません、初心者なもので…。