#426 重複キーでグループ化してサブフォームに表示する方法 フォーム

テーブルにあるキーのレコードが重複して存在している場合に、それぞれのキー値ごとにデータをグループ化し、サブフォームとして画面表示させる方法です。
あらかじめテーブル設計としてメインのデータと明細データが1対多の関係で別テーブルとして生成されている場合には、特に事前準備なしにメイン/サブフォームを作ることによってそれを実現できますが、ここでは、同じ1つのテーブルを元にメインフォーム側とサブフォーム側を作成してグループ化することがポイントです。

ここでは例として次のようなテーブルを使います。
テーブルのデータシートビュー
このテーブルには、同じ「受注コード」を持った複数のレコードが存在しています。ここでは、たとえば受注コードが「1001」だけのレコードだけがサブフォームに表示されるようにします。そして、メインフォーム側で次のレコードに移動させると、今度は「1002」だけのレコードだけがサブフォームに表示されるようにします。


  1. このテーブルには、同じキー(受注コード)を持った複数のレコードが存在していますので、それらをグループ化して、1つのキーが1つのレコードとして取り出されるようにします。
    それには、次のような集計クエリを作成します。そしてこれをメインフォーム側のレコードソースとします。
    クエリのデザインクエリのデータシートビュー

  2. 続いてメインフォームを作ります。上記のクエリをレコードソースとする単票フォームとします。
    メインフォームのデザイン

  3. 最後に、サブフォームコントロールを追加します。ここでは、ソースオブジェクトプロパティを「テーブル.受注明細」、またリンク親フィールド・リンク子フィールドを「受注コード」とします。
    サブフォームを追加
このフォームを実行すると次のようになります。
フォームの実行結果
フォームの実行結果
| Index | Prev | Next |



T'sFactory
Accessで動く生産管理DB
Ureru Express
Webで使う販売顧客管理
Access開発&アドバイス
DB開発やテクニカルアドバイス
Copyright © T'sWare All rights reserved