sql - 似乎 WHERE 子句在我的 VBA 代码中不起作用
问题描述
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()) )"
此代码有效。我不知道为什么。请让我知道问题所在。
解决方案
命令字符串直接发送到数据库。但是,FUMR_date
它是一个 VBA 变量,在您的数据库中是未知的。
为了快速解决,请编写
" WHERE (date(LNT) < date('" & FUMR_date & "') )"
- 这会将变量的内容(作为字符串)放入 Where 子句中。
但是,最好使用 ADODB 命令并为日期添加 ADODB 参数,这样您就不必关心日期格式
推荐阅读
- javascript - 问题 - Base 64 PDF 字符串未在 IE 11 中呈现
- intellij-idea - 在 IntelliJ IDEA 中撤消 Windows Defender 提示的“不再显示”
- php - Use PHP Associative Array in If Condition
- android - 如何从firebase获取数据?
- javascript - 如何异步查询多条 SQL?
- reactjs - 出现错误:this.setState 不是反应中的函数
- javascript - 如何使用jquery获取span元素后的文本
- templates - Cloudformation 模板错误“当前不支持请求的配置。请查看文档以获取支持的配置
- json - Java GSON 和 Flutter json_annotation 的区别导致错误
- javascript - 带有进度条的 Ajax 请求