【ACCESS】レコードをロックして、改ざんを防止

こんにちは。伊川(@naonaoke)です。

今回は、レコードをロックする方法を紹介します。

これにより、レコードの改ざんを防止することができます。

ある日、突然、上司に呼び出され、レコードの改ざんを防止してほしいと業務命令が下りました。

私も知らなかったので、みなさんにご紹介します。

このブログは、こんな人にお勧め

今回のお題
  • レコードの矛盾が発生した等のエラーを発生させたくない人
  • 多人数で、ACCESSを利用している人
  • ACCESSのVBAを覚えたい人

解決

解決策
  • フォーム上で、ダイナセットから、スナップショットへ変更する
  • レコードをロックするVBAのコードを記載する

レコードロックの方法

レコードをロックする方法として、いろいろ方法があります。

今回は、改ざん防止という事で、紹介しますが、改ざんをするような社員は、雇ってはいけません。

想定するシーンは、多人数で、ACCESSを利用する場合、どうしても同時にレコードを編集するシーンがあります。

その時に、矛盾が生じると、ACCESSが破損する可能性があります。

それを何度も繰り返すと、VBAのコードが作動しないとか、様々な障害が発生します。

だから、レコードの矛盾を避けるためにレコードのロックをしなければなりません。

レコードロックの方法 作業手順 その1 スナップショットを設定する


フォーム上で、レコードを変更されたくない場合は、ダイナセットから、スナップショットへ変更します。

この設定だけで、レコードは変更できなくなります。

クエリも場合も同様に、ダイナセットから、スナップショットへ変更することで、レコードをロックできます。


レコードロックの方法 作業手順 その2 VBAでレコードロックを実行する


上のようなフォームがあるとします。

そして、レコードロックというチェックボックスがあります。

レコードロックにチェックが、入ると、レコードの編集ができなくなります。

レコードロックの方法 作業手順 その3 イベント発生は、ダーティー時に設定する

ダーティー時とは、なかなか聴かないと思います。

要するに、ダーティー時は、確定状態から編集状態へ移行した時に発生するイベントです。

非連結のテキストボックスでは発生しません。

 


記載するコードは、上のようなコードになります。

たった1行のコードなので、カンタンですよね。

レコードロックの方法 作業手順 その4 レコードロックを解除する

一度、データを保存すると、レコードロックは、手動では、解除できません。

VBAのコードで解除するか、テーブルから解除する必要があります。

フォーム上で解除できたら、そもそも、ロックする意味がありません。

では、フォームでは、どのように解除するのでしょうか?

単純に言えば、チェックを外すだけです。


レコードロックの方法 作業手順 その5 レコードロックを解除するには更新クエリを使う

このデータベースでは、レコードが6件しかないので、手動でもできます。

しかし、レコードが、1,000件、10,000件あった場合は手動ではできないです。

あるフィールドの値を一気に変更する技は、更新クエリを使います。


3秒で、チェックボックスのチェックが外れます。

テーブル自体を手動で触るのは、良くありません。

データの値を変更するには、更新クエリを使いましょう。

ここがポイント

ここがポイント
Function8.png
レコードをロックすることで、ACCESSを扱いやすくなります。つまり、レコード自体に矛盾が発生するのを防止できます。ACCESSが破損したことは、何度かありますが、修復が非常に面倒でした。あらかじめ予防策も必要かと思います。

動画とブログでわかりやすくExcelとACCESSを紹介しています

まとめ

今回は、レコードをロックする方法を紹介しました。

では、レコード使用しているときに、「他人がレコードを使用中です」とメッセージを表示させることもできます。

その方法については、また次回紹介します。

今回のサンプルファイルは、No170です。

サンプルファイルを購入希望の方はココをクリック
サンプルファイルの購入
ブログが動画で紹介した内容のサンプルファイルを購入できます。
月額3,000円です。
練習用ファイルもダウンロードできます。
PayPal経由でお支払いでます。
ダウンロード回数に制限はありません。
スポンサーリンク

Twitterでフォローしよう

おすすめの記事