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対多のリレーションを表現するのに便利**

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



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

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






コメント