Ich habe versucht, Access VBA-Code zu schreiben, um die Hinzufügung von Replikaten für Keimtests zu automatisieren.Schleifenfehler, zu viele Datensätze hinzugefügt
Grundsätzlich habe ich ein Formular, wo ich die Gesamtzahl der Wiederholungen (NoofReps) und die Anzahl der Samen pro rep (RepSize) (z. B. 50 Samen) eingeben. Für jeden hinzugefügten Datensatz möchte ich, dass er automatisch einen Rekord für jede Wiederholung hinzufügt und automatisch die Wiederholungszahl berechnet (dh wenn ich 4 Wiederholungen habe, dann sollte er 4 Aufzeichnungen hinzufügen, nummeriert 1-4 Wiederholungen) sowie die RepSize (zB 50) .
Ich habe verschiedene Schleifen basierend auf Informationen aus diesem Forum und andere versucht, aber immer noch Fehler mit der Anzahl der Datensätze, die es generiert. Ich habe sowohl "Do while" als auch "Do Until" ausprobiert, aber ich habe das gleiche Ergebnis.
Könnte mich bitte jemand wissen lassen, wo ich falsch liege? ... Wenn ich 2 Wiederholungen haben möchte, dann fügt das 2 hinzu, wenn ich 3 möchte dann 246, und wenn ich 4 will, fügt es> 30.000 hinzu !!!
Um den Code zu reparieren, habe ich begonnen, die Anzahl der Wiederholungen manuell in den Code in den iNoofReps einzugeben, so dass ich weiß, dass der Fehler im Code und nicht aus dem Formular ist.
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
Jede Hilfe würde geschätzt werden !!!