嵌套循环更新记录集不工作访问

Nested loop to update recordset not working Access

我打算通过表格在 table 中搜索和更新符合我的条件的记录。 我希望我的代码搜索 OrderNo 和 OrderNoItem(对于每个 orderno,我有多个 OrderNoItems,例如 10,20,30... 在我的 table 中)当匹配时我想更新客户名称(Text18.Value) 来自我的表格。

我有以下代码。出于某种原因,它只是更新第一条记录。例如,当我输入 Text25.Value = 12345、Text27.Value = 20 和 Text49.Value = 40 时,它只会更新包含 12345 和 20 的行的客户名称。有人可以帮忙吗?

Set logDB1 = CurrentDb()
Set logRS1 = logDB1.OpenRecordset("Log")   

For i = Text27.Value To Text49.Value Step 10
    Do Until logRS1.EOF
         If (logRS1![OrderNo] = Text25.Value And logRS1![OrderNoItem] = Text27.Value) Then
    
            logRS1.Edit
            logRS1![DTN-#] = Text18.Value
            logRS1.Update
          
         End If
    logRS1.MoveNext
    Loop
        
    Next

因为代码设置为执行此操作。这正是 If 条件所需要的。您应该做的是打开由 OrderNo 和 OrderNoItem 范围过滤的记录集,然后循环这些记录。

Set logDB1 = CurrentDb()
Set logRS1 = logDB1.OpenRecordset("SELECT [DTN-#] FROM Log WHERE OrderNo='" & _
                Me.Text25 & "' AND Val(OrderNoItem) BETWEEN " & Me.Text27 & " AND " & Me.Text49)   

    Do Until logRS1.EOF
        logRS1.Edit
        logRS1![DTN-#] = Me.Text18
        logRS1.Update
        logRS1.MoveNext
    Loop

或者不打开和循环记录集,而是执行更新操作 SQL:

CurrentDb.Execute "UPDATE Log SET [DTN-#]='" & Me.Text18 & _
     "' WHERE OrderNo = '" & Me.Text25 & "' AND Val(OrderNoItem) BETWEEN " & Me.Text27 & " AND " & Me.Text49

如果 OrderNo 是数字字段,请删除撇号分隔符。

强烈建议不要在命名约定中使用 punctuation/special 个字符(下划线除外)。更好的是 DTN_Num.