電子書籍の厳選無料作品が豊富!

リレーションシップの設定について


Access2002にて受注管理を行っており
テーブル、フィールドが次のように存在しています。

<T_納入先>
 顧客ID
 納入先コード
 住所等情報...

<T_顧客>
 顧客ID
 住所等情報...

<T_売上情報>
 受注ID
 顧客ID
 売上日やその他情報...

<T_売上明細>
 受注ID
 明細や金額等...

----------
<T_顧客>に登録した顧客は複数の納入先を持つため
[<T_顧客>の顧客ID 対 <T_納入先>の顧客ID]を[1 対 多]にてリレーションシップを作成しています。

<T_売上情報>の顧客IDと、<T_顧客>の顧客IDを[1 対 1]にて
リレーションシップを作成しています。
----------
ここで売上情報を登録するために「売上入力フォーム」なるものを作成し、
顧客IDや納入先の指定、売上日の記録や売り上げた明細を登録したいのですが
明細の入力部分は、サブフォームを作成し、<T_売上情報>と<T_売上明細>のクエリで問題ないのですが
このフォーム自体のレコードソースとして使用するために
<T_納入先><T_顧客><T_売上情報>の3つのテーブルの情報を含んだクエリを
作成したのですが、クエリ作成後、実行してもレコードが一切表示されません。
(おそらく<T_顧客>の中にさらに納入先が複数ある部分が
うまくリレーションシップできていなくて矛盾を起こしているのでは・・と思ったのですが。)
もちろん<T_納入先>と<T_顧客>のみであれば問題なくクエリは実行し、レコードも表示されます。

ある一つの顧客情報内にも複数の情報(=納入先)がある場合、
リレーションシップの設定はどのようにすればよいでしょうか。

長々とありますが、お分かりのかた是非とも教えて下さい。
よろしくお願いいたします。

A 回答 (2件)

状況が見えませんが


T_納入先の納入納入先コードの扱いに問題がありそうです。
それとT_売上情報での納入先コードの関係。
T_納入先の顧客IDと納入先コードがセットになって初めて一意のレコードが出てくるような?
私は、テーブル設計時に鉛筆と消しゴムであれこれやっております。
ラインを消したり、書き加えたり、フィールドはこっちに移動かな?あーたらこーたら。
いきなりパソコン向かって考えると、考えなければならない視野が狭くなるように思います。
    • good
    • 0
この回答へのお礼

回答有り難うございます。

そうですね、私もこの後、テーブル設計情報を
紙に書いて、線で結んで考えてみました。
そうしたら、当初の考えていた方法ではないですが
結果が同じになるリレーションシップの設定が
思いつきました。

仰るとおり、いきなりパソコンに向かったもので
視野が狭くなっていたと思います。

有り難うございました!

お礼日時:2006/09/13 10:27

T顧客(1:顧客ID)→(多)T納入先


T顧客(1:顧客ID)→(多)T売上情報
T納入先(1:顧客ID&納入先コード)→(多)T売上情報
T売上情報(1:受注ID&納入先コード)→(多)T売上明細
ではないですか?要はT納入先とT売上情報のアンマッチがあるため表示されない。

この回答への補足

回答有り難うございました!

なるほど、全てリレーションシップを作成し
各々のフィールドを結びつけるのですね。

早速やってみましたが、

T納入先(1:顧客ID&納入先コード)→(多)T売上情報
T売上情報(1:受注ID&納入先コード)→(多)T売上明細

の部分で、
「主テーブルで参照されているフィールド用の固有インデックスが見つかりません。」
と表示されてしまいます。
これは1対多の1側のフィールドに固有インデックスが足りないと言うことでしょうか?

補足日時:2006/09/12 21:31
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!