• ベストアンサー

Accessのレポートで使う関数を教えて

私は製造会社のOLです。Windows2000/Access2000で課内の一月毎の工数表を作っています。テーブルは[日付(年/月/日)]、[取引先]、[製品名]、[担当者]、[工数(時間)]のフィールドからなっています。レポートで、一つの製品を制作するのに何名が携わっているかを計算させたいのですが、製品名フッターにて「=Count([担当者])」にすると、3日同じ人が同じ製品を製作したとしたら、「3名」となってしまします。それを「1名」と計算させるには、どうすればよいのでしょうか?どうか教えて下さい。

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

  • ベストアンサー
  • marmi1516
  • ベストアンサー率17% (3/17)
回答No.5

私もあまり詳しくないので、これよりももっといい方法があるとは思うのですが・・・ クエリーをもう一つ作るのはどうでしょうか。 ひとつのクエリーで全部をやろうとすると難しくなってしまうと思います。 ですから、先に「週報」のテーブルの[製品名]と[担当者]をグループ化したテーブルをクエリーを使って作成し、 そのテーブルをを今作ってるクエリーで呼び出してやればいいのではないでしょうか。 ※デザインビュー 今作ってるクエリーは「選択クエリー」だと思いますが、メニューの「クエリー」というところで、クエリーの種類を選択できます。 そこで「テーブル作成」というのを選んで、適当なテーブル名を付けます。(カレントデータベースにチェックしてください) そして、今度はなかみですが、テーブルの表示で「週報」のテーブルを選び、全てのフィールドをセットしてください。 このとき*は使用せずに、一つずつセットしてください。 そのときに[製品名]が一番左、その次に[担当者]がくるようにしてください。(左から優先されるため) そして集計でグループ化します。そのとき[製品名]と[担当者]以外のものはグループ化以外のものに変えてください。 変えるといっても何にすればよいかわからないと思いますが、担当者が複数あった場合、そのなかのどれを表示するかによります。 例えば[部品コード]を「最大」にした場合は、[担当者]が同じなかで部品コードの番号が一番大きい[担当者]を選ぶようになると思います。 また、[カウント]を選んでレコード件数を返すというようなことも可能です。 わかりにくいかもしれませんけど、これでグループ化はできると思います。 上手くいかなかった場合はまた補足してください。 私もあまり詳しくないので、これよりももっといい方法があるとは思うのですが・・・ クエリーをもう一つ作るのはどうでしょうか。 ひとつのクエリーで全部をやろうとすると難しくなってしまうと思います。 ですから、先に「週報」のテーブルの[製品名]と[担当者]をグループ化したテーブルをクエリーを使って作成し、 そのテーブルをを今作ってるクエリーで呼び出してやればいいのではないでしょうか。 ※デザインビュー 今作ってるクエリーは「選択クエリー」だと思いますが、メニューの「クエリー」というところで、クエリーの種類を選択できます。 そこで「テーブル作成」というのを選んで、適当なテーブル名を付けます。(カレントデータベースにチェックしてください) そして、今度はなかみですが、テーブルの表示で「週報」のテーブルを選び、全てのフィールドをセットしてください。 このとき*は使用せずに、一つずつセットしてください。 そのときに[製品名]が一番左、その次に[担当者]がくるようにしてください。(左から優先されるため) そして集計でグループ化します。そのとき[製品名]と[担当者]以外のものはグループ化以外のものに変えてください。 変えるといっても何にすればよいかわからないと思いますが、担当者が複数あった場合、そのなかのどれを表示するかによります。 例えば[部品コード]を「最大」にした場合は、[担当者]が同じなかで部品コードの番号が一番大きい[担当者]を選ぶようになると思います。 また、[カウント]を選んでレコード件数を返すというようなことも可能です。 わかりにくいかもしれませんけど、これでグループ化はできると思います。 上手くいかなかった場合はまた補足してください。

pot3
質問者

お礼

丁寧なご説明どうもありがとうございました。お礼が大変遅くなり申し訳ありません。日常業務におわれていて、インターネット開く時間がなかなか・・・。何度かチャレンジした結果、できました!やったぁ!! クエリーのグループ化の優先順位を変え >[製品名]と[担当者]以外のものはグループ化以外のものに変えてください ここで手間取りましたが、なんとか一つのクエリーで可能となりました。大変勉強になり、ほんとに助かりました。この「教えて!goo」ページにも感謝します。有難うございました。

その他の回答 (4)

  • ARC
  • ベストアンサー率46% (643/1383)
回答No.4

>回答有難うございます。ACCESS初心者なので、 SELECT [担当者] FROM 工程表テーブル GROUP BY [担当者]; これについては、先にmarmi1516さんが答えてくださいました。m(_ _)m 感謝! #3の答えで完璧かと思いますが、まだ不足でしたら補足をお願いします。 >ごめんなさい。(自分がバカに思えてきた。) いえいえ、こちらこそ説明不足でした。もしぶっきらぼうな回答にお気を悪くなさったとしたら、申し訳ありません。

pot3
質問者

お礼

ほんと、有難うございました。お礼が遅くなり、申し訳ありません。ほんと、これからもっともっと勉強していきたいと思います。有難うございました。

  • marmi1516
  • ベストアンサー率17% (3/17)
回答No.3

私もまだ経験が浅いので偉そうな事言ってもし間違っていたら申し訳ないのですが・・・。 SELECT [担当者] FROM 工程表テーブル GROUP BY [担当者]; というのはSQL文です。 クエリーを作成する時ってたいていはデザインビューで作成すると思うんですが、SQL文で、このようにSELECT文を書く事もできるんです。左上のほうに、「デザインビュー」「SQL」とかいうボタンがないでしょうか? それで、切り替えが可能です。 ですから、これのSELECT文をSQL表示にして記述し、デザインビューで見ることもできますよ。 クエリーというのは、テーブルのデータを加工するものです。 ですから、使えるようになると本当に便利です。 このSELECT文の意味は「工程表テーブル」の「担当者」というフィールドを「担当者」でグループ化するということです。 SELECT [担当者] ← で抽出するフィールドを指定しています。 FROM 工程表テーブル ← は抽出もとのテーブルです。 GROUP BY [担当者] ← は抽出の条件を指定しています。”GROUP BY ”と言うのはグループ化で、こうすると担当者のフィールドには同じ名前が表示される事はなくなります。担当者が同じものをひとまとめにしてしまったということです。 GROUP BYのほかにもいろいろと抽出条件を指定する方法がありますが・・・ こんな説明で果たしてどのくらい伝わったか分かりませんが・・・・ もし間違っているところなどがありましたらどなたかよろしくお願いします。

pot3
質問者

補足

SQLボタン、ありました!今までデザインビューからしかクエリは作ったことがなかったので、これで解明しました。 しかしそれだと、製品名全部ひっくるめての担当者をグループ化してしまうのです。製品ごとに担当者数を出したいのです。今、出そうとしているレポートは以下のクエリからなっています。 (テーブルは週報、取引先コード、部品コードと3つをリレーションしてます。) SELECT 週報.日付, 週報.担当者, 取引先コード.コード, 週報.取引先, 週報.製品名, 部品番号コード.部品名, 週報.[工数(H)], Year([日付]) AS 年, Month([日付]) AS 月 FROM 部品番号コード INNER JOIN (週報 INNER JOIN 取引先コード ON 週報.取引先 = 取引先コード.取引先) ON 部品番号コード.コード = 週報.部品コード WHERE (((Year([日付]))=[YEAR(西暦)半角で入力してください]) AND ((Month([日付]))=[MONTH 半角で入力してください])) ORDER BY 取引先コード.コード; 上記で理解されることを願いますが、これに SELECT [担当者] FROM 週報 GROUP BY [担当者]; を追加すると、構文エラーがでてしまいます。 なので、デザインビューで担当者のところをグループ化してみると、全部のフィールドがグループ化されてしまいうまくいきません。勉強不足で大変申し訳ないのですが、どうすればよいかを教えていただけませんか?よろしくお願い申しあげます。

  • ARC
  • ベストアンサー率46% (643/1383)
回答No.2

SELECT [担当者] FROM 工程表テーブル GROUP BY [担当者]; のようなクエリを作っておいて、 レポートから、 =DCount("担当者","クエリ1") みたいな感じで呼び出せば出来ます。 不明点とかあれば、補足してください。

pot3
質問者

補足

回答有難うございます。ACCESS初心者なので、 SELECT [担当者] FROM 工程表テーブル GROUP BY [担当者]; が、よくわからないのです。 クエリにいれる式でしょうか?ごめんなさい。(自分がバカに思えてきた。) 申し訳ないのですが、詳しく説明願えないでしょうか? よろしくお願いいたします。

  • marmi1516
  • ベストアンサー率17% (3/17)
回答No.1

クエリーを使ったやり方ではだめなのですか??

pot3
質問者

補足

会社でしかPC使えないので、補足が遅くなって申し訳ありません。 クエリを使ったやり方が解らなかったのですが、 いい方法ありますか? ACCESS初心者です。3月1日から始動させなくてはならないので、ぜひとも教えて下さい。

関連するQ&A

専門家に質問してみよう