プロが教える店舗&オフィスのセキュリティ対策術

Excel/VBA(Excel2003)で開発しています。
SQL Server上のデータをSQLで参照する際、WHERE条件句に日付を範囲指定するのですが、
全く無視され、全日付のデータが読まれてしまいます。

  ・SQL Server上のデータテーブル:MEISAI
      日付項目名:伝票日付 (データ型 = 日付/時刻, サイズ = 8)
  ・範囲指定もとデータ:inpDate1,inpDate2 AS String
inpDate1 の内容 = "2011/06/01" (FormのDateTimePickerで指定する。)
inpDate2 の内容 = "2011/06/10" (同上)
の時、SQL文は下記の通りです。

SELECT * FROM MEISAI WHERE 伝票日付 >= '" & inpDate1 & _
"' AND 伝票日付 <= '" & inpDate2 & "' ; "

また、inpDate1,inpDate2をいったん Date型に変換し、

Dim Dt1 AS Date DimDt2 AS Date
Dt1 = CDate(inpDate1)
Dt2 = Cdate(inpDate2)
SELECT * FROM MEISAI WHERE 伝票日付 >= " & Dt1 & " AND 伝票日付 <= " & Dt2 & " ; "

としても、結果は同じでした。
いろいろ試してみたのですが、どうしてもうまく行かず困っています。
どなたかおわかりの方おられましたら、教えて下さい。

A 回答 (2件)

直接日付を入れたSQL文の動きはどうでしょう?


"SELECT * FROM MEISAI WHERE 伝票日付 >= '2011/06/01'" & _
" AND 伝票日付 <= '2011/06/10' ; "

これがOKならばVBAのブレイク文を入れて合成する文字列を確認してください。
また、NGならばSQLサーバのマネージャ等で、上記の文を直接動作確認してください。
    • good
    • 0
この回答へのお礼

早速ご回答いただき、ありがとうございます。
日付直接入力しても結果は同じでした。
ご提案の方法を試してみます。他に原因があるのかもしれません。

お礼日時:2011/06/08 16:51

エクセルのデータ、外部データの取り込みを利用して、


SQLビルダーで、試しにSQLを、作ってみては
いかがですか。!!!
    • good
    • 0
この回答へのお礼

早速ご回答いただき、ありがとうございます。
なるほど、やってみます。

お礼日時:2011/06/08 16:52

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