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

Responder a