Access VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


275 / 2272 ツリー ←次へ | 前へ→

【12293】クエリで複数項目の数値の合計をだしたいのですが 初心 13/3/20(水) 3:18 質問[未読]
【12294】Re:クエリで複数項目の数値の合計をだした... かるびの 13/3/20(水) 16:26 回答[未読]
【12298】Re:クエリで複数項目の数値の合計をだした... 初心 13/3/25(月) 1:04 質問[未読]
【12299】Re:クエリで複数項目の数値の合計をだした... かるびの 13/3/25(月) 3:55 回答[未読]
【12301】Re:クエリで複数項目の数値の合計をだした... 初心 13/4/3(水) 0:06 発言[未読]

【12293】クエリで複数項目の数値の合計をだしたい...
質問  初心 E-MAIL  - 13/3/20(水) 3:18 -

引用なし
パスワード
   こんばんは、いつもお世話になっております。
また、行き詰まってしまいまして、投稿させて頂きます。
よろしくお願い申し上げます。

下記の様なテーブルから集計クエリを作成し、科目別、受験者数、区分別(両方受験する人)、(実技のみ受験者する人及び合格者数)(学科のみ受験する人及び合格者数)の合計をだし、レポートで集計表を作成しようと考えております。

受験者テーブル(ACCESS 2000)
受験者ID/等級ID/区分ID/科目ID/名前/学科得点/実技得点・・・・合否は関数で隣に表記しています。
※1 (受験者IDは受験者の識別番号、等級IDは等級テーブル1級、2級、3級と結合しています。区分IDは1 両方受験、2 学科のみ受験、3 実技のみ受験、の区分テーブルと結合しています。科目IDは1 国語、2 数学、3 英語、4 体育、の科目テーブルと結合しています。)
最終的にこのクエリを元にした、レポートを等級毎にページを分け、科目を基準として出力する予定でおります。

クエリで受験者IDをカウントして総受験者数を出し、学科と実技合格者数はSum(IIf([学科合否]="合格",1,0))演算でそれぞれ出しました。

ここからが問題なのですが、両方受験(区分ID)1と学科のみ受験(区分ID)2フィールドを足した総学科受験者数、同じく両方受験(区分ID)1と実技のみ受験(区分ID)3フィールドを足した総実技受験者数、また、その合格者数が出せずに困っております。
IDの数字を足すわけにもいきませんし、選択した区分のカウント2つを合計できればよいのですが、調べての該当する項目がありませんでした。
何卒、お力をお貸し頂きたくお願い致します。

【12294】Re:クエリで複数項目の数値の合計をだし...
回答  かるびの  - 13/3/20(水) 16:26 -

引用なし
パスワード
    方法1
 DCount関数は使えませんか。

 第3引数、つまり条件式の書き方に少しクセがあるので、注意してください。


 方法2
 集計クエリを複数作るのはどうでしょうか。
 つまり、現在は、受験者テーブルから集計クエリを作っているわけですよね。
この集計クエリを仮に「Q集計」とします。
 このほかに、
   両方受験と学科のみ受験を足した総学科受験者数
を求める集計クエリ(Q両方学科集計)と
   両方受験と実技のみ受験を足した総実技受験者数
を求める集計クエリ(Q両方実技集計)
を作ります。
 そして、Q集計、Q両方学科集計及びQ両方実技集計から
Q最終集計というクエリを作ります。
 なお、Q最終集計は、選択クエリになるのではないかと思います。


 蛇足ですが、
>学科と実技合格者数はSum(IIf([学科合否]="合格",1,0))演算でそれぞれ出しました。
とのことですが、
   DCount("受験者ID","受験者テーブル","学科合否='合格'")
でもいけると思います。

【12298】Re:クエリで複数項目の数値の合計をだし...
質問  初心 E-MAIL  - 13/3/25(月) 1:04 -

引用なし
パスワード
   かるびの様、いつもお世話になっております。

実は質問の前に、DCount関数でチャレンジしたのですが、おっしゃるとおり、条件式でつまずいてしまい、他の方法がないかと思い質問させて頂いておりました。
条件を入れたら、書き方が悪いのか、科目別でグループ化されず、区分が2段になって集計されました。
1段目(科目:国語・区分:1・受験者数:合計)
2段目(科目:国語・区分:2・受験者数:合計)という具合です。
希望では(科目:国語・区分:1,2・受験者数:合計)としたいのです。

質問文にも書きましたが、最終的にこのクエリを元にした、レポートを作成予定で、等級毎にページを分け、科目毎の集計を出力する予定でおります。

方法2でもやっていたのですが、やはり、任意の区分の合計が出せないと、レポートも科目が2段になってしまうので、こちらも断念したしだいです。
科目でグループ化し、かつ、任意の区分で合計する条件式を御指導いただけないでしょうか?

【12299】Re:クエリで複数項目の数値の合計をだし...
回答  かるびの E-MAIL  - 13/3/25(月) 3:55 -

引用なし
パスワード
   >条件を入れたら、書き方が悪いのか、科目別でグループ化されず、区分が2段になって集計されました。
>1段目(科目:国語・区分:1・受験者数:合計)
>2段目(科目:国語・区分:2・受験者数:合計)という具合です。

 ここまで出せているなら、このクエリを元にさらに集計クエリを作って、
各段の受験者数の合計を求めてやればいいのではないですか。


 ところで、2段になったのは、条件式の問題ではないですね。
 集計クエリにおけるグループ化の問題です。
 2段になったのは、科目別かつ区分別でグループ化がされてしまったからでしょう。

 これを1段にしたいなら、「区分」フィールドはグループ化させないようにします。
 私は、クエリ・デザイナはほとんど使えず、クエリは、全てSQL文を書いていますが、
SQL文で言えば、
「区分」フィールドをSQL文のSELECT句から外し、GROUP BY句からも外します。
 区分が1又は2、つまり、3未満のものを集計対象にするのですから、
WHERE句を「WHERE 区分<3」とします。そうすると、
   SELECT 科目ID,Count(受験者ID) AS 受験者計
   FROM 受験者テーブル
   WHERE 区分<3
   GROUP BY 科目ID
というクエリになります。
 クエリ・デザイナでこれがどのように表示されるのかは、
クエリをSQLビューで開き、このSQL文を貼り付けた上、
そのクエリをデザインビューで開いて確認してみてください。

 このクエリを開くと、クエリは4段(国語、数学、英語、体育)となって、
各科目について、区分が1又は2である受験者数が表示されるはずです。

 なお、1科目だけを表示したいというなら、
WHERE句に例えば「科目ID=1」という条件を加えます。
そうすると、WHERE句は「WHERE 区分<3 AND 科目ID=1」となります。

【12301】Re:クエリで複数項目の数値の合計をだし...
発言  初心 E-MAIL  - 13/4/3(水) 0:06 -

引用なし
パスワード
   ご回答ありがとうございます
ご返事遅れまして、すいませんでした。
色々立て込んでおり、直ぐに試せない状況ですが,御指導頂いた通りやってみたいと
思います。
結果をまた、御報告させて頂きます。
ありがとうございました

275 / 2272 ツリー ←次へ | 前へ→
ページ:  ┃  記事番号:
1078191
(SS)C-BOARD v3.8 is Free