For loop 循环错误,添加的记录太多

For loop 循环错误,添加的记录太多,for-loop,ms-access,while-loop,vba,For Loop,Ms Access,While Loop,Vba,我一直在尝试编写Access VBA代码来自动添加发芽测试的副本 基本上,我有一个表格,其中我输入了代表的总数(NoofReps)和每个代表的种子数(RepSize)(例如50个种子)。对于添加的每条记录,我希望它自动为每个代表添加一条记录,并自动计算代表编号(即,如果我有4个代表,那么它应该添加4条记录,编号为1-4个代表)以及代表大小(例如50) 我一直在尝试各种基于本论坛和其他论坛的信息的循环,但它生成的记录数量仍然存在错误。我已经尝试过“Do-while”和“Do-Until”两种方法,

我一直在尝试编写Access VBA代码来自动添加发芽测试的副本

基本上,我有一个表格,其中我输入了代表的总数(NoofReps)和每个代表的种子数(RepSize)(例如50个种子)。对于添加的每条记录,我希望它自动为每个代表添加一条记录,并自动计算代表编号(即,如果我有4个代表,那么它应该添加4条记录,编号为1-4个代表)以及代表大小(例如50)

我一直在尝试各种基于本论坛和其他论坛的信息的循环,但它生成的记录数量仍然存在错误。我已经尝试过“Do-while”和“Do-Until”两种方法,但在下面两种方法中都得到了相同的结果

有人能告诉我哪里出了问题吗?…如果我想重复2次,那么它会增加2次;如果我想重复3次,那么它会增加246次;如果我想重复4次,那么它会增加30000次以上

为了尝试修复代码,我已经开始在inorefreps中的代码中手动键入重复次数,以便知道错误在代码中,而不是表单中

Private Sub CmdAddReps3_Click()
Dim iRepNo As Integer   ' stores the current value in the series

'Open the table
Set db = CurrentDb()
Set rstGReps = db.OpenRecordset("tblGReplicates")

' Initialise the variables
iRepNo = 1
iNoofReps = 3   'iNoofReps = Me.txtNoofReps

' Add the records using a loop
    rstGReps.movefirst

Do 'Until rstGReps("RepNo") = (iNoofReps + 1) ' always want to include at least 1 repNo

rstGReps.AddNew
rstGReps("GTestID") = Me.GTestID
rstGReps("RepNo") = iRepNo
rstGReps("NoofSeed") = Me.txtNoOfSeeds

' Calculate the next RepNo value in the loop
iRepNo = iRepNo + 1
rstGReps.Update
rstGReps.moveNext

Loop Until rstGReps("RepNo") = (iNoofReps) + 1 ' so that the loop includes the final repNo.

MsgBox "Finished Looping"
rstGReps.Close

Set rstGReps = Nothing
Set db = Nothing

End Sub

任何帮助都将不胜感激

好的,您要在这里移动下一步:
rstGReps.moveNext
,然后在移动下一步后比较
rstGReps(“RepNo”)=(inorefres)+1
,因此处于空记录中,因此总是等于false

循环,直到iRepNo=(INOFREPS)+1将其修复,那么您就不再引用该记录集,在引用该记录集时,该记录集已被设置为下一条记录

您也可以通过删除以下行来修复它:

rstGReps.moveNext

由于
rstGReps.AddNew
已将记录集移动到新的空白记录,因此在添加记录后将其向前移动没有多大意义。如果删除它,您可能希望删除
循环中的
+1
,直到rstGReps(“RepNo”)=(inofreps)+1