Vaciar cache de las tablas/querys
Hola a todos,
Me encuentro ante un problema de perdida de datos, y se me ocurre que puede ser por cortes de energia o cuelgues. Para vaciar la cache al disco, he puesto en el evento afterpost de cada tabla el correspondiente flushbuffers. Parece que esto funciona Lo que no se es como vaciar la cache cuando hago un INSERT o UPDATE mediante una query??? Creo que el problema proviene de estos updates, y lo que me gustaria es que los cambios se grabaran a disco inmediatamente despues de ejecutar el sql Una ayuda, por favoooooooorrrrrr Voy a intentar aclarar un poco mas la pregunta, y exponer las pruebas que hago: La base de datos es paradox. Utilizo un TQuery con: AutoRefresh:=false CachedUpdates:=false; RequestLive:=false; Con ese Tquery hago un INSERT en el registro A y compruebo que los datos estan en la tabla. Ahora mato el proceso (CTRL+ALT+SUP) y vuelvo a abrir el programa, y el registro A existe y tiene los datos que puse. Hago otro INSERT en el registro B, y compruebo que tiene datos correctos. Hasta ahora A yB estan en la tabla. Provoco un corte de corriente (tiro del cable) y cuando reinicio reparo los "index corrupt" que aparecen. Al arrancar el programa veo que ni A ni B estan en la tabla :confused: Sigo probando, cambio el codigo y pongo query.applyupdates y me dice que no esta en modo de edicion/insercion. Hago otro cambio, y cierro y abro la tabla a la que se refiere el Tquery justo despues de hacer la insercion. Este cambio parece que funciona, porque desconecto el ordenador despues de grabar un nuevo registro C y cuando reinicio el registro C esta en la tabla. De A y B jamas se volvio a saber. Y aqui es donde ya no entiendo nada...... Que tiene que ver un Tquery con un Ttable, si uno lo utilizo para una cosa, y el otro para otra completamente distinta y en procedimientos separados ??? Ademas, si estan relacionados, en el afterpost del Ttable tengo un flushbuffers, que deberia descargar la cache a disco. La solucion chapucera es cerrar y abrir la tabla, pero no me parece muy logica, seguro que hay otra cosa.... Y aun otra prueba mas: Hago un INSERT sobre otra tabla (de la cual no tengo un Ttable), y provoco el apagon, y al reiniciar el registro añadido ESTA EN LA TABLA. ¿¿ Hay algun tipo de conflicto cuando hay un Tquery y un Ttable abierto ??? Gracias por tomarse el tiempo de leer hasta aqui. |
La franja horaria es GMT +2. Ahora son las 02:37:07. |
Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi