'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
出于预期目的,代码运行良好!但是,我的目标是获得 Table1
值 WHERE Field1
是 2020/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)
此致,
我正在使用 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
出于预期目的,代码运行良好!但是,我的目标是获得 Table1
值 WHERE Field1
是 2020/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)
此致,