• 締切済み

マイクロソフトのaccessのクエリについての質問です。

クエリについての質問です。それほどアクセスには詳しいほうではありません。私は会社の総務をしています。よろしくお願いします。 アクセスの社員名簿があるのですが、怪我や産休などで会社を長期休む人がいます。そのためアクセスの社員名簿に「長期休務開始日」と「長期休務終了日」のフィールドを作成しました。 月ごとに社員の在籍人員をカウントするのですが、たとえば2008年4月の在籍人員をカウントする場合、2008年3月31日から2008年5月15日まで怪我で休んだ社員は4月の在籍人員としてカウントしたくありません。逆に2008年3月31日から2008年4月15日に怪我で休んだ社員は4月の在籍人員にカウントしたいです。つまり4月に1日でも会社に出社した社員はカウントしたいです。 このようなカウントを作成するため、「長期休務開始日」と「長期休務終了日」へ入れるクエリはどのようにすればよろしいでしょうか? アクセスに詳しい方よろしくお願いします。

みんなの回答

noname#192382
noname#192382
回答No.4

No1 optimumsoupです。しろうとですが、趣味で勉強しただけですのでそのおつもりでお聞きください。改めて自分でやってみた結果です。 当方アクセス97です。 1 テーブルはふたつくっておきます。社員名簿テーブルと長期休暇者テーブル 2 ふたつのクエリーで2008/4/1現在の社員と当日休暇中の社員を抽出します。抽出の際退社日や休暇終了日の欄が空白の場合もあるので「または=NULL」を抽出条件に加えます。 3 二つのクエリーの間にリレーションシップを設定します。しゃいんID でつなぎの役をさせます。 4 新しく在職者調査のクエリーをつくり、二つのクエリーを乗せます。ここで抽出条件として、長期休暇者クエリーの社員IDのランを「=NULL」としてこのクエリーを実行すると、そこには休暇をとっていない社員だけが示されます。 説明が下手ですみません。

  • CHRONOS_0
  • ベストアンサー率54% (457/838)
回答No.3

Accessに限定した問題ではなく 2つの期間に重なる部分があるかどうかを判断するロジックですね 期間Aの開始が期間Bの終了より小さい AND 期間Aの終了が期間Bの開始より大きい なら2つの期間には重なりがあります

  • keirika
  • ベストアンサー率42% (279/658)
回答No.2

仮にテーブル名を社員名簿、フィールドを社員コード・長期休務開始日 ・長期休務終了日とします。 クエリのデザインモードの指定をここで記述するのは難しいので SQLを提示します。 SQLビューで貼り付けて、デザインモードで見てください。 SELECT Count([社員コード]) AS 在籍人員 FROM 社員名簿 WHERE (社員名簿.長期休務開始日<#4/1/2008# AND 社員名簿.長期休務終了日 >#4/30/2008#) OR 社員名簿.長期休務開始日 IS NULL; これは4月の在籍人数を集計したものです。 長期休暇対象者以外の日付は未入力つまりNULLであるとします。 なにかの参考になればよいのですが・・・

noname#192382
noname#192382
回答No.1

1.二つのテーブルに分ける 社員名簿と長期休暇者名簿 社員名簿には氏名、社員ID、採用日、退社日など 長期休暇者名簿には 氏名、社員ID、休暇開始日、休暇終了日など 2.二つのテーブルの間には社員IDによりリレーションを組んでおく必要があります。 3.そこで、たとえば 2008年4月1日勤務した人を抽出するには、クエリーで 社員名簿で採用日が2008年4月1日に等しいかまたはそれより小さく、退社日が2008年4月2日より大きい人を抽出した跡で 4.さらに別のクエリーで長期休暇者名簿で休暇開始日が2008年3月31日に等しいかまたはそれより小さく、かつ、休暇終了日が同年4月2日より大きい人を除けばよいわけです。

imadai
質問者

補足

optimumsoup様、ご回答ありがとうございます。手順の4のところで質問なのですが、対象の者を「除く」方法は具体的にはどのようにすれば良いのでしょうか? not の演算子ではうまくいかないのですが・・・

関連するQ&A

  • ACCESSのクエリについての質問です。

    社員名簿のクエリの方法で悩んでいます。社員名簿のテーブルには「入社日」「退職日」と産前産後休暇や怪我等で長期休暇をとる従業員も少なくないものですので「長期休務開始日」「復職日」の4つの日付があります。 たとえば9月1日から9月30日に在籍していた社員をクエリで抽出するために 「入社日」の抽出条件に→ <=#2008/09/30# 「退職日」の抽出条件に→ >=#2008/09/01# Or Is Null と入社退社に対しては分かるのですが、 「長期休務開始日」「復職日」をどうしたらいいか分かりません。(半日悩みました) アクセスに詳しい方よろしくお願いします。 よろしくお願いします。

  • ACCESSのクエリについて

    ACCESS2003のクエリで分からないことがあるので、ぜひアドバイスをください。 顧客名簿で「2007年2月1日~2007年5月31日に購入した人」を出すには、Between #2007/02/01# And #2007/05/31# だと思いますが、「2007年2月1日~2007年5月31日に購入した人以外」を出すにはどの様に検索すればよいのでしょうか? よろしくお願いします。

  • ACCESSのクエリについての質問です

    ACCESSのクエリについての質問です。 同一コードに異なる名称が付与されている組織マスタがあるのですが、 開始日・終了日をみて存在する期間の組織名称のみを表示することはできますでしょうか? 具体的には 【組織マスタ】(全てテキスト型) 組織コード 組織名称 開始日     終了日   001     あああ  20040401   20080331 001     いいい  20080401   99999999 【社員履歴マスタ】(全てテキスト型) 社員コード 所属開始日 所属終了日 組織コード 12345    20040501  20080331   001 12345    20080401  20080930   001 というテーブルがあり、組織名称を含めて表示するためにクエリを作ったのですが 社員コード 所属開始日 所属終了日 組織コード 名称 12345    20040501  20080331   001   あああ 12345    20040501  20080331   001   いいい 12345    20080401  20080930   001   あああ 12345    20080401  20080930   001   いいい となってしまします。 結合は組織コードでしています。 所属時点で存在する組織名称を表示する 12345    20040501  20080331   001  あああ 12345    20080401  20080930   001  いいい となって欲しいのですが、できますでしょうか?

  • アクセス2000でクエリを組んだのですが。。。

    こんにちわ。アクセス初心者です。まず順に追って説明します。 (1)15000件ある顧客名簿と1500件ある担当会社のテーブルをリレーションで結び、クエリを組みました。「Q_顧客名簿」と名づけました。その時点で15000件データが存在します。 (2)フォーム「Q_顧客名簿」を元にフォームを作成しました。そして氏名の曖昧検索をしたいのでまずフォームのテキストボックスに「氏名検索」と名づけて、クエリの画面に戻り「Q_顧客名簿」を元に新たなクエリを組み、「氏名」のフィールドの抽出方法に以下のような文を入れました。 『Like "*" & [forms]![集合フォーム_1]![氏名検索] & "*"』 このクエリを「Q_氏名検索」と名づけました。 (3)フォームの左端をに「Q_氏名検索」が生きるよう設定をし、「氏名検索」のテキストボックスに「再クエリ」を組んだのですが、顧客データ数が15000あるはずなのが11000まで減ってしまいました。 おそらく検索式に何かが足りないのだと思うのですが、SQLやVBAがわからないのでどうすればいいかわかりません。 アクセスの詳しい方、教えていただけませんでしょうか?よろしくお願いいたします。

  • Accessの集計クエリで0カウント集計させない

    Accessの集計クエリで顧客のカルテ番号データからカウント集計クエリで一日の人数を表示しているのですが、 来店客が0の時(0)と入力してもカウント集計クエリでは1とカウントされてしまいます、 どうすれば来店客が0の時(0)と入力してもカウントされなくなるでしょうか

  • Accessクエリでのグループ化

    Accessクエリでのグループ化 以下の2つのテーブルが有ります。 ■社員テーブル ID 名前 1 Aさん 2 Bさん 3 Cさん 4 Dさん 5 Eさん ■受付テーブル ID 受付内容 受付日   社員ID 1  xxxxx 2010/3/1   1 2 xxxxx 2010/3/20   3 3 xxxxx 2010/4/10   2 4 xxxxx   2010/4/11  5 5 xxxxx 2010/4/15  1 6 xxxxx 2010/4/30  2 7 xxxxx 2010/5/3  4 そこで社員毎の受付数をカウントしたいと思っています。 ※受付日が2010/4/1以上5/1未満 名前 受付回数 Aさん 1 Bさん 2 Cさん 0 Dさん 0 Eさん 1 となるイメージです。 しかし、実際にクエリを作ると結果が 名前 受付回数 Aさん 1 Bさん 2 Eさん 1 と、なってしまいます。。 名前:グループ化 受付テーブルのID:カウント 受付日:>=2010/04/01 and <2010/05/01 ※社員テーブルの『ID』と、受付テーブルの『社員ID』を  紐つけており、結合プロパティでは『社員テーブルの  全レコードと受付テーブルの同じ結合フィールドのレコード  だけを含める』としております。 あらかじめ、受付テーブルで受付期間の条件でクエリ を作成しておき、それと社員テーブルを紐つけた場合は イメージ通りの結果になるのですが、1つのクエリで 上記イメージでの結果を表示したいと思ってます。 可能でしょうか? ご教授願います。

  • アクセスのクエリについて教えてください

    契約日付が数値になっているテーブルを更新クエリで日付形式にし、契約期間が1年未満のデータは削除したいと思っています。 例) (1)20110401 → 2011/04/01 Left(元データ,4)&"/"&Mid(元データ,2)&"/"&Right(元データ,2) という式で更新クエリを作り、契約開始日、終了日とも日付形式にしました。 (2)契約期間1年以上のデータを特定する 契約開始日<="2011/03/31"で契約終了日>="2012/03/31" というテーブル作成クエリを作りました。 しかし、契約終了日がブランクのデータがあり、そのデータも(2)に含めたいと思っています。 ただのブランクであれば、契約終了日の条件式にor Null でいいのかなと思ったのですが、 (1)で更新クエリを実行しているため、ブランクではなく「//」が入っています。 どのような式にすれば、「//」データも含むことができますか? アクセスに詳しくなく、わかりにくい説明で申し訳ありませんが、助けてください。

  • ACCESS2010 クエリについて質問です

    ACCESS及びネットでの質問初心者です。 会社の給与計算のデータベースファイルを アクセスのクエリ機能を利用して、 社会保険の月額変更のチェックに使おうと考えております。 以下、質問にご回答いただけましたら幸いです。 現在のデータベースファイルが 年月日 社員番号 月給  家族手当  住宅手当 2012/12/25 1 350000  30000    10000 2013/1/25 1 350000  30000    10000 2013/2/25 1 355000  30000    10000 2012/12/25 2 200000  10000    10000 2013/1/25 2 200000  10000    10000 2013/2/25 2 200000  10000 10000 2012/12/25 3 400000  30000 10000 2013/1/25 3 400000  30000 10000 2013/2/25 3 390000  30000 10000 のように並んでいます。 それをクエリを利用し、 社員番号   給与計(2012/12/25) 給与計(2013/1/25) 給与計(2013/2/25) 1    390000      390000     395000 2    220000      220000     220000 3    440000      440000     430000 のようなデータを作成したいのですが、 どのような機能を使えばよいのかが分かりません。 質問があいまいで申し訳ないのですが、 教えて頂けますでしょうか。 よろしくお願い致します。

  • Accessフォームにクロス集計クエリを表示させるとき

    Accessフォームにクロス集計クエリを表示させようとしています。 クロス集計の横軸の項目数が増減するようなデータを扱っているのですが、 クエリをフォームに貼り付けてフォームを保存した後、クロス集計の横軸の項目数が増減しても、フォーム上の横軸の数は増減してくれません。 もう少し具体的に書くと、 クロス集計クエリは、縦軸に日付、横軸に社員を設定し、日付別の社員のアクセス回数カウントを表示するもので、社員は新しく入ってきたり、辞めていったりするため増減します。 フォーム上に集計クエリを貼り付けて、次のような表ができました。 ----- 日付 アクセス計 社員A 社員B ○日 3     1   2 △日 4     1   3 ----- □日に、StaffCが増えたので、次の様にしたいのですが、StaffCの列が表示されません。 ----- 日付 アクセス計 社員A 社員B 社員C ○日 3     1   2 △日 4     1   3 □日 5     1   2   2 ----- どのような解決方法がありますか? 質問が分かりづらいと思いますが、宜しくお願いします。表は等幅フォントで見ていただければと思います。

  • ACCESSクエリー処理で

    ACCESS2000でのクエリー処理において下記方法を教えてください。 テーブルA   商品A 開始日 終了日   商品A 開始日 終了日   商品B 開始日 終了日   ※商品単位に開始日や終了日が違うレコードが複数存在します。 上記テーブルをクエリーで下記イメージに処理できますでしょうか?   商品A 開始日 終了日 開始日 終了日   商品B 開始日 終了日   

専門家に質問してみよう