• ベストアンサー

アクセスでフォームに追加項目を増やす場合、サブフォームにしたほうがよいのか、しないほうがよいのか教えてください。

Access2003を使用しています。 「取引先マスタ」という取引先の住所などが入ったフォームに契約書に関するデータも入力できるようにして欲しいと依頼が入りました。 それは契約の種別ごとに「契約締結日」、「取引先契約者」、「弊社担当者名」を設けます。 このような場合、契約書に関するデータは別のテーブルに入力してサブフォームにしたほうがよいのでしょうか? それとも「取引先マスタ」と同じフォームのなかに入れたほうがよいのでしょうか? あとで支障が出にくい方法をとりたいのですが、Accessに熟練されている方はどちらの方法を取られているのでしょうか? アドバイスをお願いいたします。

質問者が選んだベストアンサー

  • ベストアンサー
  • gatt_mk
  • ベストアンサー率29% (356/1220)
回答No.2

基本的な考え方としてはテーブル構成の正規化を考える必要があります。 「取引先マスタ」に契約書に関するデータを追加する場合、同じ取引先で契約が追加されたり、複数の契約が発生することはないのでしょうか? 取引先1件に関して必ず1契約のみであれば、取引先マスタに必要な項目を追加することも考えられると思いますが、一般的には契約内容を登録する別テーブルに、「取引先コード」、「契約種類」、「契約締結日」、「取引先契約者」、「弊社担当者名」などのフィールドを作成し、取引先コードでリレーションシップを作成することが一般的かと思います。 その上でサブフォームなどを作成し、画面で複数契約を同時に確認できるようにするか、フィルタなどを使い契約の種類を条件にして対象を絞り込むように作る方が後々支障が出にくいと思います。

375k
質問者

お礼

とてもわかりやすい説明で助かります。 契約は追加されて多岐に及ぶ可能性がありそうですので、サブフォームにしてみます。 ありがとうございました。

その他の回答 (1)

  • CHRONOS_0
  • ベストアンサー率54% (457/838)
回答No.1

サブフォームのインタフェースが適するのは 親子関係(見出し・詳細関係)あるいは1対1の派生関係にあるテーブルの場合です 質問のユーザーの希望が取引先ごとに契約を一覧したいというものであれば 取引先マスタから作ったフォームに契約テーブルをサブフォームとしてはめ込めばいいでしょう その場合契約テーブルは別に設けることになりますが 契約の種類ごとにテーブルを分けるようなことはしないほうがいいですよ

375k
質問者

お礼

ありがとうございました。

関連するQ&A