Microsoft Access 掲示板

ユーザログ保管のVBAを、PWD付バックエンドDBに保管させたい / 7

9 コメント
views
4 フォロー
7
hiroton 2021/04/08 (木) 14:09:01 3ea36@f966d >> 4

それともエラー回避のために念のためつけておくのが安牌でしょうか…。

RemoveDateDim RemoveDate As Dateと宣言している(date型で宣言している)ので「#」は必須です(ないと困ったことになります)

Dim d As Date
d = date
Debug.print d & ""

こういう処理(date型を文字列にして出力する)と

2021/04/08

日付(+時刻)っぽい文字に変わります

問題のコードも

strSQL = strSQL & "where 日時<#" & RemoveDate & "#"

が実際に処理されるときはRemoveDateが日付っぽい文字に変わるのでそれをSQL文上での日付データとして扱うためには「#」で囲む必要があります。これを怠ると、例えば

where 日時<2021/4/8

のようなSQL文になるので、「2021/4/8」=「2021÷4÷8」=「63.15625」

where 日時<63.15625

が実行されます。やばいですね

ちなみにdate型というのはコンピュータの内部では数値データです。
Date Data Type (Visual Basic)
つまり、上のSQLは

where 日時<#1900/03/03 3:45:00#

と同じです。SQL構文として問題のない文なので動きます。でも、これでは意図した通りの結果は得られませんよね?ちょーやばいです。エラーを出してくれたほうがマシです

通報 ...