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集复制?