Datediff 未处理 VBA 查询以在 Excel 中访问

Datediff not working on VBA query to access in Excel

我正在尝试在 excel 中对 vba 进行此基本 select 查询:

"SELECT * FROM Tabela1 WHERE DateDiff('yyyy', [Vencimento], " & filter & ") = 0"

所以我想获取 "Vencimento" 年份与所需年份匹配的所有结果。但是当 "filter = 2016" 和 "Vencimento = 01/11/2016".

时,这个 Datediff returns -111(或类似的东西)

[Vencimento] 是访问 table 上的列,过滤器位于 excel 上的单元格中。我猜想 excel 没有使用 [Vencimento] 作为日期,即使我在访问此列中配置为日期,我也不知道如何做到这一点。

以下应该适用于 T-SQL 和 MS Access:

SELECT * FROM Tabela1 WHERE YEAR( [Vencimento] ) = 2016

因此,如果您希望根据名为 filter 的单元格中的值构建它,那么:

SQL$ = "SELECT * FROM Tabela1 WHERE YEAR( [Vencimento] ) = " & range("filter").value

但是,如果您的 filter 单元格包含日期,但格式设置为仅显示年份,那么您需要提取像这样的年份值:

SQL$ = "SELECT * FROM Tabela1 WHERE YEAR( [Vencimento] ) = " & Year(range("filter").value)