CopyFromRecordSet反向

时间:2018-01-25 14:54:42

标签: vba excel-vba ms-access excel

我正在开发一个Access数据库,并在表单按钮上有一些代码,它们获取记录集的内容并将其导出到excel文档。以下代码有效但我被要求在工作表上反转导出数据。

Set qdef = db.QueryDefs("Inspection_Detail_Crosstab")
qdef![Tag_No_Param] = Tag_Number.Value
Set rs = qdef.OpenRecordset()


    EquipmentCellSt = (Col & EquipmentCell)
    With wsheet
    .Range(EquipmentCellSt).CopyFromRecordset rs
    End With

所以而不是(就像现在一样):

 - item 1 
 - item 2
 - item 3

它出口:

 - item 3
 - item 2
 - item 1

我认为这样做的方法是:

With wsheet
    rs.MoveLast
    .Range(EquipmentCellSt).CopyFromRecordset rs
    rs.MovePrevious
End With

但添加MoveLastMovePrevious似乎只是锁定程序。

1 个答案:

答案 0 :(得分:1)

您可以通过反向迭代记录来手动导出记录集:

Dim rowNum as Long
Dim columnNum As Long
Dim fld As Field
columnNum = 0
rowNum = 0
'stupid client-side sorting, because management
rs.MoveLast
Do While Not rs.BOF
   For Each fld In rs.Fields
       wsheet.Range(EquipmentCellSt).Offset(rowNum, columnNum).Value = fld.Value
       columnNum = columnNum + 1
   Next
   rowNum = rowNum + 1
   columnNum = 0
   rs.MovePrevious
Loop