Access

分割フォームをやめてサブフォームを採用する(Access)

2019年10月31日

在庫管理システムを構築していくなかで、マスタデータの修正をするためのフォームを模索していました。

当初はAccessのことをよく知らず、分割フォームのことを知って使い始めました。しかし不満があり、さらに調べた結果としてサブフォームを使うのが使いやすい、となりました。

自動管理システムのご依頼はATDシステムズへ

分割フォームをやめてサブフォームを採用する(Access)

分割フォームは簡単

【分割フォーム】はテーブルまたはクエリを選択しておき、【作成】タブの【その他のフォーム】、【分割フォーム】をクリックします。

これで、マスタができています。しかし、

分割フォームの気に入らない点

テキストボックスなど、項目によってサイズを変えたいのに、思い通りにいかなくてイライラします。最初はこれでいいか、と諦めていました。

また、分割フォームを閉じる方法として、VBAで「DoCmd.Close」がエラーになって、仕方なくマクロの「ウィンドウを閉じる」を使用していました。フォームを開く・閉じるに1個1個のマクロを作っていたのでは見づらいです。VBAで一括で作りたかったのです。

これらのことは私の知識不足かもしれません。「できるよ」と言う方もいらっしゃるかもしれません。しかしもう、分割フォームは使わないので、その知識も不要になりました。

サブフォームの作り方

サブフォームコントロールを配置

  • 1

    まっさらのフォームのデザインにて、【デザイン】タブからサブフォームコントロールを選びます。【コントロールウィザードの使用】は有効にしておきましょう。

  • 2

    サブフォームウィザードで【既存のテーブルまたはクエリを使用する】のまま【次へ】

  • 3

    サブフォームに表示させたいテーブルまたはクエリを選び、「>」で個別フィールドか「>>」ですべてのフィールドを選択して【次へ】(【完了】でも良い)

  • 4

  • 5

    サブフォームの名前を付けて【完了】

  • ここまで

テキストボックスにコントロールソースを割り当てる

  • 1

    フォームの下半分にサブフォームを、上半分にテキストボックスをペコペコ配置します。

  • サブフォームでマスタのフォームができます。次にテキストボックスのコントロールソースの割り当て方を説明します。
    テキストボックスの【プロパティ】にて【…】をクリックします。(下の図ではコンボボックスになっていますが、テキストボックスも同様です)

  • 3

    サブフォームのフィールドリストを選び、【式の値】で<値>をダブルクリックすると、テキストボックスにサブフォームのフィールドが割り当てられます。【OK】をクリックします。
    面倒なのですが、この作業をテキストボックス分続けます。(⇦この作業が分割フォームと違って面倒なところ)

  • ここまで

まとめ

分割フォームと違ってコツコツと退屈な作業になりますが、分割フォームより柔軟性があるフォームが作成できると思います。

サブフォームですと、項目をダブルクリックして別のフォームを開く、なんてこともできます。

いろいろアレンジしてみてください。

-Access
-,