我正在使用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
之前2020/05/26
日期较大。是否可以对单个查询执行此操作?
请不要费心回复替代方法(不是我不想要它,只是没有必要(。我知道我以前总是可以从表中获取所有数据(或者至少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)
问候