PR

入力済データの編集制限を設定する方法|Access初心者向けガイド

Access
スポンサーリンク
スポンサーリンク

こんにちは、なかぜんです!
今日は「入力済みデータを編集できないようにする方法」について、初心者さんにもわかりやすく解説していきます。

「うっかり過去のデータを上書きしてしまった…」
そんな経験、ありませんか?
Accessでは、ちょっとした設定やVBAを使うことで、入力済みデータの編集を簡単に防ぐことができます。

この記事を読めば、重要なデータを誤って変更してしまうリスクを減らせるので、ぜひ覚えておきましょう!

スポンサーリンク

なぜ入力済みデータの編集制限が必要なの?

業務でAccessを使っていると、入力ミスや編集ミスによるトラブルが意外と多いものです。特に、以下のような場面で編集制限が効果的です。

  • 一度確定した伝票や注文データを誤って変更されたくないとき
  • 承認済みの情報は触られたくないとき
  • 履歴データとして保存しておきたいとき

ミスを防ぐだけでなく、システムの信頼性アップにもつながりますね。

編集制限をかける基本方法

方法①:フォーム側で制御する(プロパティ設定)

一番簡単なのは、フォームのコントロールにある「編集可否」を設定する方法です。

  1. フォームをデザインビューで開く
  2. 対象のテキストボックスを選択
  3. プロパティシートの「データ」タブで「編集ロック」をはいに設定

これだけで、そのフィールドは編集できなくなります。

ただし、すべてのレコードに対してロックがかかってしまうため、「入力済みだけロックしたい」という場合には、次の方法がおすすめです。

方法②:VBAで条件付きロックをかける

「新規入力中は編集できるけど、保存後はロックしたい」という場合は、VBAを使って制御します。

実際のコード例

Private Sub Form_Current()
    ' データが存在する場合のみロック
    If Not IsNull(Me!ID) Then
        Me!商品名.Locked = True
        Me!数量.Locked = True
        Me!単価.Locked = True
    Else
        Me!商品名.Locked = False
        Me!数量.Locked = False
        Me!単価.Locked = False
    End If
End Sub

ポイント解説:

  • Form_Currentイベントに設定することで、レコードが切り替わるたびに判定されます。
  • IDのような主キーがNULLでない=「すでに保存されたデータ」とみなしてロックします。

これなら、新しいレコードでは自由に入力でき、保存されたレコードだけ編集できなくなります!

実際の画面イメージ

下の図のように、保存済みレコードはグレーアウトして編集できない状態にできます。

注意点・よくあるミス

  • ロックする対象を間違えない:不要なフィールドまでロックしないよう注意!
  • 必須フィールドの扱い:保存前にロックしてしまうと必須入力エラーになるので、条件分岐をしっかり。
  • ユーザー別制御:管理者だけ編集できるようにしたい場合は、さらに工夫が必要です。

応用ポイント|中級者向け

ユーザー権限でロック制御する

ログインユーザーによって、編集可能・不可を切り替える方法もあります。

If CurrentUser() = "admin" Then
    Me!商品名.Locked = False
Else
    Me!商品名.Locked = True
End If

このようにすれば、管理者だけが修正できる仕組みも作れます。

レコード全体をロックする方法

特定条件でフォーム全体を編集不可にするなら、フォーム自体のAllowEditsプロパティを使う手もあります。

If Not IsNull(Me!承認日) Then
    Me.AllowEdits = False
End If

「承認されたらもう編集禁止!」という運用にもぴったりです。

まとめ|入力済みデータの編集制限は業務効率化に必須!

Accessでは、ちょっとした工夫で「誤ってデータを編集してしまうリスク」をぐっと減らすことができます。

  • フォーム側のロック設定
  • VBAで条件付きロック
  • ユーザーや承認状況による制御

これらを組み合わせることで、より実用的なシステムが作れますよ!

ぜひ、あなたのAccessシステムにも取り入れてみてくださいね。
それでは、なかぜんでした!