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 <mailto:[email protected]>
*To:* GUFA List Member <mailto:[email protected]>
*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