记录集不迭代
Recordset Not Iterating
我确信这完全是用户错误,但对于我来说,我无法发现如何迭代 table,并将记录写入 Excel。我有下面的代码,但它挂在第一个 Manager ID
上,只是在一个循环中不断地重复写入那个代码。我想遍历 table 中的所有 Manager ID
并将它们写入同一个工作簿。
我应该如何调整此代码才能做到这一点?
Set xlR = xlWb.Worksheets(1).Range("$R")
i=0
Set rs2 = Db.OpenRecordset("SELECT * FROM TestTable ORDER BY [Manager ID] ASC", dbOpenDynaset)
managerName = CLng(rs2.Fields(3).Value)
Debug.Print managerName
With rs2
.MoveLast
.MoveFirst
Do While Not .EOF
xlR.Value = .Fields(0).Value
xlR.Offset(ColumnOffset:=1 + (i * 2)).Value = .Fields(2).Value
xlR.Offset(ColumnOffset:=2 + (i * 2)).Value = "ENTATH01"
i = i + 1
.MoveNext
Loop
.Close
End With
xlWb.SaveAs FileName:=sPath & sFile, FileFormat:=xlOpenXMLWorkbook
xlWb.Close SaveChanges:=True
rs2.MoveNext
您没有更改偏移量,因此您一直在分配同一个单元格。
尝试以下操作:
xlR.Offset(ColumnOffset:=i * 3).Value
xlR.Offset(ColumnOffset:=1+(i*3)).Value = .Fields(2).Value
xlR.Offset(ColumnOffset:=2+(i*3)).Value = "ENTATH01"
我假设您将 i 初始化为 0
变化:¨
i = i + 1
.MoveNext
到
i = i + 2
.MoveNext
我确信这完全是用户错误,但对于我来说,我无法发现如何迭代 table,并将记录写入 Excel。我有下面的代码,但它挂在第一个 Manager ID
上,只是在一个循环中不断地重复写入那个代码。我想遍历 table 中的所有 Manager ID
并将它们写入同一个工作簿。
我应该如何调整此代码才能做到这一点?
Set xlR = xlWb.Worksheets(1).Range("$R")
i=0
Set rs2 = Db.OpenRecordset("SELECT * FROM TestTable ORDER BY [Manager ID] ASC", dbOpenDynaset)
managerName = CLng(rs2.Fields(3).Value)
Debug.Print managerName
With rs2
.MoveLast
.MoveFirst
Do While Not .EOF
xlR.Value = .Fields(0).Value
xlR.Offset(ColumnOffset:=1 + (i * 2)).Value = .Fields(2).Value
xlR.Offset(ColumnOffset:=2 + (i * 2)).Value = "ENTATH01"
i = i + 1
.MoveNext
Loop
.Close
End With
xlWb.SaveAs FileName:=sPath & sFile, FileFormat:=xlOpenXMLWorkbook
xlWb.Close SaveChanges:=True
rs2.MoveNext
您没有更改偏移量,因此您一直在分配同一个单元格。
尝试以下操作:
xlR.Offset(ColumnOffset:=i * 3).Value
xlR.Offset(ColumnOffset:=1+(i*3)).Value = .Fields(2).Value
xlR.Offset(ColumnOffset:=2+(i*3)).Value = "ENTATH01"
我假设您将 i 初始化为 0
变化:¨
i = i + 1
.MoveNext
到
i = i + 2
.MoveNext