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

问题描述 投票:0回答:1
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

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

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

我也试过了

    " WHERE (Datevalue(LNT) < Datevalue(FUMR_date) )"

它不起作用。然而,

    " WHERE (Datevalue(LNT) < Datevalue(now()) )"

这段代码有效。我不知道为什么。请让我知道这个问题。

sql vba date where
1个回答
2
投票

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

但是,使用ADODB-Command并为日期添加ADODB参数会更好,这样您就不必关心日期格式了

© www.soinside.com 2019 - 2024. All rights reserved.