#794 フォームが読み取り専用で開かれたかどうかを調べるには? フォーム、VBA

AccessのVBAでフォームを開く際、
  • DoCmd.OpenForm "フォーム1"
    とすることで、データを編集可能な状態で開くことができます。

  • DoCmd.OpenForm "フォーム1", , , , acFormReadOnly
    のように定数「acFormReadOnly」を指定することで、読み取り専用で開くことができます。

このとき、開かれた側の「フォーム1」のVBAのコードで、自身が読み取り専用で開かれたかどうか調べる方法です。

それには、フォームの「Load/読み込み時」イベントプロシージャなど、状態を調べたいタイミングで、自身(Me)の「AllowEdits/更新の許可」プロパティなどの値をチェックします。

「acFormReadOnly」で開かれた場合、デザイン上のプロパティ設定に関わらず、次のようなプロパティ設定の状態になっています。
  • 更新の許可 AllowEdits = False
  • 追加の許可 AllowAdditions = False
  • 削除の許可 AllowDeletions = False
これを利用することで、AllowEditsプロパティ(他の2つでも可)が「Falseなら読み込み専用」と判定できるわけです。


コード例:

Private Sub Form_Load()

  If Not Me.AllowEdits Then
    MsgBox "読み取り専用です!", vbOKOnly + vbInformation
  Else
    MsgBox "編集可能です!", vbOKOnly + vbInformation
  End If

End Sub

| Index | Prev | Next |



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