#123 レコードの編集をフォーム側で制御する方法 フォーム、VBA

一般に、フォームを開く場合はDocmdオブジェクトの「OpenFormメソッド」を使います。このメソッドには"datamode"という引数があり、フォームに表示されたレコードに対する編集の許可を指定することができます。

しかし、この引数には、レコードの追加のみ許可する(定数acFormAdd)、編集を許可する(定数acFormEdit)、読み込み専用とする(定数acFormReadOnly)、フォームのプロパティの設定に従う(定数acFormPropertySettings)の4種類しか指定することができません。

一方、フォームには、レコード編集に関連したプロパティとして、次の4つのプロパティがあります。
  1. AllowEdits/更新の許可
  2. AllowDeletions/削除の許可
  3. AllowAdditions/追加の許可
  4. DataEntry/データ入力用
フォームが開かれる際に、フォーム側でこれらのプロパティをVBAで設定することによって、さまざまな組み合わせで編集条件を制御することができます。例えば、あるときは「既存のレコードの更新はできるが追加・削除はできない」、あるときは「更新と追加はできるが削除はできない」といった細かい制御を行うことができます。


その一例として、フォームの"Load/読み込み時"イベントプロシージャを使った方法を次に示します。

次の例では、OpenArgs引数に応じてその設定を変更しています。OpenArgs引数に何も指定されていないときはフォームのデフォルトの設定を使います。もし何かが指定されていたら、追加と削除はできないようにします。
Private Sub Form_Load()

  With Me
    If Not IsNull(.OpenArgs) Then
      .AllowAdditions = False
      .AllowDeletions = False
    End If
  End With

End Sub
この方法によって、あるフォームがさまざまな別のフォームから呼び出されるような場合に、呼び出し元のフォームに応じて編集の許可を切り替える、といったことが可能になります。
| Index | Prev | Next |



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