------------------------------------------------
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対多のリレーションを表現するのに便利**
- **分割フォームとは異なる**
サブフォームを使うことで、
より視覚的に分かりやすいデータ入力や管理が可能になります!
コメント
コメントを投稿