Tipsといいますか、ちょっとした応用です。
フォーム上で重要な値を誤って変更してしまわないようにコントロールを使用不可とするものの、ユーザーがチェックボックスを操作することにより使用可とすることができる、という仕組みです。
例としてこのような単票フォームを用いて、「価格」の使用可・不可を操作させるものとします。
まずは非連結のチェックボックスを設置し、名前を「変更不可チェック」とします。非連結のチェックボックスですのでコントロールソースは空欄となります。
このチェックボックスの既定値をTrueとします。
次にテキストボックス(価格)の設定です。
条件付き書式を開きます。設定については簡単に言って「式」、「[変更不可チェック]=True」とし、「有効化」のボタンをクリック(実際には使用不可となる設定)します。
設定はこれで終了です。
フォームビューで見てみますと、チェックボックスは既定値によりTrueとなっており、価格はグレーアウトしていて使用することができません。
チェックボックスをクリックしてFalseにすると使用可となり、値を変更することができます。
このチェックボックスとテキストボックスの状態(使用可・不可)は、他のレコードに移っても変わりません。
また、フォームを閉じてから開きなおしたときは再度True(使用不可)となります。
割と簡単でしたが基本的には以上です。
さて、上記の例ではチェックボックスを詳細セクション内に置きましたので、フォームを帳票フォームに変更した場合にはすべてのレコードにチェックボックスが表示されます。どのチェックボックスも同じ値(True,False)を示し、どれかをクリックすると一斉に変更されます。テキストボックスの状態(使用可・不可)も同様です。
そこでチェックボックスをフォームヘッダーに移した例です。
チェックボックスをクリックするとすべてのレコードのテキストボックスの状態が一斉に変更されます。こちらの方がちょっとスマートかと思います。
最後にですが、レコードごとに可・不可を制御させたいということがあるかもしれません(この例ではさほど必要性を感じませんが)。
その場合は、テーブルにチェックボックスの値を記録するための列を持たせます。ここでは「変更不可フラグ」とし、Yes/No型とします。
これをコントロールとしてフォーム(帳票フォームとしています)の詳細セクションに置きます。これまでの例と違って連結コントロールですので、コントロールソースに値が表示されます。
あとは条件付き書式の設定を上記と同様にすればOKです。
レコードごとにテキストボックスの変更可・不可を制御することができます。
レコードごとの状態はテーブルに記録されていますので、フォームを閉じてから開きなおしても、以前の状態が維持されています。