Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ms access 记录集不迭代_Ms Access_Vba_Ms Access 2013 - Fatal编程技术网

Ms access 记录集不迭代

Ms access 记录集不迭代,ms-access,vba,ms-access-2013,Ms Access,Vba,Ms Access 2013,我确信这完全是用户的错误,但就我个人而言,我无法发现如何迭代一个表,并将记录写入Excel。我有下面的代码,但它挂起在第一个管理器ID上,只是在循环中不断重复对该ID的写入。我想迭代表中的所有经理ID,并将它们写入同一工作簿 我应该如何调整这段代码才能做到这一点 Set xlR = xlWb.Worksheets(1).Range("$R$2") i=0 Set rs2 = Db.OpenRecordset("SELECT * FROM TestTable ORDER BY [Man

我确信这完全是用户的错误,但就我个人而言,我无法发现如何迭代一个表,并将记录写入Excel。我有下面的代码,但它挂起在第一个
管理器ID
上,只是在循环中不断重复对该ID的写入。我想迭代表中的所有
经理ID
,并将它们写入同一工作簿

我应该如何调整这段代码才能做到这一点

  Set xlR = xlWb.Worksheets(1).Range("$R$2")
  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

您没有更改偏移量,因此您正在连续分配相同的单元格

请尝试以下操作:

    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 + 1
.MoveNext


debug.print是否输出所有ManagerName?在我看来,您没有更改目标单元格(您没有在任何地方使用递增的i)。是否可能在迭代TestTable记录集时覆盖了相同的单元格(R2)?@majjam-debug.print of.Fields(2).Value.Fields(1).Value和.Fields(3)。值显示记录集实际上正在移动。这是本周的第三个或第四个问题,其特点是
。MoveLast
,然后是
。MoveFirst
。你们都在读同样糟糕的教程吗?如果在开始迭代之前不需要
.Count
,则不需要
.MoveLast
.MoveFirst
。无论如何,记录集似乎正在迭代,但您正在一次又一次地覆盖相同的单元格。debug.print是否输出所有managernames?在我看来,您没有更改目标单元格(您没有在任何地方使用递增的i)。是否可能在迭代TestTable记录集时覆盖了相同的单元格(R2)?@majjam-debug.print of.Fields(2).Value.Fields(1).Value和.Fields(3)。值显示记录集实际上正在移动。这是本周的第三个或第四个问题,其特点是
。MoveLast
,然后是
。MoveFirst
。你们都在读同样糟糕的教程吗?如果在开始迭代之前不需要
.Count
,则不需要
.MoveLast
.MoveFirst
。无论如何,记录集似乎正在迭代,但您正在一次又一次地覆盖相同的单元格。我将synatx更改为I=0 xlR。Value=.Fields(0)。Value xlR.Offset(columnpoffset:=1+(I*2))。Value=.Fields(2)。Value xlR.Offset(columnpoffset:=2+(I*2))。Value=“E00000000”i=i+1,每次都会覆盖相同的3个单元格-当管理器更改时,永远不会移动到下一列或下一行请移动
i=0
到循环外部我将i=0移动到此行下方设置xlR=xlWb。工作表(1)。范围($R$2)但同样的结果是,调整后的回答将synatx修改为i=0 xlR。Value=.Fields(0)。Value-xlR.Offset(columnCoffset:=1+(i*2))。Value=.Fields(2)。Value-xlR.Offset(columnCoffset:=2+(i*2))。Value=“E00000000”i=i+1,每次都会覆盖相同的3个单元格-当管理器更改时,永远不会移动到下一列或下一行请移动
i=0
到循环外部我将i=0移动到此行下方设置xlR=xlWb。工作表(1)。范围($R$2”),但相同的结果请查看调整后的答案