• ベストアンサー

ACCESSで日付を指定すると、その1週間のデータを月曜~日曜まで並ばせるには‥

ACCESSで日付の入ったデータがあります。 これらのデータから、日を指定するとその週の月曜~日曜まで出るようにしたいのですが、そのようなことはできるのでしょうか。 また、できればその次の週以降も表示させたいのですが‥。 宜しくお願いします。

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

  • ベストアンサー
noname#140971
noname#140971
回答No.3

少し、回答を質問に沿ったものに修正しておきます。 質問者は月曜日を週の始まりとしているようです。 この場合、先に示した Monday関数、Sunday関数は、希望の日付を戻さないと思います。 次は、変形版のMonday関数、Sunday関数のテスト結果です。 [イミディエイト] ? Monday("2007/05/14") 2007/05/14 ? Monday("2007/05/20") 2007/05/14 ? Sunday("2007/05/14") 2007/05/20 ? Sunday("2007/05/20") 2007/05/20 2007/05/14(月曜日) 2007/05/20(日曜日) ですので、先の回答で示した関数の不具合は是正されています。 Public Function Monday(ByVal Hiduke As Date) As Date   Dim D As Date      D = DateAdd("d", 1, DateAdd("d", (Weekday(Hiduke) - 1) * -1, Hiduke))   Monday = D + (D > Hiduke) * 7 End Function Public Function Sunday(ByVal Hiduke As Date) As Date   Dim D As Date      D = DateAdd("d", -1, Monday(Hiduke + 6))   Sunday = D - (D < Hiduke) * 7 End Function

shigaieto
質問者

お礼

大変ご丁寧にありがとうございます。 今回は2つ目の回答者様のものでやりたかったことができましたので、お教え頂いた方法は使いませんが、 今後ACCESSの使い方や、今回のやり方でもできないパターンが出てきた場合など、 ぜひぜひ参考にさせて頂ければと思います。 あとお二方に最高ポイントをお付けしたいのですが不可能なので、こういうポイントの付け方になりましたこと、お詫びし、アドバイスに感謝いたします。 ありがとうございました!

その他の回答 (2)

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

すでに入力されているテーブルから抽出するのかな 日付の抽出条件欄に Between DateAdd("d",-Weekday([日を指定],2)+1,[日を指定]) And DateAdd("d",7-Weekday([日を指定],2),[日を指定])

shigaieto
質問者

お礼

すごい‥。さんざ悩んだのですが、数行でできてしまうのですね‥。 本当に助かりました。ありがとうございました!

noname#140971
noname#140971
回答No.1

まずは、[イミディエイトウインドウ] を開いて日曜日を求めてみましょう。 ? Weekday("2007/05/09") 4 ? DateAdd("d",-3,"2007/05/09") 2007/05/06 ? DateAdd("d", (Weekday("2007/05/09")-1)*-1, "2007/05/09") 2007/05/06 ? DateAdd("d", (Weekday("2007/05/06")-1)*-1, "2007/05/06") 2007/05/06 ? DateAdd("d", (Weekday("2007/05/12")-1)*-1, "2007/05/12") 2007/05/06 次に、土曜日を求めてみましょう。 ? DateAdd("d", (7-Weekday("2007/05/06")), "2007/05/06") 2007/05/12 ? DateAdd("d", (7-Weekday("2007/05/12")), "2007/05/12") 2007/05/12 ここまでテストすれば、Monday関数、Saturday関数も作成可能です。 ? Monday("2007/05/06") 2007/05/07 ? Monday("2007/05/12") 2007/05/07 ? Saturday("2007/05/06") 2007/05/12 ? Saturday("2007/05/12") 2007/05/12 さて、実際に、テーブル[日報]より月曜日から土曜日までを抽出してみましょう。 <クエリ1> ID______日付 127____2007/05/07 128____2007/05/08 129____2007/05/09 130____2007/05/10 131____2007/05/11 132____2007/05/12 Accessが作成したクエリ1を[SQLビュー]で見ると、次のようです。 SELECT 日報.ID, 日報.日付, * FROM 日報 WHERE (((日報.日付) Between Monday("2007/05/09") And Saturday("2007/05/09"))); Public Function Monday(ByVal Hiduke As Date) As Date   Monday = DateAdd("d", 1, DateAdd("d", (Weekday(Hiduke) - 1) * -1, Hiduke)) End Function Public Function Saturday(ByVal Hiduke As Date) As Date   Saturday = DateAdd("d", 7 - Weekday(Hiduke), Hiduke) End Function ここまで書いて月曜日から日曜日という特殊な抜き出し方であることに気が付きました。 同じ要領で Sunday関数を作ればいいと思います。 Public Function Sunday(ByVal Hiduke As Date) As Date   Sunday = DateAdd("d", 6, Monday(Hiduke)) End Function

関連するQ&A