ExcelとAccessのスキルアップをサポートするサイトです

ExcelとAccessの学習室

【Accessフォーム入門】サブフォームの使い方とポイント

今回は、Accessのサブフォームを使う方法を紹介します。

Accessを便利に使うためには、サブフォームを上手に使いこなすことが欠かせません。
サブフォームの無いシンプルなフォームでもデータの閲覧は可能ですが、複数のフォームを移動しながらの入力や閲覧は手間とストレスがかかります

Accessのサブフォームを使えば、フォーム間を移動する手間とストレスが軽減できます。
その結果、効率的なデータベース運用が可能となります。
やや敷居が高いように感じられますが、がんばってサブフォームをマスターしましょう。

本記事では、サブフォームの作り方だけでなく、サブフォームを使うメリットとよく使うプロパティについても紹介します。
さらに、Access解説本では触れられていない、サブフォームの便利な使い方にも触れていますので、ぜひ最後までお付き合いください。

サブフォームの作り方

サブフォームを作る方法は大きく2つに分かれます。

  • 非連動式サブフォーム(空白のフォームに設置)
  • 連動式サブフォーム(単票フォームに設置)

本記事ではデータシートフォームを貼り付ける方法だけ紹介しますが、帳票形式(表形式)のフォームも手順は全く同じです。

また、元になるフォームだけは前もって作っておきましょう。

非連動式のサブフォームを設置する

非連動式のサブフォームを設置する手順はとてもシンプルです。

空白のフォームにサブフォームを設置してみましょう。
貼り付ける位置は、ラベルやボタンから外れた、ちょうど中央あたりです。

フォームをデザインビューに切り替えます。

リボンのタブにあるサブフォームコントロールをクリックします。

クリックしたボタンに枠がつけば、サブフォームをを配置できる状態です。
空白フォームのどこでもいいので、マウスでクリックしましょう。

クリック後、サブフォームウィザードが起動しました。

設置するフォームを選び、「完了」をクリックします。

指定した位置に非連動式のサブフォームが貼り付けられました。

デザインビューのままでサブフォームの大きさを調整します。

フォームビューで確認したところ、データが正しく表示されているのが確認できました。

このように、非連動式のサブフォームを設置するのに必要な設定は、フォーム名の指定だけです。

連結式のサブフォームを設置する

単票フォームに明細データを同じ画面で表示する時は、連結式のサブフォームを使うのが定番です。

では、伝票データがソースとして設定された単票フォームに、伝票明細フォームを設置してみましょう。
単票フォームの中央あたりに、明細用のサブフォームを設置するエリアを設けています。

もちろん、元データの伝票テーブルと伝票明細テーブルはリレーションシップで連結された状態です。

フォーム名の指定までは、非連結式のサブフォームを貼り付ける時と同じ手順です。
フォームを指定したら、「完了」ではなく「次へ」をクリックしましょう。

「次へ」をクリックすると、親フォームと子フォームの設定画面が表示されます。
連結キーの条件が表示されるので、間違いないことを必ず確認し「完了」をクリックします。

「完了」をクリックすると、単票フォームに連結式サブフォームが設置されました。

デザインビューのままでサブフォームの大きさを調整します。

フォームビューに切り替えると、正しくデータが表示されました。

伝票データと明細データの連動を確認するためにも、レコードセレクタで移動させてみます。

最初のレコードの明細データ件数は1件です。

次のレコードは明細が3件表示されました。

このように、伝票データのレコードを移動させると、明細データの中身も変わり、親フォームと子フォームが連動していることが確認できます。

サブフォームを使うメリット

サブフォームを使う一番のメリットは、データの入力や閲覧の効率が著しく向上することです。

サブフォームの無いシンプルなフォームでも、データの閲覧や入力を行えますが、フォーム間の遷移が頻繁に発生します。

画面遷移の回数が少ない場合はそれほどでもないのですが、あまりにも頻繁に発生すると操作自体がストレスになり、作業効率も低下します。

サブフォームを活用すると、一つの画面に複数の関連データを表示できます
これにより、画面遷移による手間とストレスを軽減できて、効率的なデータベース運用が可能となります。

サブフォームを扱う時に知っておきたいプロパティ

サブフォームでよく使うプロパティは2つだけです。

  • ソースオブジェクト
  • 親子フィールドの設定

ソースオブジェクトは、サブフォームに表示させるフォームを決めるプロパティです。
マクロやVBAを活用すれば、必要に応じて別のフォームに切り替えることも可能です。

親子フィールドの設定は連動式のサブフォームを使うときに必要です。
親テーブルはに主キー、子テーブルには外部キーが正しく設定されているか確認しましょう。

おまけ-参照用に小さいサブフォームを設置する

ここまで記事を読んでくれた方におまけとして、マイナーだけど便利なサブフォームの使い方も紹介しておきます。

それは参照用に小さいサブフォームを設置するという方法です。

例えば入力フォームでコード番号をキーボードで入力する仕様の場合、コード番号と項目名が同一画面に表示されていれば、入力しながらマスタデータを確認できます。

コンボボックスやリストボックスを使って、マウスで項目を選択させる方法もありますが、効率を追求する場合はキーボードでコードを直接入力する方が正しい選択です。
マスタレコードが10件以内であれば、入力フォームにマスタデータを非連動式サブフォームとして表示させるのはとても有効な方法だと思いますので、ぜひ試してみてください。

まとめ

今回は、Accessのサブフォームの使い方とメリット、よく使うプロパティについて解説しました。

Accessのサブフォームをうまく使えるかが、快適なAccessデータベースになるかの鍵となるとも言えます。

Access歴10年を超えるぼく自身も、これまでいくつものAccessデータベースの開発と運用を行ってきました。
いろいろなAccessフォームも作ってきましたが、今ではAccessデータベース内にある全フォームのうち、データシート形式のサブフォームが過半数を占めています

フォームを作り込めば高品質のAccessデータベースを作ることができますが、特に他の業務を掛け持ちしている方などは十分な時間をなかなか確保することができません。
限られた時間のなか、完成度の高いフォームを作るために有効なのが、データシートフォームをサブフォームに使うことです。

この記事を読んだ方は、データシート形式のサブフォームを意識しながらAccessフォームを作ってみてください。
きっとスピーディなフォーム作成と出来上がりの品質に納得していただけることでしょう。


当ブログでは、Accessアプリの使い方について解説した他の記事もあります。
下にまとめ記事のリンクを入れておきますので、よかったらごらんください。

https://sys-daddy.com/learning-access-apps