Excel VBA反向查询结果

我试图从数据库中获取logging并将其填充到excel中。 这是我如何获取数据并填写它(注意:查询是简化的,我不能只是ORDER BY DESC ):

 Sub FillPersons(ByRef connection As ADODB.connection) Dim recordSet As ADODB.recordSet Set recordSet = New ADODB.recordSet Dim sql As String sql = "SELECT TOP 2 Id FROM Persons" recordSet.activeconnection = connection recordSet.Open sql Dim a As Variant If Not recordSet.EOF Then a = recordSet.GetRows a.Reverse (a) Sheet1.Cells(10, 2).Resize(UBound(a, 1) + 1, UBound(a, 2) + 1).Value = a End If 'Sheet1.Range("B10").CopyFromRecordset recordSet recordSet.Close connection .Close Set connection = Nothing End Sub 

不幸的是,结果如下所示:

B10 B11
2 1

代替

B10 B11
1 2

我试图扭转a但不幸的是我不能得到它的工作。

有一个技巧来得到正确的结果吗?

提前致谢

这个简短的“帮手”函数应该取代VB.Net的Array.Reverse方法 。

 Function reverseArray(vals As Variant) As Variant Dim tmp As Variant, i As Long For i = LBound(vals, 1) To UBound(vals, 1) / 2 tmp = vals(UBound(vals, 1) - (i - LBound(vals, 1)), 1) vals(UBound(vals, 1) - (i - 1), 1) = vals(i, 1) vals(i, 1) = tmp Next i reverseArray = vals End Function 

用来确定反向元素的math运算值应该与零基和一元arrays一起工作。

 If Not recordSet.EOF Then a = recordSet.GetRows a = reverseArray(a) Sheet1.Cells(10, 2).Resize(UBound(a, 1) + 1, UBound(a, 2) + 1).Value = a End If 

您可以对它进行子查询并将第一个和最后一个的结果作为2行join

像这样,我的数据不是你的,对不起

 SELECT LAST(OriginalQry1.TeammemberID) AS FirstR FROM (SELECT TOP 2 TM.TeammemberID FROM tbl_Teammembers AS TM) AS OriginalQry1 UNION ALL SELECT First(OriginalQry2.TeammemberID) AS LastR FROM (SELECT TOP 2 TM.TeammemberID FROM tbl_Teammembers AS TM) AS OriginalQry2 

那么你可以使用从logging集复制?