我在 Access 中有这个查询。它的工作速度非常快并且具有出色的性能。
但是,当我想使用 ADODB.REORDSET 在 Excel 中使用此查询时,通过复制记录集信息大约需要 15 分钟Range.CopyFromRecordset
SELECT
d.ShamsiDate,
d.UnitNo,
d.[Counter_MVH+],
(SELECT max( d1.[Counter_MVH+] )
FROM tblData AS d1
WHERE d1.ShamsiDate < d.ShamsiDate AND d1.UnitNo = d.UnitNo
) AS PriorValue
FROM tblData d;
这是VBA中使用的代码:
Dim cn As Object, rs As Object, sq As String
Set cn = CreateObject("ADODB.Connection")
Set rs = CreateObject("ADODB.Recordset")
sq = _
"SELECT d.ShamsiDate, d.UnitNo, d.[Counter_MVH+], " & _
"(SELECT MAX(d1.[Counter_MVH+]) " & _
"FROM [Data$] d1 " & _
"WHERE d1.UnitNo = d.UnitNo AND d1.ShamsiDate < d.ShamsiDate ) AS PriorValue " & _
"FROM [Data$] d;"
cn.connectionstring = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & ThisWorkbook.FullName & ";Extended Properties='Excel 12.0 Xml;HDR=YES';"
cn.Open
rs.Open sq, cn, 3, 1
Sheet2.Range("A2").CopyFromRecordset rs
rs.Close
cn.Close
谢谢。如果您能帮助我,我将不胜感激。
None
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)