• ベストアンサー

Accessで教えてください。

次のような部品マスターテーブルと使用部品テーブルがあります。 【部品テーブル】部品コードと部品名が入っています 部品C 部品名 1  部品A 2  部品B 3  部品C 4  部品D 5  部品E 【使用部品テーブル】製品コードと使用部品の部品コードが入っています 製品C 部品1 部品2 部品3 部品4  1111  1  2  5  2222  2  4 3333  2  3  4  5 使用部品テーブルの部品コードに一致する部品名を表示したいのですが、どうすればいいですか。初歩的な質問だとは思いますが、Access初心者ですので、よろしくお願いします。 【作りたいテーブル】 製品C 部品1 部品2 部品3 部品4  1111 部品A 部品B 部品E  2222 部品B 部品D 3333 部品B 部品C 部品D 部品E 環境はAccess2000 Windows98です。

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

  • ベストアンサー
  • ryuu001
  • ベストアンサー率61% (46/75)
回答No.4

クエリーデザイン画面で、 【使用部品テーブル】の部品のフィールド数だけ【部品テーブル】を表示します。 その【使用部品テーブル】の部品X と 【部品テーブル】の部品C を1つづつ結びます。 で、それぞれの 部品名を表示します。 結合プロパティは  「’【使用部品テーブル】’の全レコードと '【部品テーブル】'の同じ結合フィールドのレコードだけを含める」にします。

wata-yotti
質問者

お礼

何度もありがとうございます。出来ました。こんな簡単にできるんですね。クエリーデザイン画面で同じテーブルをいくつも表示できることを知りませんでした。本当に助かりました。

その他の回答 (3)

  • yatoaa
  • ベストアンサー率30% (110/362)
回答No.3

使用部品テーブルと部品テーブルと2つで 選択クエリーを作りそこで「部品名」を得ます 部品1 部品2 部品3 部品4 とあるので 同様に、4回クエリーをつづければできます 結合項目には「部品コード」を指定します (線で2つのテーブルを結合します) 注意点は 無い部品の場合では、アウトプットレコードが 出てこないので クエリーでの結合線を、右クリックして 結合プロパテイにて 「使用部品とテーブル」にあるレコードを全件だす へ◎をつけます

wata-yotti
質問者

お礼

ご回答ありがとうございました。何とかできました。

  • osamuy
  • ベストアンサー率42% (1231/2878)
回答No.2

SELECT ProName, DLookUp("PaName","TParts","PaCD=" & Nz([Pa1],"-1")) AS Parts1, DLookUp("PaName","TParts","PaCD=" & Nz([Pa2],"-1")) AS Parts2, DLookUp("PaName","TParts","PaCD=" & Nz([Pa3],"-1")) AS Parts3, DLookUp("PaName","TParts","PaCD=" & Nz([Pa4],"-1")) AS Parts4 FROM TProduct; みたいに、DLookUpを使ってみては。

wata-yotti
質問者

お礼

ご回答ありがとうございます。これってSQLですよね。SQLは敷居が高いので、クエリでDlookupを使用しようとしましたが、うまくいきません。クエリでのDlookup関数の書き方を教えてください。よろしくお願いします。

  • ryuu001
  • ベストアンサー率61% (46/75)
回答No.1

データーベース的な【使用部品テーブル】の作り方は 次のようにされた方が良いと思います。 製品C 部品 1111  1 1111  2 1111  5 2222  2 2222  4 でないと、困りますよね! 部品ごとの集計はできないし、 これを元に部品手配もできないですよ。 それに、今回のような問題もでてきます。

wata-yotti
質問者

お礼

ご回答ありがとうございます。私も同じ意見です。このデータベースは会社で使用しているシステム(Accessで出来ている)の一部です。このデータを使用していろいろ処理をしようと思ったのですが、私の知識ではリレーションシップも使用できなかったので、質問させていただきました。私も【使用部品テーブル】がなぜryuu001さんがご提案いただいたような構成になっていないのか疑問に思いますし、なっていればリレーションシップも使用できるのになと思っています。でも、どうしてもこのデータベースを使用したいので、ご教授おねがいします。EXCELだったらVLOOKUP関数を使用するとできますが、データ数が多いためAccessで処理したいと思っています。

関連するQ&A