引用:
解決しました。
それは何よりです。
引用:
書いたコードの通りに動くものなんですね。
それが当たり前と言えば当たり前なのですが
イメージしていた動作と違う動作の時があって、
「なんで?」と調べると 自分の認識が間違っている事の多い事。。
そんな中でも、思い通りに動いたら嬉しいものですね。がんばってください。
-----------------------------------------
直接質問とは関係ないですが、
引用:
購入者の年齢層をプルダウンで選択
これは
購入時に年代を記録するのでしょうか。
それとも誕生日を登録しておいて、誕生日から計算するのでしょうか?
もし、誕生日から、○○代 を計算していて、そこから、10〜20代 を抽出しているなら
逆に考えた方が良いと思います。 つまり、誕生日 が ○○ 〜 ××まで のレコードを抽出
全レコードに対し、年代を計算 し そこから 抽出する では
・全レコードの年代計算
・そこから抽出(年代計算を行っているので 演算フィールドへはインデックスは適用されない)
となりますが
対象となる日付の 適用日の始まりと終わりを計算で算出しそれを、抽出条件に渡します。
これなら、年代計算は要りませんし、インデックスが適用されているなら、インデックスも適用され
抽出に要する時間が短縮できます。
参考にどうぞ。
Dim strFilter As String
If IsNull(Me![販売日]) = False Then
strFilter = strFilter & " AND [入力した日付] = " & Format(Me![販売日], "\#yyyy/mm/dd\#")
End If
If IsNull(Me![購入者]) = False Then
If Len(Me![購入者]) = 0 Then
strFilter = strFilter & " And [選択した年代] Is Null"
Else
If Me![購入者] = "70代〜" Then
strFilter = strFilter & " AND (誕生日 <=" & Format(DateAdd("yyyy", -70, Date), "\#yyyy/mm/dd\#") & ")"
Else
strFilter = strFilter & " AND (誕生日 BETWEEN " & _
Format(DateAdd("yyyy", "-" & Mid(Me![購入者], 4, 2), Date + 1), "\#yyyy/mm/dd\#") & " AND " & _
Format(DateAdd("yyyy", "-" & Mid(Me![購入者], 1, 2), Date), "\#yyyy/mm/dd\#") & ")"
End If
End If
End If
If Len(strFilter) > 0 Then
strFilter = Mid(strFilter, 6)
End If
Debug.Print strFilter