似乎WHERE子句在我的VBA代码中不起作用

时间:2019-03-15 15:48:19

标签: sql vba date where

Vector3d

Alldata.mdb中有一个名为Initial DB的表。 LNT是Initial DB表的列名。日期信息在LNT列中。

我想做的是调用LNT值早于FUMR_date的数据集。但是我的代码根本不起作用。总是出现运行时错误。

我也尝试过

dSorted[0]

,但没有用。但是,

Dim rs As New ADODB.Recordset
Dim str SQL AS String
Dim strConn As String
Dim FUMR_date As Date

FUMR_date = "2019-02-20 11:00"
strSQL = "SELECT * FROM [initial DB] " & _
        " WHERE (date(LNT) < date(FUMR_date) )"


strConn = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & ThisWorkbook.Path & "\Alldata.mdb;" 
rs.Open strSQL, strConn, adOpenStatic, adLockReadOnly, adCmdText

此代码有效。我不知道为什么请让我知道问题所在。

1 个答案:

答案 0 :(得分:2)

命令字符串直接发送到数据库。但是,FUMR_date是VBA变量,在数据库中未知。
为了快速解决方案,请写  " WHERE (date(LNT) < date('" & FUMR_date & "') )"-这会将变量的内容(作为字符串)放入Where-Clause中。

但是,最好使用ADODB-Command并为日期添加ADODB-Parameter,这样您就不必担心日期格式了