引用:
クライアントサーバーについて教えてください。
主旨としては「データの競合発生時の対処方法について」
といったところでしょうか。
引用:
バックエンドはSQL Server Expressで、フロントエンドはAccess2019です。
SQL ServerのテーブルをAccess側でリンクテーブルとしてします。
SQL Server データベース側の各テーブルの定義内容
(各フィールドの名前/データ型、および主キーを含む
インデックス定義)について明記されることをお奨めします。
引用:
Accessのフォームで日付を指定すると、
その日のイベントに参加する人のデーターをワークテーブルにコピーして、
表形式のサブフォームで修正します。
仮に[イベントテーブル]とそれに従属する[イベント参加者テーブル]があるとして、
[イベントテーブル]の主キー(および[イベント参加者テーブル]の外部キー)は
どのフィールドなのでしょうか。
引用:
現在、それで問題なく動いているのですが、
同じ日付のイベントを同時に開く可能性が出てきました。
そもそも、複数の異なるイベントが同じ日付に開催される可能性は
ないのでしょうか。
引用:
例えば、AさんもBさんも11/30のイベントを開いていて、
Aさんが1件目を修正。Bさんは2件目を修正。
(日付のことはともかくとして)上記を「[イベントテーブル]の同じレコード」
という表現に置き換えた場合、その時編集対象となる[イベントテーブル]
および[イベント参加者テーブル]のレコードに対し、適当なタイミングで
レコードロックをかけ、それらのレコードの保存が完了するか、もしくは
編集がキャンセルされるまで、他のユーザーが同じレコードを
編集することが出来ないようにするのが一般的でしょう。
引用:
ワークテーブルを使わないで、
直接リンクテーブルをレコードソースとすることも考えたのですが、
レコード件数が多く、動作が遅くなってしまうため、
出来ればワークテーブルを使いたいです。
ワークテーブルを使うにしろ使わないにしろ、
バックエンドが SQL Server データベースなのであれば、
レコードロックをかける対象は SQL Server データベース上の
[イベントテーブル]および[イベント参加者テーブル]の
レコードでなければなりません。