Me aparece un error al actualizar un DataWindow que dice "Fila cambiada entre recuperación y actualización". ¿Cuál es la solución?DataWindow Error: Fila cambiada entre recuperación y actualización
Respuesta
Esto puede ocurrir si está mostrando las mismas filas en más de una DataWindow (no compartida) y luego intenta actualizarlas. Otras causas son el uso incorrecto de SetItemStatus(); uso incorrecto de los indicadores de estado en la instrucción update(); y finalmente, la causa que se pretende detectar, otro usuario actualizó la fila que tienes delante.
¿Se ha resuelto esto? Hay varias razones por las que esto podría suceder, una es si la fila ha sido actualizada por otro usuario. En las propiedades de actualización de su objeto de datos, puede elegir el método de actualización, ya sea mediante el valor de la clave, la clave y los valores modificados, o la clave y todas las columnas actualizables.
Si está SEGURO de que no hay problemas de concurrencia, puede cambiar esta configuración para "usar solo el valor de clave". Hará que la cláusula where para las actualizaciones consista únicamente en el valor de la clave y otras columnas no se evaluarán en busca de cambios.
Puede ocurrir si se producen errores de validación, debe recordar configurar el estado del elemento para que no se modifique. Para configurar todas las filas para que no se modifiquen, harías dw_1.setitemstatus (1,0, Primary!, NotModified!) Si mi memoria es correcta que establecería todas las columnas de la fila uno en NotMofidied !. También puede hacer ResetUpdate() o Recuperar datos.
Espero que esto ayude. Rich
Esto generalmente significa que alguna columna has incluido en la actualización donde la cláusula se actualiza en otro lugar, como a través de un disparador. otras causas incluyen que no tener cadena vacía es nulo establecido para las columnas de cadena cuando se habla con Oracle. Oracle convierte cualquier cadena vacía enviada a nulos, por lo que una actualización posterior no encontrará la misma fila a menos que le indique a pb que la considere nula también. mira las columnas que le has indicado a pb para incluir en la cláusula where (en las especificaciones de actualización) y asegúrate de que realmente sean columnas que necesitas tener allí.
+1 para marcar "la cadena vacía es nula" ... la corrigió para mí –
Esto también puede suceder cuando tiene dos filas de ventanas de datos que actualizan la misma fila o filas de la base de datos.
(A no tan bueno) Ejemplo:
La tabla tiene ninguna clave principal, pero el datawindow utiliza el DateOfBirth.
Name: Dennis Miller DateOfBirth: 19531103 Vocation: comedian
Name: Kate Capshaw DateOfBirth: 19531103 Vocation: actress
en cuenta que Dennis y Kate tienen el mismo DateOfBirth.
Vamos a suponer que estos cambios se hacen
Name: Mr. Dennis Miller
Name: Ms. Kate Capshaw
Cuando se invoca dw_1.update(), aparece este mensaje:
"Row changed between retrieve and update"
porque cada fila se actualiza dos veces, primero con 'Mr. Dennis Miller y luego con 'Ms. Kate Capshaw '
En este caso, podría agregar [sexo y código postal] (http://epic.org/privacy/reidentification/) a la clave. –
Me doy cuenta de que esta es una vieja pregunta, pero pensé que agregaría mi solución en caso de que ayudara a alguien. En mi caso, la ventana de datos estaba emitiendo una declaración UPDATE
y cuando esa declaración se ejecutó en SQL Management Studio, las columnas devueltas coinciden con lo que debería haberse esperado. Sin embargo, la consulta mostró dos veces dónde (1 fila (s) afectadas).Un activador estaba actualizando una fila no relacionada con la tabla que se está actualizando. Al agregar SET NOCOUNT ON
a ese desencadenador, se produjo 1 instancia en la que (1 fila (s) afectada (s)) y la Fila modificada entre la recuperación y la actualización se resolvió.
Otra posibilidad es que la definición de la columna de la ventana de datos no coincida con la definición de columna de la base de datos.
Ejemplo:
columna se define en la base de datos como char (10)
datawindow está construido con COLUMNA como char (10)
columna se altera para char (20) en la base de datos
los datos se agregan externamente a la columna A con más de 10 caracteres.
DataWindow recuperar trunca a 10 caracteres (con o sin error en función de configuración de la aplicación.)
Eliminar fila/actualización puede producir "Fila cambió entre recuperar y actualizar"
Este comportamiento es monitoreado por las 'Propiedades de actualización' de su ventana de datos y más específicamente por la parte 'Donde cláusula para Actualizar/Eliminar'. Esto controla la cláusula where que será utilizado por Powerbuilder en updating.deleting, como se puede comprobar mediante el evento SQLPreview de su DataWindow:
- columnas clave: solamente las columnas de clave se utilizan en el dónde cláusula. Si usa esto, corre el riesgo de que algunas columnas hayan sido modificadas en otro lugar (no necesariamente por PowerBuilder) entre su recuperación y su actualización. Solo la última actualización permanecerá en el DB. Por supuesto, si las columnas clave se han modificado, recibirá el mensaje "Fila modificada".
- Columnas clave y actualizables: en la parte superior de las columnas clave, agregue todas las columnas actualizables, como se define inmediatamente debajo, en el cuadro 'Columnas actualizables'. Siempre que se haya modificado una columna (de nuevo, no necesariamente usando Powerbuilder), la fila no se recuperará y obtendrá el mensaje 'Cambio de fila'. En muchos casos, esto es excesivo.
- Columnas clave y modificadas: solo las columnas modificadas para la fila específica se agregan a la clave.
Ahora depende de usted elegir uno de estos, dependiendo del contexto específico de su aplicación.
- 1. actualización Panel fila equivocada
- 2. Error de recuperación de memoria
- 3. Grabar el sonido y reproducirlo con cambiada de tono
- 4. Combinar dos repositorios (proyecto original y cambiada proyecto sin historia)
- 5. contraseña cambiada, token de acceso no válido
- 6. SQL actualización de fila TOP1 consulta
- 7. Diferencia entre actualización Mercurial y backout
- 8. Recuperación de datos de fila originales de jqGrid
- 9. Recuperación automática del búfer de error ENSIME
- 10. Recuperación tras error en la aplicación
- 11. Inserción de una fila y la recuperación de la identidad de la nueva fila en SQL Server CE
- 12. Diferencias entre Excepción y Error
- 13. duración y tiempo de recuperación de mysql
- 14. Descargar archivos grandes de Android, con una recuperación por error
- 15. ¿Cómo verifica si una fila está bloqueada para la actualización?
- 16. eclipse 3.7.1 error de actualización
- 17. Actualización de Mac Ports Error
- 18. MySQL Error de actualización 1093
- 19. fossil dvcs diferencia entre los comandos de actualización y pago
- 20. Identificación entre acciones de navegador de actualización y cierre
- 21. MySQL return Deadlock con la fila de inserción y FK está bloqueado 'para la actualización'
- 22. Formato de fila MySQL: ¿diferencia entre fijo y dinámico?
- 23. Recuperación de un error de Datos centrales en saveContext
- 24. Error: Recuperación de mergeinfo no soportado por 'svn: //IP.Address'?
- 25. actualización de la fila en una tabla MySQL
- 26. manifiesto de caché HTML5 y recuperación previa
- 27. Orden de inserción y recuperación de ArrayList
- 28. fila de actualización con datos de otra fila en la misma mesa
- 29. RAND no diferente para cada fila de ACTUALIZACIÓN T-SQL
- 30. fila (s) afectadas en la actualización de mysql con PHP
Ver también [Informe de Terry sobre irregularidades en la base de datos] (http://www.techno-kitten.com/PowerBuilder_Help/Troubleshooting/Database_Irregularities/database_irregularities.html). –