プロが教えるわが家の防犯対策術!

質問させてください。
フォーム「F応募者一覧」の中にコンボボックスにて”
年1””月1””日”~”年2””月2””日1”を選択し
たのちに以下のイベントが組まれているボタンをクリ
ックしますと関係ない日まで出てきてしまいます。た
とえば2005 2 1 ~ 2005 2 6 にしますと18日とか25日のデータも抽出されてしまいます。年月日
のコンボボックスは値リストにて作成しています。
上手く伝えられていないとは思いますが、よろしく
お願い致します。

Year([入社日]) Between [Forms]![F応募者一覧]!
[年1] And [Forms]![F応募者一覧]![年2] And
Month([入社日]) Between [Forms]![F応募者一覧]!
[月1] And [Forms]![F応募者一覧]![月2] And
Day([入社日]) Between [Forms]![F応募者一覧]![日]
And [Forms]![F応募者一覧]![日1]

A 回答 (1件)

ご提示いただいたSQLがよく理解できませんが、



>2005 2 1 ~ 2005 2 6 にしますと

BETWEEN #2005/2/1# AND #2005/2/6#

のように日付の場合は、##でくくってやります。また、誤動作防止のため、西暦を扱う場合には必ず4桁で統一する必要があります。(yyyy/m/d形式)

今回の場合、[年]のコンボボックスが 2005 のように4桁なら大丈夫でしょう。

VBAなら、

With [Forms]![F応募者一覧]
  Kikan1 = Format(DateSerial(![年1],![月1],![日1]),"yyyy/m/d")
  Kikan2 = Format(DateSerial(![年2],![月2],![日2]),"yyyy/m/d")
End With

strSQL = ""
strSQL = strSQL & "SELECT (略)
strSQL = strSQL & " WHERE (略)
strSQL = strSQL & " BETWEEN #" & Kikan1 & "# AND #" & Kikan2 & "#"
strSQL = strSQL & "(略)

みたいになります。

得たい結果は、[入社日]が 2005/2/1~2005/2/6 のデータということでしょうか?

この回答への補足

ご回答ありがとうございます。わかり辛くて申し訳ありません。
>得たい結果は、[入社日]が 2005/2/1~2005/2/6 のデータということでしょうか?
はい。コンボボックスにて指定した範囲のデータを抽出したいのです。
[年1][月1][日1]~[年2][月2][日2]とフォーム上に計6つのコンボボックスがある状態です。

VBAが恥ずかしながらわからないためKenKen SP様のアドバイスのように
[入社日] Between #[Forms]![F応募者一覧]!([年1][月1][日])# and #[Forms]![F応募者一覧]!([年2][月2][日2])#
見たいな感じでできる方法はないでしょうか?
宜しくお願い致します。

補足日時:2005/03/02 22:43
    • good
    • 0

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