Access (一般機能)

Accessの一般機能に関するフォーラムです。
  • 解決済みのトピックにはコメントできません。
このトピックは解決済みです。
質問

 
(指定なし : 指定なし)
クエリで日付(yyyymmdd)が月曜日だったら、2日前に戻る日付を表示させたい。
投稿日時: 21/10/20 17:31:16
投稿者: やっほー

クエリで日付(yyyymmdd)が月曜日だったら、2日前(土曜日)の日付を表示させて、
土曜日だったら、1日前(金曜日)を表示させて、
それ以外は、1日前のを表示させる。
ような事をしたいのですが、
Accessが初心者以下の為、ご指導のほどよろしくお願いします。

回答
投稿日時: 21/10/21 10:24:42
投稿者: sk

引用:
クエリで日付(yyyymmdd)が月曜日だったら、2日前(土曜日)の日付を表示させて、
土曜日だったら、1日前(金曜日)を表示させて、
それ以外は、1日前のを表示させる。

日曜日でも 1 日前の日付(土曜日)を表示させる、
ということでしょうか。

回答
投稿日時: 21/10/21 12:49:40
投稿者: hatena
投稿者のウェブサイトに移動

日付フィールドのデータ型は、日付/時刻型ですか。
それとも、yyyymmdd形式の数値型またはテキスト型ということですか。
 
日付/時刻型なら、下記の式で。
 

DateAdd("d",IIf(Weekday(日付)=2,-2,-1),日付)

投稿日時: 21/10/21 15:06:18
投稿者: やっほー

引用:

日曜日でも 1 日前の日付(土曜日)を表示させる、
ということでしょうか。

はい!そうです。
 
引用:

日付フィールドのデータ型は、日付/時刻型ですか。
それとも、yyyymmdd形式の数値型またはテキスト型ということですか。

 
数値型です。
よろしくお願いいたします。

回答
投稿日時: 21/10/21 15:35:39
投稿者: hatena
投稿者のウェブサイトに移動

やっかいな仕様にしましたね。
 
結果が日付表示(日付/時刻型)でいいのなら、
 

DateAdd("d",IIf(Weekday(Format(日付,"0000/00/00"))=2,-2,-1),Format(日付,"0000/00/00"))

 
結果もyyyymmdd形式の数値にしたいなら、
 
Val(Format(DateAdd("d",IIf(Weekday(Format(日付,"0000/00/00"))=2,-2,-1),Format(日付,"0000/00/00")),"yyyymmdd"))

投稿日時: 21/10/22 10:57:40
投稿者: やっほー

解決致しました。
ありがとうございました。