'Biggest date before' 在 WHERE 子句上(OleDB SELECT 方法)

'Biggest date before' on a WHERE clause (OleDB SELECT method)

我正在使用 VBA 将数据从 Access DB file 导入到 Excel,并且我在我的一个查询中遇到了 WHERE 子句。这与其说是技术上的困难。它更像是一个策略难度。

此时,建立连接后,

Dim prv As String: prv = "Provider=Microsoft.ACE.OLEDB.12.0;" & _
                         "Data Source=..." & _
                         "Jet OLEDB:Database Password=..."
Dim DBcon As New Connection
DBcon.Open prv 

我使用下一个查询:

Dim BDrcs As New Recordset
RC01.Open "SELECT * from Table1 WHERE Field1=Dateserial(2020,5,26)", DBcon

出于预期目的,代码运行良好!但是,我的目标是获得 Table1WHERE Field12020/05/26 之前的更大日期,在这种情况下 没有 任何日期为 [=20= 的条目].

是否可以在一个查询中执行此操作?

请不要费心回复替代方法(不是我不想,只是没有必要)。我知道我之前总是可以从 table 获取所有数据(或者至少是 2020/05/26 之前的所有数据),检查更大的日期,然后再次获取数据。我只是想通过一次查询获取数据,如果可能的话...

如果使用 Max 不起作用,您可以尝试使用 TOP 的子查询。类似于:

SELECT A.*
FROM Table1 AS A 
WHERE A.Field1=
    (SELECT DISTINCT TOP 1 B.Field1 FROM Table1 AS B 
    WHERE B.Field1<=DateSerial(2020,5,26) 
    ORDER BY B.Field1 DESC)

此致,