ms access 分割フォーム sub form01

------------------------------------------------

sub formと分割フォームは別の内容だった。

------------------------------------------------


accessにおけるサブフォーム(sub form,分割フォーム)とは、

どのようなものでしょうか?


親要素のフォーム内に組み込むものでしょうか?


あるフォームを特定のフォームの内部に組み込むように

プロパティシートから設定できるのでしょうか?





### **Accessにおけるサブフォーム(Sub Form, 分割フォーム)とは?**


Microsoft Accessの **サブフォーム(Sub Form)** とは、

**メインフォームの内部に組み込まれたフォーム** のことです。


これは **1対多のリレーション** を表現したいときや、

データの詳細を別のテーブルから表示したいときに使われます。



---



### **サブフォームの特徴**


1. **親フォームの一部として表示される**


   - メインフォーム(親フォーム)の中に埋め込まれ、独立したフォームとして動作します。

   - データの入力や編集が可能です。


2. **主キー・外部キーを利用した関連付け**


   - 一般的に、**メインフォームの主キー** と 

   **サブフォームの外部キー** をリンクさせ、データの整合性を維持します。

 

   - 例えば、「顧客情報(親フォーム)」と「注文履歴(サブフォーム)」を関連付ける場合、

   `顧客ID` をキーとしてリンクします。



3. **プロパティシートで設定できる**


   - フォームデザインビューで、メインフォームに 

**「サブフォームコントロール」** を追加し、特定のフォームを指定できます。


   - プロパティシートで以下の設定を行えます。

   

     - **ソースオブジェクト(Source Object)** → サブフォームとして表示するフォーム

     - **リンク親フィールド(Link Master Fields)** → メインフォームの関連フィールド

     - **リンク子フィールド(Link Child Fields)** → サブフォームの関連フィールド



4. **分割フォームとは異なる**


   - **分割フォーム(Split Form)** は、

   単一のフォーム内でデータシートビューとフォームビューを同時に表示するものです。


   - **サブフォームとは異なり、メインフォームとサブフォームの関係ではなく、

   1つのテーブルのデータを2つの形式で表示する形になります。**


---


### **サブフォームの作成方法**


1. **フォームデザインビューで「サブフォームコントロール」を配置**

2. **プロパティシートの「ソースオブジェクト」に、組み込みたいフォームを指定**

3. **「リンク親フィールド」と「リンク子フィールド」を設定**

4. **サブフォームが適切にメインフォームと連携するか確認**



---



### **具体的な使用例**


例えば、次のようなデータベースを作成するとします。


- **顧客(Customers)**


  - `顧客ID(CustomerID)` (主キー)

  - `氏名(Name)`

  - `住所(Address)`



- **注文(Orders)**


  - `注文ID(OrderID)` (主キー)

  - `顧客ID(CustomerID)` (外部キー)

  - `注文日(OrderDate)`

  - `合計金額(TotalPrice)`



この場合、

「顧客管理フォーム」に「注文履歴サブフォーム」を組み込むことで、

特定の顧客の注文履歴を一覧表示できます。


---


### **まとめ**


- **サブフォームは、親フォームの内部に組み込まれるフォーム**


- **プロパティシートから「ソースオブジェクト」「リンク親フィールド」「リンク子フィールド」を設定**


- **1対多のリレーションを表現するのに便利**


- **分割フォームとは異なる**



サブフォームを使うことで、

より視覚的に分かりやすいデータ入力や管理が可能になります!




コメント