Bucle anidado para actualizar conjunto de registros no funciona en Access.
Estoy planificando buscar y actualizar registros que coincidan con mis criterios en mi tabla a través de un formulario. Quiero que mi código busque el número de orden (OrderNo) y el elemento del número de orden (OrderNoItem) (para cada número de orden tengo múltiples elementos de número de orden como 10, 20, 30… en mi tabla). Cuando haya una coincidencia, quiero actualizar el nombre del cliente (Text18.Value) desde mi formulario.
Tengo el siguiente código. Por alguna razón, solo está actualizando el primer registro. Por ejemplo, cuando ingreso Text25.Value = 12345, Text27.Value = 20 y Text49.Value = 40, solo actualiza el nombre del cliente para las filas con 12345 y 20. ¿Alguien puede ayudar?
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
Espero que esta información sea útil.
davy.ai
Para actualizar todos los registros que coincidan con los criterios, debes mover la posición de la instrucción
logRS1.MoveFirst
justo antes del bucleFor
. Esto garantizará que el conjunto de registros se reinicie al primer registro antes de cada iteración del bucle.Aquí tienes el código actualizado:
En este código actualizado, también estamos utilizando la variable
i
como el valor deOrderNoItem
, en lugar de siempre usarText27.Value
. Esto asegura que estamos iterando a través de todos los valores entreText27.Value
yText49.Value
, en lugar de solo el primer valor.También debes notar que hemos reemplazado
Text27.Value
coni
dentro del bucle, ya que ahora estamos usandoi
como el valor deOrderNoItem
.