|
▼わん さん:
こんにちは。
>お世話になっています。
>恥ずかしながら、もう壁にぶつかってしまいました。
当方も壁にぶつかっては Help や MS の技術者情報のページと格闘してますよ^^;
>上記を利用すると例えばうるう年を含めた前後の年度、
>つまり2月29日が存在する年度では前年結果が非表示ではなく、
>前年の2月28日の結果が表示されてしまいます。
>DLookUp("結果1","テーブルI","Year([日付]) = " &
>Year([日付])-1 & "AND 名前 = '" & [名前] & "'") AS 前年結果1
こちらは、
・名前が一致して
・日付が去年のデータ
のうち、一番初めに見つかったものを返す式です。
したがって前年結果1 は月日に関係なく前年であれば値を引っ張ってきてしまいます。
>どうやったら未記入にできるのでしょうか?
日付まで意識して前年のものを取ってくるとすると、こんな感じでしょうか。
SELECT テーブルI.日付,
テーブルI.名前,
テーブルI.結果1,
テーブルI.結果2,
IIf(Format([日付],"mmdd")="0229",Null,DateAdd("yyyy",-1,[日付])) AS 前年度日付,
DLookUp("結果1","テーブルI","[日付] = #" &
Nz([前年度日付],CDate(0)) & " # AND 名前 = '" & [名前] & "'") AS 前年結果1,
DLookUp("結果2","テーブルI","[日付] = #" &
Nz([前年度日付],CDate(0)) & " # AND 名前 = '" & [名前] & "'") AS 前年結果2
FROM テーブルI;
|
|