#451 特定のレコードだけ編集不可にするには? フォーム、VBA

フォームに表示されているレコードすべてを編集不可にするには、「レコードセット」プロパティを"スナップショット"に設定する、「更新の許可」プロパティを"いいえ"に設定するなどの方法がありますが、VBAのイベントプロシージャとコードを使うことによって、特定の条件に合致するレコードだけを編集不可にすることができます。

たとえば、次の例では、カレントレコードの商品区分テキストボックスの値が”2”の場合には、その編集ができないようにしています。

Private Sub Form_Dirty(Cancel As Integer)
'フォームのダーティー時

  '商品区分テキストボックスの値を確認
  If Me!商品区分 = 2 Then
    '商品区分が2なら編集不可
    Cancel = True
  End If

End Sub


Dirtyイベントは、フォームのレコードのいずれかのフィールドの内容が更新されようとしたときに発生します。そのタイミングでカレントレコードのフィールド値をチェック、もし更新させたくないレコードであれば、イベントプロシージャの引数である「Cancel」に"True"を代入します。それによってイベントがキャンセルされ、結果的に更新を受け付けてくれない(データのキーインが不可)ような状態にすることができます(レコードの削除は可能です)。
| Index | Prev | Next |



T'sFactory
Accessで動く生産管理DB
Ureru Express
Webで使う販売顧客管理
Access開発&アドバイス
DB開発やテクニカルアドバイス
Copyright © T'sWare All rights reserved