※ ChatGPTを利用し、要約された質問です(原文:VBA 抽出条件でデータ型が一致しません)
VBA 抽出条件でデータ型が一致しません
このQ&Aのポイント
Access 2003の環境で、VBAの抽出条件でデータ型が一致しないメッセージが表示される問題について教えてください。
データ型が一致しないメッセージが表示される原因は、日付フィールドのデータによって引用符の有無が異なるためです。
条件文が上手くいっていない理由は、日付の比較において引用符を使用していることが原因で、データの一致しないメッセージが表示されている可能性があります。
Access 2003について教えて下さい。環境はWin XPです。
Table1
ID(メモ型),日付(日付/時刻型 書式 日付(S))
001,2012/08/10
002,2012/08/10
Form1
フォームにはテキストボックス、
txt_Dateがあります。
書式は日付(S)です。
ここには、yyyy/mm/ddの形式で値を打ち込む、またはカレンダーから選択します。
同じくボタン、btn_exeがあります。
これをクリックすると処理がはじまります。
Dim getDate As Date
Dim strSQL As String
Dim objADOCON As ADODB.Connection
Dim objADORS As ADODB.Recordset
getDate = txt_Date.Value
strSQL = "select * from Table1 where 日付 = '" & getDate & "'"
objADORS.Open strSQL, objADOCON, adOpenKeyset, adLockOptimistic
質問1.
where 日付 = '" & getDate & "'" でやると下記のメッセージが表示されます。
抽出条件でデータ型が一致しません
where 日付 = " & getDate でやると、エラーメッセージは起こりません。
何故このようなメッセージが表示されるのでしょうか?
質問2.
Table1には2012/08/10というデータが日付フィールドに存在します。
where 日付 = " & getDate ではエラーメッセージが出ないので、
次のレコードセット取得時、レコード取得件数が0件です。
条件文が上手くいっていないような気がします。なぜでしょうか?
ちなみに、
strSQL = "select * from Table1
では問題なくレコードセットを取得できています。
宜しくお願いします。
お礼
おぉ!一発で行きました。ありがとうございます!