リンクユニット

Office 2019 Access 2019

サブフォームウィザードを使ってメインフォームへサブフォームを組み込む

投稿日:2020年7月14日 更新日:

メインフォームにサブフォームを組み込んで、サブフォームを含むフォームを作成できます。

コントロールの[サブフォーム/サブレポート]ボタンを使用して、メインフォームの任意の位置へサブフォームを組み込むことができます。

テーブル間にリレーションシップを設定した作成済みのフォームがあれば、コントロールの[サブフォーム/サブレポート]を使って簡単に作成できます。

コントロールの[サブフォーム/サブレポート]を使ってサブフォームを組み込む

参考ここではオブジェクトの表示は[ウィンドウを重ねて表示する]の設定にしています。[ウィンドウを重ねて表示する]と[タブ付きドキュメント]の違いについては、以下の記事で解説しています。

[タブ付きドキュメント]と[ウィンドウを重ねて表示する]の違い

Access2007以降、オブジェクトを表示すると、タブ付きウィンドウで表示されるようになっています。従来からAccessを使用している方に ...

続きを見る

テーブルとリレーションシップの確認


以下のように4つのテーブルがあります。

[T_売上伝票]、[T_売上明細]、[T_担当]、[T_製品]

[主キー]の設定

各テーブルには[主キー]の設定をしています。各テーブルのデザインビューです。

デザインビューで[主キー]の設定

デザインビューで[主キー]の設定

参考主キーの設定については、以下の記事で詳しく解説しています。

Accessテーブルの[主キー]の設定

Accessのテーブルでは、[主キー](シュキー)を設定することができます。[主キー]とは、各レコードを固有のものとして識別するフィールドの ...

続きを見る

リレーションシップと参照整合性の設定

リレーションシップウィンドウを開いて、リレーションシップと参照整合性の設定を行っています。

リレーションシップの設定

4つのテーブルをデータシートビューで開くと、以下のようになっています。

レコードの左端に表示されている[+]は[展開インジゲーター]と呼ばれるものです。

リレーションの設定を行うと表示されます。[+]をクリックすると、サブデータシートを表示でき、関連付けしたテーブルの内容を確認できます。

4つのテーブルのデータシートビュー

参考リレーションシップと参照整合性については、以下の記事で詳しく解説しています。

リレーションシップの作成と参照整合性の設定

Accessでは、複数のテーブルがあって、そのテーブル間の共通フィールドを関連付けることができます。この関連付けのことを[リレーションシップ ...

続きを見る

メインフォームの作成

まず、クエリを作成して、そのクエリをもとにメインフォームとなる単票フォームを作成します。

メインフォームのもとになるクエリの作成

メインフォームのもとになるクエリを作成します。

[作成]タブの[クエリ]グループにある[クエリデザイン]をクリックします。

[作成]タブの[クエリデザイン]ボタン

メインフォームのもとになるクエリを作成します。

クエリウィンドウに、テーブル[T_売上伝票]と[T_担当]を表示して、デザイングリッドに以下のように追加します。

リレーションシップウィンドウで設定した参照整合性は、クエリにも反映されます。

[担当者名]を表示するために[T_担当]からフィールドを追加します。

また、[伝票№]の昇順に並べたいので、[伝票№]の[並べ替え]で[昇順]を選択します。

クエリのデザイングリッド

[デザイン]タブの[結果]グループにある[表示]をクリックして確認します。

[デザイン]タブの[結果]グループにある[表示]

以下のように表示されます。クエリは、[Q_売上伝票]という名前を付けて保存します。

キーボードから[F12]キーを押すと、[名前を付けて保存]ダイアログボックスを表示できます。

作成したクエリは閉じておきます。

クエリのデータシートビュー

クエリ[Q_売上伝票]をもとに単票フォームを作成

ナビゲーションウィンドウの[Q_売上伝票]を選択したまま、[作成]タブの[フォーム]グループにある[フォーム]をクリックします。

フォーム

フォームを作成して、1レコードずつ情報を入力できるようにします。

クエリを選択して[作成]タブの[フォーム]をクリック

以下のように単票フォームが作成できます。

既定では、[レイアウトビュー]で表示されます。

単票フォームの作成

レイアウトビューやデザインビューでコントロールの位置や配置を調整して、フォームに名前を付けて保存します。

ここでは、[F_売上伝票]とします。

キーボードから[F12]キーを押すと、[名前を付けて保存]ダイアログボックスを表示できます。

フォームに名前を付けて保存

参考フォームウィザードを使用して、フォームを作成することもできます。

フォームウィザードでフォームを作成(クエリが認識されないことも)

Accessのフォームとはテーブルやクエリのデータをもとに、データの表示、入力、編集するためのオブジェクトです。 フォームウィザードでは、[ ...

続きを見る

サブフォームの作成

クエリを作成して、そのクエリをもとにサブフォームとなる帳票フォームを作成します。

サブフォームのもとになるクエリの作成

サブフォームのもとになるクエリを作成します。

[作成]タブの[クエリ]グループにある[クエリデザイン]をクリックします。

[作成]タブの[クエリデザイン]ボタン

クエリウィンドウに、テーブル[T_売上明細]と[T_製品]を表示して、デザイングリッドに以下のように追加します。

[製品名]と[販売単価]を表示するために[T_製品]からフィールドを追加します。

また、[明細№]の昇順に並べたいので、[明細№]の[並べ替え]で[昇順]を選択します。

[金額]の演算フィールドを追加します。

演算フィールド名:式

ここでは、以下のような式になります。

金額: [販売単価]*[数量]

クエリのデザイングリッド

[デザイン]タブの[結果]グループにある[表示]をクリックして確認します。

名前を付けて保存します。ここでは、[Q_売上明細]とします。

クエリのデータシートビュー

クエリ[Q_売上明細]をもとに帳票フォームを作成

ナビゲーションウィンドウの[Q_売上明細]を選択したまま、[作成]タブの[フォーム]グループにある[その他フォーム]の[複数のアイテム]をクリックします。

複数のアイテム

複数のレコードを一度に表示するフォームを作成します。

[作成]タブの[複数のアイテム]

以下のように帳票フォームが作成されます。

既定では、[レイアウトビュー]で表示されます。

[帳票フォーム]のレイアウトビュー

レイアウトビューやデザインビューでコントロールの位置や配置を調整して、フォームに名前を付けて保存します。

ここでは、[F_売上明細]とします。

キーボードから[F12]キーを押すと、[名前を付けて保存]ダイアログボックスを表示できます。

[名前を付けて保存]ダイアログボックス

メインフォームにサブフォームを組み込む

ナビゲーションウィンドウには、上記で作成した[F_売上伝票]と[F_売上明細]の2つのフォームがあります。

メインフォームとなるフォーム[F_売上伝票]をデザインビューで開きます。

メインフォームを[デザインビュー]で表示

サブフォームを組み込むために[詳細]領域を少し拡大します。

[フォームフッター]との境界にマウスを合わせて、マウスポインタが上下矢印の形の時に下へドラッグします。

フォームのデザインビューで[詳細]領域を拡大

[コントロールウィザーの使用]がオンになっているかを確認

[デザイン]タブの[コントロール]グループにある[その他]をクリックして、

[デザイン]タブの[コントロール]グループにある[その他]ボタン

[コントロールウィザードの使用]がオンになっているかを確認します。

[コントロールウィザードの使用]がオンになっているかを確認

サブフォームの組み込み

[デザイン]タブの[コントロール]グループにある[その他]をクリック[サブフォーム/サブレポート]ボタンをクリックします。

[デザイン]タブの[サブフォーム/サブレポート]ボタン

マウスポインターの形が以下のような形に変わります。サブフォームを組み込む位置でクリックします。

[サブフォーム/サブレポート]ボタンをクリックした時のマウスポインターの形

サブフォームウィザード]が表示されます。

[既存のフォームを使用する]を選択します。一覧に既存のフォームが表示されます。

[F_売上明細]を選択して、[次へ]ボタンをクリックします。

参考既存のテーブルやクエリを選択して使用することもできますが、リレーションシップの設定は必要です。

サブフォームウィザードで[既存のフォームを使用する]を選択

メインフォームとリンクするフィールドを選択します。

[一覧から選択する]を選択して、[伝票№でリンクし、Q_売上伝票の各レコードに対しQ_売上明細を表..]が選択されていることを確認して、[次へ]ボタンをクリックします。

サブフォームウィザード[一覧から選択する]を選択

サブフォームに名前を付けます。ここでは、このまま[F_売上明細]としておきます。

[完了]ボタンをクリックします。

サブフォームに名前付け

以下のようにメインフォームにサブフォームが埋め込まれます。

サブフォームが組み込まれたフォーム

レイアウトビューに切り替えて、コントロールの大きさや位置などを見やすいように調整します。

サブフォームを組み込んだフォームのレイアウトビュー

フォームビューで確認します。

サブフォームを組み込んだフォームのフォームビュー

参考サブフォームを含むフォームで新規レコードを入力する場合は、メインフォーム側から先に入力します。

また、サブフォームは共通フィールド[伝票№]でリンクされていますので、サブフォーム側の[伝票№]は入力する必要はありません。

サブフォームを組み込んだフォームで新規レコードを入力

メインフォームに合計金額を表示したい場合は、以下を参考にしてください。

メインフォームにサブフォームのコントロールを表示

メインフォームにサブフォームのコントロールを表示

サブフォームのプロパティでリンクフィールドを確認

作成したメインフォームをデザインビューで開いて、サブフォームを選択してプロパティを表示します。

[データ]タブをクリックすると、サブフォームとなっているフォーム名、リンク親フィールドとリンク子フィールドを確認できます。

ここでは、メインもサブも[伝票№]でリンクされていることが分かります。

リンク親フィールドは、メインフォーム側のフィールドです。リンク子フィールドは、サブフォーム側のフィールドです。

サブフォームのプロパティ

サブフォームをデータシートに変更するには

サブフォームを以下のようなデータシートビューに変更したい場合は、

サブフォームをデータシートに変更

フォームをデザインビューで開いて、サブフォームの[フォームセレクター]をダブルクリックします。

フォームのプロパティシートが表示されます。

[書式]タブの[既定のビュー]の▼をクリックして、[データシート]を選択します。

[書式]タブの[既定のビュー]で[データシート]を選択

参考フォームウィザードを使用して、サブフォームを含むフォームを作成することもできます。この記事と同じサンプルで解説しています。

メインフォームとサブフォームを作成していなければ、以下の方法もお勧めです。

フォームウィザードを使ってサブフォームを含むフォームを作成

フォームウィザードで2つのテーブルやクエリを指定して、関連付けされたメインフォームとサブフォームを作成できます。 フォーム作成のもとになるテ ...

続きを見る

リレーションシップがきちんと設定できていれば、フォームを作成するだけで(ワンクリック)でサブフォームを含むフォームを簡単に作成できます。

この場合、サブフォームはデータシートになります。

サブフォームを含むフォームを簡単作成

Accessで1つのフォーム上に2つのテーブルの情報を表示して、同時に閲覧できると便利な場合があります。 たとえば、[得意先]テーブルと[受 ...

続きを見る

Profile

執筆者/はま

もっと理解したいあなたへ

おすすめ記事と広告

-Office 2019 Access 2019

Copyright © 2001-2020 初心者のためのOffice講座 All Rights Reserved.

Copyright© 初心者のためのOffice講座 , 2020 AllRights Reserved Powered by AFFINGER4.