Ojo que el Flush no asegura que se graben los datos a disco, todavia pueden
quedar en la cache de Windows. Se puede:
1. Desactivar la cache de escritura pero todo el rendimiento de Windows va a
sufrir.
2. Usar Flush Force para forzar la escritura a disco, pero esta variante del
Flush solo esta disponible en VFP 9.
Pablo Pioli
----- Original Message -----
From: Rafael Copquin
To: GUFA List Member
Sent: Tuesday, January 05, 2010 6:37 PM
Subject: [GUFA] [spam] problemas con VFP 6.0 con sp5
Puede ser que el cache de Windows esté metido en el asunto.
Después de grabar todo y del END TRANSACTION, mandale la sentencia FLUSH
A lo mejor con eso se te soluciona y se graban todas las tablas.
En cuanto a capturar el error cuando se produce, si los tableupdate te dan .T.,
no sé cómo se podría capturar el error, quizás mandando una serie de selects
para ver si las cosas se grabaron realmente.
Ojo, en este último caso, tenés que sacar las tablas del buffering y mandar el
select sobre las tablas que están en disco. Yo no me acuerdo si hay una
cláusula WITH (BUFFERING=.F.) en VFP 6. En VFP 9 sí la hay, y te permite hacer
los select sobre lo que realmente hay en el disco, sin riesgo de traer datos
del buffer. Por eso, tratá de sacar el buffering después de grabar y mandar el
END TRANSACTION, hacé el select y verificá que se grabó todo. Y volvé a poner
las tablas en buffering antes de grabar. Es un engorro, te va a lentificar todo
el proceso, pero al menos, vas a poder asegurarte de que se grabó todo. Pero
creo que con la sentencia FLUSH el problema se reduce al mínimo.
Rafael Copquin
El 05/01/2010 12:59, arielonix escribió:
Rafael:
Sí, uso transacciones.
Como arreglar el archivo roto lo hago sin problemas, normalmente haciendo
append blank y pack. El tema es como darme cuenta que está roto sin que el
cliente siga generando operaciones sin darse cuenta que algo anda mal.
Mirtha
----- Original Message -----
From: Rafael Copquin
To: GUFA List Member
Sent: Monday, January 04, 2010 2:34 PM
Subject: [GUFA] problemas con VFP 6.0 con sp5
¿Estás usando transacciones?
Rafael Copquin
El 04/01/2010 13:40, arielonix escribió:
Hola a todos, no consigo resolver una situación que sucede de vez en
cuando, pero cuando sucede es un problemón.
Si algún archivo se corrompe por algún motivo (lo veo y parece perfecto)
no se graban los registros sin dar ningún tipo de error. Lo sigo con el
debbuger y hace el append blank, es mas si pongo un reccount() antes y despues
del appe blank da incrementado en uno, como si realmente lo hubiera agregado,
el tableupdate tampoco da ningún error pero en ese archivo dejan de grabarse
los registros con lo cual si es por ej el de facturas aparece una incoherencia
entre la cta cte de un cliente y el listado de facturas pendientes. El archivo
en cuestión queda "freezado" pero en apariencia perfecto. Como capturar esto
desde el sistema, que genere un error y yo pueda descorromper el archivo y no
que me avise el cliente cuando ya muchos registros no fueron agregados?
Saludos a todos y, desde ya, muchas gracias y felicidades
Mirtha
__________ Información de ESET Smart Security, versión de la base de firmas
de virus 4732 (20091231) __________
ESET Smart Security ha comprobado este mensaje.
http://www.eset.com