【发布时间】:2017-05-11 19:45:41
【问题描述】:
下面的代码将所选记录的值复制到我表单上的所有记录中。
但是,代码中的这一行给了我不希望的结果
.Fields("ResultsID").Value = Me.TestResultID.Value
不是将每条记录的 TestResultID 复制到 ResultsID 中,而是使所有 ResultsID 与所选记录的 TestResultsID 相同。
将那行代码移到哪里最好?
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
【问题讨论】:
-
看起来你根本没有移动表单中的记录,只是克隆,所以你一直分配相同的值。为什么不创建两个记录集,并嵌套你的 do 循环,这样你就可以遍历每条记录。或者使用您的 Do-Loop 并使用 findrecord 方法而不是 IF 语句来获取您的匹配项。
-
@geeFlo 很抱歉,这让我头疼
-
查找“嵌套循环”,因为您的答案可能在那里,并且您可能想要创建两个不同的记录集 - 一个读取,一个写入。永远不要真正使用记录等克隆,因为我认为它们是只读的,但看起来您的代码只写过一条记录(其中 [Ordered Analyte] = 自身)。你是用另一个程序来调用它吗?
-
英文:代码以
With Me.RecordsetClone开头,表示所有记录都是重复的。如果 Me 是一个表单,则表单中的所有记录构成一个记录集,并且该记录集被复制或克隆。所以看起来您正在将原始记录集与完全相同的副本进行比较。如果不知何故代码似乎正在工作,那么我们看不到的其他事情正在发生。 ResultsID 的问题可能是它是自动编号且无法更新? -
Me.TestResultID是个什么样的控件?一个文本框,组合框?