Microsoft Access 掲示板

ホームタブの「更新」「すべて更新」をVBAで行いたい / 3

4 コメント
views
4 フォロー
3

harePointのリンクテーブルを使ったことがないので、あくまで推測ですが、下記によると、
[ホーム] タブの[レコード]グループで [すべて更新] とマクロの再クエリ 、VBAの Requery は同じ処理のように読めます。

データの更新または再クエリを実行する - Microsoft サポート

ただし、

しかし、たとえばAさんが登録後、タイミングよくBさんが1,2秒後にすぐ登録しようとすると、T_入力元の最新情報がまだBさんのAccessファイル上では反映されておらず、Aさんと同じID番号を取得してしまう現象が起こります。

2人のユーザーがほとんど同時に、
再クエリして最大IDを取得して、それを利用してレコード保存した場合、再クエリとレコード保存のわずかな時間でも重なる場合がありえますので、その時は重複する可能性はあります。

その辺を厳密にするなら、採番用のテーブルを別に用意して、そこに最大ID番号を格納しておきます。
更新処理の最初にその採番用テーブルは排他的に開き(他ユーザーが開けないようにロック)、ID番号に1加算して、それを元にレコード保存して、採番用テーブルを閉じるようにします。
もし、他ユーザーが更新処理に入っていたら、採番用テーブルは開けないので、開けるようになるまでまって更新処理に入るという処理にする、という方法があるようです。

私自身はそこまでしたことはないですが、そういう方法もあるということで状況によってはその必要もあるかもしれません。

通報 ...