VBA SQL Access数据库查询日期语句

问题描述

我正在使用VBA连接到Access数据库。在运行查询的日期条件时遇到一些问题。

我有一个带有日期的单元格(C7),我想根据该日期查询结果,以下是我的代码

    'Query1 Populate
    query = "SELECT * FROM " & TABLE & " WHERE ReportRunDate = " & _
            Chr(35) & Format(Sheet1.Range("C7").Value,"yyyy-mm-dd") & Chr(35)
    MsgBox query
    Set Rs1 = Conn1.Execute(query)
    MsgBox Rs1.RecordCount

如果我从变量查询获取输出并将其直接运行以访问结果,则不会给出错误,但不会给出结果。可能会发生什么?

解决方法

尝试其他日期格式:

    'Query1 Populate
    query = "SELECT * FROM " & TABLE & " WHERE ReportRunDate = #" & _
            Format(Sheet1.Range("C7").Value,"mm/dd/yyyy") & "#"
    MsgBox query
    Set Rs1 = Conn1.Execute(query)
    MsgBox Rs1.EOF
,

我会将日期值转换为双精度值,以避免出现任何格式问题。请记住:MS Office程序(例如Excel&Access)使用双精度来存储日期和时间。

query = "SELECT * FROM " & TABLE & " WHERE ReportRunDate = " & _
        CDbl(Sheet1.Range("C2").Value)

我已经使用了很多次这种策略,并且对我有用。