プロが教える店舗&オフィスのセキュリティ対策術

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

宜しくお願いします。

A 回答 (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
    • good
    • 0
この回答へのお礼

大変ご丁寧にありがとうございます。
今回は2つ目の回答者様のものでやりたかったことができましたので、お教え頂いた方法は使いませんが、
今後ACCESSの使い方や、今回のやり方でもできないパターンが出てきた場合など、
ぜひぜひ参考にさせて頂ければと思います。

あとお二方に最高ポイントをお付けしたいのですが不可能なので、こういうポイントの付け方になりましたこと、お詫びし、アドバイスに感謝いたします。

ありがとうございました!

お礼日時:2007/06/13 10:43

すでに入力されているテーブルから抽出するのかな



日付の抽出条件欄に

Between DateAdd("d",-Weekday([日を指定],2)+1,[日を指定]) And DateAdd("d",7-Weekday([日を指定],2),[日を指定])
    • good
    • 0
この回答へのお礼

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

お礼日時:2007/06/12 09:38

まずは、[イミディエイトウインドウ] を開いて日曜日を求めてみましょう。



? 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
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています

関連するカテゴリからQ&Aを探す


このQ&Aを見た人がよく見るQ&A