Microsoft Access では、ユーザーと別のユーザーが同時にデータベース内の同じレコードに書き込もうとすると、[ 書き込みの競合 ] ダイアログ ボックスが表示されます。 既定のロック方法 (悲観ロックと呼ばれる) では、最初にレコードへの書き込みを試みるユーザーにロックの所有権が付与されます。 他のユーザーは自分より先にレコードを保存できますが、ロックは自分が所有しているので、自分が決定できます。 書き込み競合が発生する主な原因は 2 つあります。
- 同じ Access データベースで同時に 2 つのオブジェクト (テーブルとフォームなど) を開いていて、両方のオブジェクトが同じレコードに書き込もうとしている場合。 この場合、相手はあなたです。 レコードへの書き込みを試行する最初のオブジェクトがロックを所有します。
- Access データベースが共有されていて、別のユーザーが同じレコードに書き込もうとしている。 この場合、レコードに書き込もうとした最初のユーザーがロックを所有します。
競合を解決する
Access では、次の 3 つの選択肢を提供できます。
- レコードの保存 相手が行った変更を上書きできます。 レコードを最初に編集したのはあなたであるため、あなたはロックを所有しています。 相手はおそらく変更を失います。 可能であれば、このオプションを使用しないでください。
- クリップボードにコピー レコード全体が、自分が行った変更と共にクリップボードにコピーされ、その後、他のユーザーが行った変更がレコードに表示されます。 変更を受け入れるか、クリップボードに保存されている内容に基づいて変更を上書きすることができます。
- 変更の削除 自分がロックを所有していても、他のユーザーに保存した変更を保持させる。
詳細情報
この動作はプログラムで制御できます。 詳細については、「 RecordLocks プロパティ 」を参照してください。また、 Access でフォームを閉じると、予期しない書き込み競合エラーが発生する。