dポイントプレゼントキャンペーン実施中!

クエリの抽出条件にフォームの値を使用して一定期間ないのものを抽出しようとしているのですが
Switchで定義しているのですがうまく反映してくれません。
どこから手をつければよいでしょうか。
Switch([Forms]![分析]![期間リスト]="一ヶ月以内",([day判断].[日付])>=DateAdd("m",-1,Date()),[Forms]![分析]![期間リスト]="二ヶ月以内",([day判断].[日付])>=DateAdd("m",-2,Date()),[Forms]![分析]![期間リスト]="三ヶ月以内",([day判断].[日付])>=DateAdd("m",-3,Date()),[Forms]![分析]![期間リスト]="四ヶ月以内",([day判断].[日付])>=DateAdd("m",-6,Date()))


sqlだとこうなります。
SELECT day判断.*, day判断.曜日, day判断.日付
FROM day判断
WHERE (((day判断.曜日)=[Forms]![分析]![曜日リスト]) AND ((day判断.日付)=Switch([Forms]![分析]![期間リスト]="一ヶ月以内",([day判断].[日付])>=DateAdd("m",-1,Date()),[Forms]![分析]![期間リスト]="二ヶ月以内",([day判断].[日付])>=DateAdd("m",-2,Date()),[Forms]![分析]![期間リスト]="三ヶ月以内",([day判断].[日付])>=DateAdd("m",-3,Date()),[Forms]![分析]![期間リスト]="四ヶ月以内",([day判断].[日付])>=DateAdd("m",-6,Date()))));

A 回答 (2件)

Switch は、条件にあたらない場合は Null が返ります


Switch( Aなら, A用, Bなら, B用) の時、Cだったら・・・とかの場合
安全性?の為に
Switch( Aなら, A用, Bなら, B用, True, 他用) とかの記述が良いかも

今回の SQL では、day判断.日付=Switch(・・・・ となっていて
Switch 内では、
Aなら、day判断.日付>=DateAdd(・・・)
day判断.日付>=DateAdd(・・・) ここは、True / False になるけど
day判断.日付=Switch(・・・・ から
day判断.日付= True / False と解釈させたい?

修正案1)

day判断.日付>=Switch(・・・・ として
Aなら、DateAdd(・・・) の記述に

修正案2)

day判断.日付=Switch(・・・・ を Switch(・・・・ にして
Aなら、day判断.日付>=DateAdd(・・・)


最後に True, 他用 を追加して
他用は、
案1)では、#2000/1/1# とか
案2)では、True とか


※ "四ヶ月以内" の時の DateAdd 内 -6 → -4 かも
    • good
    • 0

Switch関数自体は問題ないと思います


「期間リスト」コントロールの種類は何でしょう?
「期間リスト」の値を取得できていますか?
    • good
    • 1

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