Loops 循环中的一行代码会产生不希望的结果

Loops 循环中的一行代码会产生不希望的结果,loops,ms-access,vba,Loops,Ms Access,Vba,下面的代码将所选记录的值复制到我表单上的所有记录 但是,代码中的这一行给了我不希望的结果 .Fields("ResultsID").Value = Me.TestResultID.Value 它不是将每个记录的TestResultId复制到ResultId中,而是使所有ResultId与所选记录的TestResultId相同 将代码行移动到哪里是最佳位置 With Me.RecordsetClone .MoveFirst Do While .EOF = False If .Fields("[O

下面的代码将所选记录的值复制到我表单上的所有记录

但是,代码中的这一行给了我不希望的结果

.Fields("ResultsID").Value = Me.TestResultID.Value
它不是将每个记录的TestResultId复制到ResultId中,而是使所有ResultId与所选记录的TestResultId相同

将代码行移动到哪里是最佳位置

With Me.RecordsetClone
.MoveFirst
Do While .EOF = False
If .Fields("[Ordered Analyte]").Value = Me.[Ordered Analyte].Value Then
.Edit
    .Fields("DateStarted").Value = Me.DateStarted.Value
    .Fields("TimeStarted").Value = Me.TimeStarted.Value
    .Fields("DateCompleted").Value = Me.DateCompleted.Value
    .Fields("TimeCompleted").Value = Me.TimeCompleted.Value
    .Fields("Result").Value = Me.Result.Value
    .Fields("Count").Value = Me.[txtCount].Value
    .Fields("ResultsID").Value = Me.TestResultID.Value
.Update
End If
.MoveNext
Loop
End With
替换

.Fields("ResultsID").Value = Me.TestResultID.Value

使用每个记录的TestResultsID,而不仅仅是当前记录

下面的代码将所选记录的值复制到所有记录 在我的表格上

以及:

它使所有ResultId与所选记录的TestResultId相同


因此,您的代码完全按照预期工作。

看起来您根本没有移动表单中的记录,只是移动克隆,因此您一直在分配相同的值。为什么不创建两个记录集,嵌套do循环,这样就可以循环每个记录。或者使用Do循环并使用findrecord方法来获取匹配项,而不是IF语句。@geeFlo很抱歉,这直接超出了我的标题“嵌套循环”,因为您的答案可能在那里,您可能需要创建两个不同的记录集—一个读取,一个写入。永远不要真正使用RecordsetClone,因为我认为它们是只读的,但看起来您的代码只编写了一条记录(其中[Ordered Analyte]=本身)。你是在用另一个过程调用它吗?英文:代码以my.RecordsetClone
开头,这意味着所有记录都是重复的。如果Me是表单,则表单中的所有记录构成一个记录集,并且该记录集被复制或克隆。因此,看起来您正在将原始记录集与精确的副本进行比较。如果代码似乎在工作,那么就会发生一些我们看不到的事情。ResultsID的问题可能是它是一个自动编号,无法更新?Me.TestResultID是什么类型的控件?一个文本框,combobox?抛出运行时错误3265,该集合中找不到项。表中“TestResultID”字段的确切名称是什么?这就是您应该在最后一组引号中使用的内容,其中我有“TestResultsID”。
.Fields("ResultsID").Value = .Fields("TestResultsID").Value