在庫管理システムを構築していくなかで、マスタデータの修正をするためのフォームを模索していました。
当初はAccessのことをよく知らず、分割フォームのことを知って使い始めました。しかし不満があり、さらに調べた結果としてサブフォームを使うのが使いやすい、となりました。
分割フォームは簡単
【分割フォーム】はテーブルまたはクエリを選択しておき、【作成】タブの【その他のフォーム】、【分割フォーム】をクリックします。
これで、マスタができています。しかし、
分割フォームの気に入らない点
テキストボックスなど、項目によってサイズを変えたいのに、思い通りにいかなくてイライラします。最初はこれでいいか、と諦めていました。
また、分割フォームを閉じる方法として、VBAで「DoCmd.Close」がエラーになって、仕方なくマクロの「ウィンドウを閉じる」を使用していました。フォームを開く・閉じるに1個1個のマクロを作っていたのでは見づらいです。VBAで一括で作りたかったのです。
これらのことは私の知識不足かもしれません。「できるよ」と言う方もいらっしゃるかもしれません。しかしもう、分割フォームは使わないので、その知識も不要になりました。
サブフォームの作り方
サブフォームコントロールを配置
- 1
まっさらのフォームのデザインにて、【デザイン】タブからサブフォームコントロールを選びます。【コントロールウィザードの使用】は有効にしておきましょう。
- 2
サブフォームウィザードで【既存のテーブルまたはクエリを使用する】のまま【次へ】
- 3
サブフォームに表示させたいテーブルまたはクエリを選び、「>」で個別フィールドか「>>」ですべてのフィールドを選択して【次へ】(【完了】でも良い)
- 4
- 5
サブフォームの名前を付けて【完了】
- ここまで
テキストボックスにコントロールソースを割り当てる
- 1
フォームの下半分にサブフォームを、上半分にテキストボックスをペコペコ配置します。
- 2
サブフォームでマスタのフォームができます。次にテキストボックスのコントロールソースの割り当て方を説明します。
テキストボックスの【プロパティ】にて【…】をクリックします。(下の図ではコンボボックスになっていますが、テキストボックスも同様です)
- 3
サブフォームのフィールドリストを選び、【式の値】で<値>をダブルクリックすると、テキストボックスにサブフォームのフィールドが割り当てられます。【OK】をクリックします。
面倒なのですが、この作業をテキストボックス分続けます。(⇦この作業が分割フォームと違って面倒なところ)
- ここまで
まとめ
分割フォームと違ってコツコツと退屈な作業になりますが、分割フォームより柔軟性があるフォームが作成できると思います。
サブフォームですと、項目をダブルクリックして別のフォームを開く、なんてこともできます。
いろいろアレンジしてみてください。