複数の選択肢に情報をつなげる方法 Microsoft Access 掲示板 - zawazawa
で提示されているテーブルと同じものかな?
だとしたら、データベース設計のセオリーとしては、正規化しましょう、ということになりますね。
正規化については、下記のページの「4.正規化」の項目を読んで学習してください。
もう一度学ぶMS-Access
具体的には下記のようにテーブルを分割します。
●T会社
会社ID 主キー
会社名
会社備考
・・・
●T商品
商品ID 主キー
商品名
単価
・・・
●T取扱商品
会社ID 主キー
商品ID 主キー
複数のフィールドに主キーを設定する方法は下記を参照。
複数のフィールドの組み合わせで重複がないようにする - hatena chips
リレーションシップで、同じ名前のフィールド同士結合しておきます。
リレーションシップの設定と効果 - もう一度学ぶMS-Access
T会社とT取扱商品を結合したクエリをレコードソースとする帳票フォームを作成します。
T商品をレコードソースとする単票フォームに、上記のフォームをサブフォームとして埋め込みます。
サブフォームのリンク親フィールド、リンク子フィールドは「会社ID」と設定します(リレーションシップの結合にあわせて自動で設定される場合もあり)
このフォームから、商品を見ながら、扱っている会社名のリストもサブフォームで見れます。また、サブフォームで取り扱い会社を追加することもできます。
逆に、
T商品とT取扱商品を結合したクエリをレコードソースとする帳票フォームを作成します。
T会社をレコードソースとする単票フォームに、上記のフォームをサブフォームとして埋め込みます。
サブフォームのリンク親フィールド、リンク子フィールドは「商品ID」と設定します。
このフォームからは、会社情報を見ながら、扱っている商品のリストもサブフォームで見れます。また、サブフォームで取り扱い商品を追加することもできます。
このような設計にしておけば、取り扱い商品や取り扱い会社の数に制限なくいくらでも追加できます。