Hola tengo una base de datos en la que quiero actualizar un parametro "caja" cada vez que el usuario edita una fila de la misma. Es decir, si yo edito la fila 17 de la BBDD y tengo 35 filas, pues que se actualice el parametro desde la fila 17 hasta la 35. Para ello actualizo la fila editada de forma normal, y luego he realizado una funcion que debe actualizar las siguientes.
El codigo de la misma es este (a parte de declaraciones y demás):
cn.Open()
dr = cmd2.ExecuteReader
Do While dr.Read
For i = 0 To dr.FieldCount - 1
If dr.GetValue(0) > indice Then
cajaactual = dr.GetValue(1)
cajaactual = cajaactual + diferenciaencaja
indice = dr.GetValue(0)
cn.Open()
cmdUpdate.Parameters.Add("@1", OleDbType.LongVarWChar).Value = cajaactual
cmdUpdate.Parameters.Add("@a", OleDbType.LongVarWChar).Value = indice
cmdUpdate.ExecuteNonQuery()
End If
Next
Loop
cn.Close()
Cuando compruebo su funcionamiento paso a paso todo va perfectamente, coge los datos de todas las filas de forma correcta, y en teoría, los guarda correctamente, pero solo en teoría, porque cuando voy a comprobar los datos guardados me encuentro con que solo ha actualizado la fila siguiente a la editada en un primer momento, es decir, "cambia la 17 que he editado yo, actualiza la 18, pero deja todas las demas como estaban".
Alguien sabe por qué?
Se me ha ocurrido que a lo mejor o se puede actualizar mas de una fila de forma consecutiva sin cerrar y abrir la conexion pero no lo se.
Espero vuestra ayuda, gracias.