• ベストアンサー

access 存在しない項目を”0件”と表示させるには?

宜しくお願いします。 仕様環境:WinXP access2002 acecssで集計クエリを作り、それが反映されるフォームを作っています。 集計方法は「カウント」です。 テーブルは重要なところだけいいますと、 ステータステーブル・・・IDとステータス(「見積中、返答待ち、確定、作業中、作業完了、入金待ち、終了、NG」)。 案件テーブル・・いろんな項目がありますが、「ステータス」という項目があり、別途のフォームで そこをコンボボックスにしてステータステーブルの情報を引っ張ってきています。 そこでなのですが、「集計フォーム」の画像を見ての通り、 実際、まだ案件テーブルで選択されていない項目については表示されません。 例えば:確定、作業中、作業完了など。 これを「確定0件、作業中0件、作業完了0件」と出したいのです。 集計クエリには実際まだ存在していないので、表示されないのはわかりまして、 それがフォームにも反映しているのもわかります。 そこでnz関数を使って、例えば 「確定:nz([ステータス],"0")」や「確定:nz[確定],"0"」ではクエリに表示されません、 (いろいろ試したのでエラーが出たときもあります) よく考えてみると存在していないものは、nz関数ではダメなのかなと思っています。 (nz関数は存在しているnull値を違う値に変えるものと認識しています) クロス集計クエリも試しましたが、存在していないところは「#name」とエラーになり、 nz関数を同様に使ってみたのですがダメでした。 どうすれば存在していないものに対して”0件”という表示がだせるのでしょうか? そもそもの構造がおかしいのでしょうか? クエリは普通の集計クエリでもクロス~でもカウントを使うので”0”が”1つ”として 数えられてしまうと本末転倒です。 なるべく基盤の構造はシンプルに作りたいので集計クエリを望んでいます。 改善点があれば、ご教示お願いします。 余談ですが、こういうaccessの個別レッスンとかやっている教室があったら 教えて頂けば幸いです。(東京・ちなみにアビバは資格向けのようです)

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

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

集計クエリの結果とステータステーブルを外部結合させて、NULLなところをNz()で0と表示させればよいです。 SQLでいうとこんな感じ: クエリQ1: select State, count( State ) as NumState from TMatter group by State; クエリQSummary: select TState.State, Nz(Q1.NumState,0) as NumState from TState Left join Q1 on TState.State=Q1.State;

23tomo-u
質問者

お礼

回答ありがとうございます! SQLの構文ですか・・ そろそろその辺も勉強していかないといけないようですね。 (今までaccessの機能そのままでクエリとマクロのみでやってました) 準備が整い次第、やってみようと思います!

その他の回答 (1)

  • nda23
  • ベストアンサー率54% (777/1415)
回答No.2

SELECT A.ステータスID,MAX(A.ステータス) AS ステータス, COUNT(B.キー) AS 件数 FROM ステータステーブル AS A LEFT JOIN 案件テーブル AS B ON A.ステータスID = B.ステータスID GROUP BY A.ステータス 集計対象は絶対にNullにならない項目を指定します。

23tomo-u
質問者

お礼

回答ありがとうございます! SQLの構文ですか・・ そろそろその辺も勉強していかないといけないようですね。 (今までaccessの機能そのままでクエリとマクロのみでやってました) 準備が整い次第、やってみようと思います!

関連するQ&A