リンクユニット

Office 2019 Access 2019

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

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

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

フォーム作成のもとになるテーブルやクエリにリレーションシップ(関連付け)がされていると簡単に作成できます。

以下の画像は、伝票№で関連付けられたサブフォームを含むフォームです。

サブフォームを含むフォーム

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

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

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

続きを見る

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


サンプルとして、4つのテーブルがあります。

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

[主キー]の設定

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

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

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

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

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

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

続きを見る

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

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

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

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

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

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

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

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

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

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

続きを見る

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

同じく[作成]タブの[クエリ]グループにある[クエリデザイン]をクリックして、クエリウィンドウを表示します。

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

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

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

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

演算フィールド名:式

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

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

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

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

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

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

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

[作成]タブの[フォーム]グループにある[フォームウィザード]をクリックします。

[作成]タブの[フォーム]グループにある[フォームウィザード]

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

フォームウィザードでは、複数のテーブルまたはクエリからフィールドを選択できます。

[テーブル/クエリ]の▼ボタンをクリックして、[クエリ:Q_売上伝票]を選択します。

フォームに表示したいフィールドを選択します。

ここでは、すべてのフィールドを表示したいので、[>>]ボタンをクリックします。

フォームウィザードでクエリを選択

続けて、[テーブル/クエリ]の▼ボタンをクリックして、[クエリ:Q_売上明細]を選択します。

サブフォームに表示したいフィールドのみを選択します。ここでは全てのフィールドを表示したいので[>>]ボタンをクリックします。

フォームウィザードでもう1つクエリを選択

以下のように、[選択したフィールド]にクエリ[Q_売上明細]のすべてのフィールドが表示されます。

[次へ]ボタンをクリックします。

参考リレーションができていない場合は、ここで[次へ]のボタンをクリックした時にメッセージウィンドウが表示されます。選択したクエリやテーブルが間違っていないか、あるいは、リレーションシップウィンドウを開いて確認してください。

選択したフィールドのレコードソースにアクセスできません。テーブルと、そのテーブルを基にしたクエリのフィールドを選択した可能性があります。もしそうであれば、テーブルかクエリのどちらかのフィールドだけを選択してください。

フォームウィザードのメッセージウィンドウ

フォームウィザードの[次へ]

データの表示方法を選択します。

[byQ_売上伝票]と[サブフォームがあるフォーム]を選択します。

[次へ]ボタンをクリックします。

参考ここで[リンクされたフォーム]を選択した場合のフォームの形については、以下で記しています。

リンクされたフォーム

フォームウィザードでデータの表示方法を選択

サブフォームのレイアウトを選択します。

[表形式]と[データシート]がありますが、ここでは[データシート]を選択します。

[次へ]のボタンをクリックします。

参考サブフォームにヘッダーやフッターを表示したい場合は、[表形式]を選択します。[データシート]では、フッターやヘッダーは表示できません。

サブフォームのレイアウトは、完成後に編集して、レイアウトも変更できますが、フィールドが多い場合は修正も大変な作業になることもありますので、よく考えて選択したほうがいいと思います。

ウィザードの[表形式]と[データシート]の違い

フォームウィザードでサブフォームのレイアウトを選択

フォームとサブフォームに名前を付けます。

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

フォームウィザードでフォーム名を指定

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

ナビゲーションウィンドウを見ると、2つのフォームが作成されています。

後は、デザインビューなどに切り替えて体裁を整えます。

サブフォームを含むフォームの完成

参考リレーションシップがきちんと設定できていれば、フォームウィザードを使用しなくても、フォームを作成するだけで(ワンクリック)で作成できます。

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

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

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

続きを見る

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

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

ウィザードの[表形式]と[データシート]の違い

ウィザードの[サブフォームのレイアウトを選択してください。]で[表形式]を選択すると、以下のようになります。

[表形式]を選択した場合は、サブフォームにヘッダーやフッターを表示できます。

[データシート]の場合は、ヘッダーやフッターを表示できません。

サブフォームが表形式のフォーム

例えば、サブフォームに合計値のテキストボックスなどを表示したい場合は、[表形式]を選択してください。

サブフォームのフッターにコントロールを追加したフォーム

作成した後にレイアウトを変更したい場合は、サブフォームをデザインビューで開いて、フォームのプロパティを開いて、[書式]タブの[既定のビュー]から変更できます。

ただし、コントロールが多い場合は、レイアウトが面倒なこともあるので、できればウィザードで選択を間違えないようにしたほうがいいです。

フォームプロパティ[書式]タブの[既定のビュー]

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

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

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

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

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

注意サブフォームの名前を変更した場合、ここのソースオブジェクトが変更されていないことがあります。サブフォームの名前を変更した場合は気をつけてください。

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

メインフォームに金額の合計を表示

サブフォームに表示している金額の合計をメインフォームの非連結のテキストボックスに表示することができます。

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

メインフォームをデザインビューで開きます。

サブフォームのフッターに金額の合計を表示

サブフォームのフッターに金額の合計を表示するために、非連結のテキストボックスを追加します。

サブフォームにフッターが表示されていない場合は、以下の記事を参考に表示してください。

フォームヘッダー/フッターの表示(タイトル・ロゴ・日付と時刻の挿入)

Access2013のフォームで[フォームのヘッダー/フッター]を表示する方法です。 フォームをデザインビューで開くと、以下のようになってい ...

続きを見る

[デザイン]タブのコントロールから[テキストボックス]を選択して、フッターの任意の位置でドラッグします。

ここでは、ラベルは不要なので、[Ctrl]キーを押しながらドラッグします。テキストボックスのみを挿入できます。

テキストボックスのプロパティを開いて、[その他]タブでテキストボックスの名前を変更します。ここでは、[合計]にします。

サブフォームのフッターにテキストボックスを挿入

[データ]タブの[コントロールソース]に以下のように入力して合計値を表示します。

=Sum([金額])

コントロースソースに合計を求める式を入力

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

今度は、メインフォームに非連結のテキストボックスを挿入します。

[デザイン]タブのコントロールから[テキストボックス]を選択します。

メインフォームの詳細領域でドラッグして、テキストボックスを挿入します。

メインフォームにテキストボックスを挿入

非連結のテキストボックスのプロパティを表示します。

[データ]タブの[コントロールソース]に、以下のように入力します。

=[F_売上明細 サブフォーム].[Form]![合計]

テキストボックスのコントロールソースに入力

[書式]タブに切り替えて、[書式]で[通貨]を選択します。

ラベルの標題は、[合計]にします。

テキストボックスのプロパティで書式を変更

フォームビューに切り替えて確認すると、以下のようになります。

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

フォームのコントロールの値を表示する方法は、以下の記事でも解説しています。

テキストボックスにフォームのコントロールの値を表示するには

Accessでフォームを作成した後、非連結のテキストボックスを挿入して、フォームを開いたときに表示したい値があるという場合の方法です。 この ...

続きを見る

参考フォームウィザードのデータの表示方法を指定する箇所で[リンクされたフォーム]を選択すると、

フォームウィザードで[リンクされたフォーム]を選択

以下のようなフォームを作成できます。

ボタンをクリックして[伝票№]でリンクされた明細フォームを開くことができます。

この場合は、ボタンをクリックして表示されるフォームは、帳票フォームになります。

ウィザードで[リンクされたフォーム]を選択して[次へ]のボタンをクリックしても、フォームのレイアウトを選択する画面は表示されません。

リンクされたフォーム

テーブル間のリレーションがしっかりできていると、Accessの機能を十分に使いこなすことができます。

コントロールの[サブフォーム/サブレポート]ボタンを使って、サブフォームを埋め込むこともできます。既存のフォームがあれば、こちらの方法もお勧めです。

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

メインフォームにサブフォームを組み込んで、サブフォームを含むフォームを作成できます。 コントロールの[サブフォーム/サブレポート]ボタンを使 ...

続きを見る

Profile

執筆者/はま

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

おすすめ記事と広告

-Office 2019 Access 2019

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

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