Ayuda error: cursor cannot be modified because it contains an unsaved record

432 views
Skip to first unread message

Jose Luis Barros

unread,
Apr 4, 2016, 8:27:26 PM4/4/16
to Comunidad de Visual Foxpro en Español
Hola a todos

Hace poco migré una gran aplicación desde VFP7 a VFP9. De repente estoy recibiendo el reporte de este error de parte de mis clientes cuando intentan modificar un grid que en VFP7 no generaba ningún problema:

cursor cannot be modified because it contains an unsaved record

Estuve averiguando en Google y al parecer se trata del error 2072. Es un error no documentado que viene desde VFP8 y como es de esperar no será arreglado por Microsoft.

Me está volviendo loco porque no permite modificar datos en uno de los formularios más importantes de la aplicación.

El grid utiliza un cursor creado con CREATE CURSOR. así que todo eso que comentan algunos sitios sobre buffering, readwrite y demás no aplica a mi caso. El error ocurre cuando intento modificar dos campos en el cursor del grid.

¿Alguien sabe algo de este problema o la enfrentado también?

En un foro en inglés me recomiendan volver a crear todo el formulario desde cero pero sería una gran cantidad de trabajo. Es uno de los formularios más complejos y como ese tengo unos 12 más.

Agradezco cualquier sugerencia

José Luis Barros

Carlos Miguel FARIAS

unread,
Apr 5, 2016, 8:30:30 AM4/5/16
to Grupo Fox
El error podría producirse porque vos insertas o estas insertando un registro donde puede faltar un dato (y null no está previsto) y a la vez estas produciendo un desplazamiento dentro del cursor (a otro registro).
Estas editando sobre el grid directamente? Si el usuario esta editando y algún evento desencadenado por el edición intenta mover a otro registro del cursor y hay campos incompletos, podría ser una causa del mensaje.
Pero sin ver como esta definido el cursor, ni como lo asocias al grid, es prácticamente imposible discernir cual puede ser la causa y la probable solución.
Saludos: Miguel, La Pampa (RA)

Larga Vida y Prosperidad
Que la Fuerza los Acompañe

Miguel Canchas

unread,
Apr 5, 2016, 10:32:24 AM4/5/16
to publice...@googlegroups.com

Esto se genera cuando agregas/modificas datos y no (salvas) grabas la información. La solución sería que cuando hagas el select o crees un cursoradapter le hagas un cursorsetprop en 1 para que no agarre ningun buffering..de esa manera no tendras problemas….

 

 

MK

Jose Luis Barros

unread,
Apr 7, 2016, 1:25:49 PM4/7/16
to Comunidad de Visual Foxpro en Español
Gracias por sus respuestas. Como expliqué en mi pregunta inicial, los formularios con este problema venían funcionando bien desde hace casi quince años. Al pasarlos a VFP9 se presenta esta situación.

No creo que tenga que ver con buffering porque utilizo un cursor creado mediante CREATE CURSOR.... Este cursor es el que utilizo para modificar el grid.

Dependiendo de la entrada del usuario, necesito cambiar dos campos en ese grid y cuando intento reemplazar dichos campos es cuando recibo ese mensaje.




francisco prieto

unread,
Apr 7, 2016, 1:44:37 PM4/7/16
to Comunidad de Visual Foxpro en Español
Jose,

Los cursores creados con create cursor también pueden tener buffering. De hecho, muchas veces me valgo de esta característica para hacer formularios.

Si eso te da cuando estas haciendo un reporte. Simplemente antes del reporte pone

CURSORSETPROP("Buffering", 1,"ElAliasDeTuTablaOCursor")

Si eso te da error, significa que realmente tenes el buffering habilitado y de ser así para quitar los datos hace

TABLEREVERT(.t.,"ElAliasDeTuTablaOCursor")

y luego si llama a tu reporte.

Saludos,

Pancho
Córdoba
Argentina

Antonio Meza

unread,
Apr 7, 2016, 1:51:55 PM4/7/16
to Comunidad de Visual Foxpro en Español
Posiblemente tiene activado el 

SET MULTILOCKS ON

y por eso le marca error de buffer.

saludos
Antonio Meza
Reply all
Reply to author
Forward
0 new messages