ACCESS データの競合が発生する原因

ACCESSを操作していると、以下のようなデータの競合メッセージが出たことはありませんか?

これは、同一のデータを同時に書き換えようとしたために発生する問題です。
今回は、データの競合が発生する原因をご紹介します。


こんにちは。
はこにわガジェット (@hakoniwagadget) です。

ACCESSを使った売上管理、顧客管理などのデータベース開発を行っています。
ACCESSは使いこなすために少しスキルが必要なものの、うまく活用すればExcelよりも業務の効率化が図れます。
この記事ではACCESSの基本的な使い方をご紹介していきます。

目次

データの競合とは

データの競合とは、ACCESSのテーブルに保存されているデータを、同一タイミングで複数の人、もしくは処理が異なる値に書き換えようとした際に起こる現象です。

もともとAというデータを、Bに書き換えるという命令と、Cに書き換えるという命令が同時にACCESSに伝えられると、ACCESS側はどちらを正としてよいか判断できずにデータの競合が発生します。

データの競合、以下のような原因で発生します。

  1. 複数のユーザーがフォームで同一のレコードを表示して同時に書き換えた
  2. ある人がフォームでデータを表示している途中で、別の処理によって表示しているデータが書き換えられた

データの競合が頻繁に発生する場合は、上記のような原因となる処理が無いかを確認しましょう。

データの競合の回避方法

データの競合は、ACCESSの仕様上どうしても発生してしまいます。
データベースの開発方法や運用方法をもとに、できるだけ発生しなくするための回避策は以下の通りです。

データを開く時間をできるだけ短くする

フォームでデータを編集した際に、その画面を開けっ放しにしておくと、他の人が同一のデータを書き換えた際にデータの競合が発生してしまいます。

利用が終わったら画面を閉じる、ということを徹底することでデータの競合を避けることが可能です。

新規のデータ入力を同時に行わない

新規のデータを入力する際に、複数人が同時に入力を行うとオートナンバー型の値がうまく取得できない危険性があります。すると、片方の入力したデータは登録され、もう一方は登録されないという問題が発生します。

新規のデータ入力は一人ずつ行う方が良いでしょう。

VBAでテーブルのデータを書き換える処理を、データ編集フォームで行わない

開発面での工夫もあります。
ACCESSでは、VBAのADOを使ってプログラムでテーブルのデータを一斉に書き換えることが可能です。

この処理を、データ入力・編集フォームを開いている際に行うと、人間がフォームで入力した結果と、プログラムが書き換えた結果が競合してしまい、データの競合が発生します。

プログラムによるデータ更新処理は、データの編集フォームなどで行わず、データの競合が発生しにくいタイミングや画面で実行しましょう。

一時的にローカルにデータを保存し、サーバーへまとめてアップロードする

最後は一番難しい処理です。
データの競合は誰かが特定のレコードを利用している状態で、他の誰かが同じレコードに変更を加えると発生します。

そのため、そもそも特定のレコードを利用する時間自体を減らすことが効果的です。
しかし、ACCESSを普通に使っているのでは、フォームから共有されたテーブルのレコード情報を読み出すためにこれが実現できません。

そこで、テーブルを最終的なデータを保存するマスターテーブルと、同じレイアウトで個人的な一時保存用のテンポラリーテーブルに分けるという方法があります。

フォームにデータを呼び出す際はマスターテーブルから呼び出し、そのデータを一時保存用テーブルに保存します。
フォームから入力されたデータは一時保存用テーブルに記録し、フォームを閉じた際に一時保存用テーブルからマスターテーブルに書き戻します。

こうすることによってマスターテーブルへのデータ読み書き時間は短縮できますので、データの競合は発生しにくくなります。ただし、他の誰かが読みだしたデータを書き込む前に、別の誰かが古いデータを読み出すという可能性はありますので、データの競合は回避できますが、これでも完全な対策とは言えません。

以上、データの競合が発生する原因をご紹介しました。


ACCESSを使いこなせば、業務の効率化や自動化が実現できます。
しかし、自分でACCESSを学ぶには時間がない、難しそうで不安、という方も多いでしょう。

そんな時は、ACCESS開発歴20年以上、過去に300以上のACCESSデータベースの開発・修正実績のあるはこにわガジェット(@hakoniwagadget)にお任せください。

ACCESSの新規開発、既存のACCESSの修正、ACCESSの操作レッスンなど様々なサービスをご提供しています。
ご興味のある方は下記のサービス一覧をご覧ください。

フッターバナー

最後までお読みいただき、ありがとうございました。

データの競合が発生する原因

この記事が気に入ったら
フォローしてね!

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!
目次