メインフォームにサブフォームを組み込んで、サブフォームを含むフォームを作成できます。
コントロールの[サブフォーム/サブレポート]ボタンを使用して、メインフォームの任意の位置へサブフォームを組み込むことができます。
テーブル間にリレーションシップを設定した作成済みのフォームがあれば、コントロールの[サブフォーム/サブレポート]を使って簡単に作成できます。
参考ここではオブジェクトの表示は[ウィンドウを重ねて表示する]の設定にしています。[ウィンドウを重ねて表示する]と[タブ付きドキュメント]の違いについては、以下の記事で解説しています。
-
[タブ付きドキュメント]と[ウィンドウを重ねて表示する]の違い
Access2007以降、オブジェクトを表示すると、タブ付きウィンドウで表示されるようになっています。 昔からAccessを使用している方に ...
この記事の目次
テーブルとリレーションシップの確認
以下のように4つのテーブルがあります。
[T_売上伝票]、[T_売上明細]、[T_担当]、[T_製品]
[主キー]の設定
各テーブルには[主キー]の設定をしています。各テーブルのデザインビューです。
参考主キーの設定については、以下の記事で詳しく解説しています。
-
Accessテーブルの[主キー]の設定
Accessのテーブルでは、[主キー](シュキー)を設定することができます。[主キー]とは、各レコードを固有のものとして識別するフィールドの ...
リレーションシップと参照整合性の設定
リレーションシップウィンドウを開いて、リレーションシップと参照整合性の設定を行っています。
4つのテーブルをデータシートビューで開くと、以下のようになっています。
レコードの左端に表示されている[+]は[展開インジゲーター]と呼ばれるものです。
リレーションの設定を行うと表示されます。[+]をクリックすると、サブデータシートを表示でき、関連付けしたテーブルの内容を確認できます。
参考リレーションシップと参照整合性については、以下の記事で詳しく解説しています。
-
リレーションシップの作成と参照整合性の設定
Accessでは、複数のテーブルがあって、そのテーブル間の共通フィールドを関連付けることができます。この関連付けのことを[リレーションシップ ...
サブデータシートについては、以下の記事で解説しています。
-
サブデータシートはテーブルプロパティで手動設定できる
Accessのテーブル間でリレーションシップの設定すると、2つのテーブルに関連性が生じます。 テーブルをデータシートビューで開くと、各レコー ...
メインフォームの作成
まず、クエリを作成して、そのクエリをもとにメインフォームとなる単票フォームを作成します。
メインフォームのもとになるクエリの作成
メインフォームのもとになるクエリを作成します。
[作成]タブの[クエリ]グループにある[クエリデザイン]をクリックします。
メインフォームのもとになるクエリを作成します。
クエリウィンドウに、テーブル[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つのテーブルの情報を表示して、同時に閲覧できると便利な場合があります。 たとえば、[得意先]テーブルと[受 ...