「お昼の放送」の思い出

Access2003のクエリについて質問です
やりたいことは明確なのですが、過去ログを見ても似た事例がなかったので質問させていただきます。

■現在の状態■
機械納入テーブルに、当社が販売した機械情報が入っています、機械の種類は約100種類で、この100種を束ねているグループが13あり、このグループには機械の重要度(優先順位)が13位までついています。(優先順位 高:1位 低:13位)

顧客NO|機械名|優先順位
1001  |Z1 |5
1001  |Y5 |7
1001  |R1 |3
1001  |A1 |1
1002  |P1 |10
1002  |P2 |9
1003  |Q2 |11
1003  |S4 |1
1003  |S4 |1
1003  |S4 |1
1003  |S6 |2


■実現したいこと■
このテーブルから、一つの顧客に入っている機械を
横並び一列で表示したいのです。

顧客NO|機械1|機械2|機械3
1001  |A1 |R1 |Y5
1002  |P2 |P1 |
1003  |S4 |S4 |S4

条件として
・左から優先順位の高いものを上位3位まで並べる
・同じ優先順位で機械名が異なる場合は、どちらの機械名を表示させても構わない
・機械名がカブっても構わない

こうしたものはAccessのクエリを駆使して実現可能でしょうか?
VBAで簡単なレポート出力フォームや、メール送信アプリを作ったことはあります、VBAでの解決策があればこちらもご教授ください。

説明に不備がありましたら補足します
どうぞよろしくお願いします。

A 回答 (1件)

現在のテーブルのフィールドには「機械1」「機械2」のデータがありませんので、


いちばん簡単なクロス集計をすると

顧客No|1(優先順位)|2(優先順位)|3(優先順位)
1001 |A1    |R1    |Y5
1002 |P2    |P1    |
1003 |S4    |S4    |S4

のようにしかならないのですが、、、
新たに「機械1」「機械2」のようなフィールドを作って
表示させたいのでしょうか?

そうなるとVBですね。
URL、ご参照ください。

参考URL:http://www.mahoutsukaino.com/ac/ac2002/vba/vba16 …
    • good
    • 0
この回答へのお礼

さっそくのご回答ありがとうございます。

クロス集計クエリで挑戦してみました
これですと、列見出しに1~13位まで全ての優先順位が表示されますよね?もちろんフィルタで1~3までの表示に制限させることは可能だと思うのですが、優先順位が1~3の機械が入ってない顧客では、空白になってしまいます。
優先順位1・2・8・10の機械が4台入ってる会社であれば、1・2・8の3台を表示させたいのです。同様に、優先順位が1・1・1・2の機械4台入ってる会社であれば、表示させたいのは優先順位が1の3台です。

>>・同じ優先順位で機械名が異なる場合は、どちらの機械名を表示させても構わない
↑この表現は、優先順位1のものが4台入っているときの条件について書きました。わかりにくかった表現ですみませんでした。

Nikki1211様がおっしゃる
>>新たに「機械1」「機械2」のようなフィールドを作って
表示させたいのでしょうか?

最終的に表示させたいのは、顧客No/機械1(優先順位)/機械2/機械3 の4列でかまいません。また、VBAを使って新たにテーブルを作るというよりは、クエリで常に新しいデータを参照できるようにしたいというのが希望です。

お礼日時:2005/02/25 16:19

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

このQ&Aを見た人はこんなQ&Aも見ています

関連するカテゴリからQ&Aを探す


おすすめ情報