【发布时间】:2017-12-15 03:50:24
【问题描述】:
我一直在尝试编写 Access VBA 代码来自动添加用于发芽测试的重复。
基本上我有一个表格,我可以在其中输入代表总数 (NoofReps) 和每个代表的种子数 (RepSize)(例如 50 个种子)。对于添加的每条记录,我希望它自动为每个代表添加一条记录并自动计算 Rep Number(即,如果我有 4 个代表,那么它应该添加 4 条记录,编号为 1-4 个代表)以及 RepSize(例如 50) .
我一直在根据来自该论坛和其他论坛的信息尝试各种循环,但在生成的记录数量方面仍然出现错误。我已经尝试过“Do while”和“Do until”,但无论哪种方式都得到相同的结果。
有人可以告诉我哪里出错了吗?...如果我想要 2 次,则增加 2,如果我想要 3,则增加 246,如果我想要 4,则增加 >30,000!!!
为了尝试修复代码,我已经开始在 iNoofReps 的代码中手动输入代表次数,以便我知道错误在代码中,而不是在表单中。
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
任何帮助将不胜感激!!!
【问题讨论】:
标签: for-loop ms-access while-loop vba