Delphi - problemas con una base de datos

 
Vista:

problemas con una base de datos

Publicado por javier (17 intervenciones) el 08/11/2002 23:59:32
Hola, pues bien para no hacercelas larga, mi problema es el siguiente:
hice una pequeña base de datos, la cual cuenta con tres tablas de datos (PARADOX), todo funciona bien, puedo guardar datos, modificarlos, borrarlo, etc, salgo del programa y vuelvo a entrar, y todo sigue bien, el problema se presenta cuando apagago la Maquina, es decir la reseteo, cuando vuelvo a entrar, todos esos datos que ya estaban se pierden, siempre es lo mismo, me gustaria, ver si alguno me pudiera dar un norte para poder solucionar ese problema.
de antemano gracias por la atencion prestada a este problema que me aqueja.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:problemas con una base de datos

Publicado por Ernesto D'Spirito (706 intervenciones) el 09/11/2002 02:58:25
Lo unico que se me ocurre en virtud de lo que describes es que Windows tenga cacheados los datos y que todavía no se hayan escrito realmente en el archivo cuando reseteas la maquina, y por eso las actualizaciones son visibles antes de eso pero se pierden al resetear el equipo. Prueba apagando el sistema normalmente a ver si al encenderlo de nuevo las actualizaciones están allí o no.

Ernesto D'Spirito
[email protected]
http://www.latiumsoftware.com/es/delphi
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:problemas con una base de datos

Publicado por BigLuis (463 intervenciones) el 09/11/2002 20:16:36
Ernesto tiene razón los datos entán en caché pero no los tiene windows sino que es un mecanisno del BDE. Hay funciones en Delphi para grabar el cache del BDE y asi perder el minimo de datos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:problemas con una base de datos

Publicado por Javier (17 intervenciones) el 09/11/2002 21:27:11
El mismo problem me ocurrió a mi, diferencia: guadré los datos a traves de uns tabla.post luego abrí el database desktop para verificar que los datos estaban y realmente estaban. Cerre y más tarde volví a verificar en la tabla, mismo procedimiento, y BINGO!!! ya no había nada. Que pudo haber pasado. Puedo recuperar esos datos de alguna manera?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:problemas con una base de datos

Publicado por Ernesto D'Spirito (706 intervenciones) el 10/11/2002 20:55:18
Si no fuera un problema con el cache de escritura de Windows como mencioné en mi respuesta anterior (y que se puede desactivar desde Panel de Control / Sistema / Rendimiento / Sistema de Archivos / Solución de Problemas / Deshabilitar la caché de escritura ....), entonces lo único que quedaría sería que la BDE también mantenga su propio cache, y eso también explicaría por qué los datos son visibles desde otra aplicación que acceda a traves de la BDE...

Los datos que se perdieron, se perdieron, lo siento, pero de cara al futuro, yo te sugeriría enmarcar las actualizaciones en una transacción, a ver si eso soluciona el problema (es decir, si eso hace un "flush" al archivo), porque lo más drástico sería tener que cerrar la tabla y volverla a abrir, y no me parece óptimo.

Por curiosidad, ¿están empleando la última versión de la BDE disponible en el sitio de Borland?

Ernesto D'Spirito
[email protected]
http://www.latiumsoftware.com/es/delphi
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Forzar el volcado del cache de escritura de la BDE

Publicado por Ernesto D'Spirito (706 intervenciones) el 15/11/2002 04:31:14
Se puede forzar el volcado del caché de escritura de la BDE para que los datos se graben en el disco. Esto se logra llamando a la función API de la BDE dbiSaveChanges. Por ejemplo se puede hacer inmediatamente después de una actualización:

uses dbiprocs; // o bde

:

Tabla1.Post;
dbiSaveChanges(Tabla1.Handle);

También se podría hacer en el evento AfterPost de la tabla, para así no tener que llamarlo explícitamente cada vez que hacemos un Post:

procedure TForm1.Tabla1AfterPost(DataSet: TDataSet);
begin
dbiSaveChanges(Tabla1.Handle);
end;

La llamada se podría modificar para que fuera genérico, así el procedimiento de evento se podría compartir entre varias tablas:

procedure TForm1.TableAfterPost(DataSet: TDataSet);
begin
dbiSaveChanges((Dataset as TTable).Handle);
end;

Espero que esto resuelva el problema.

Ernesto D'Spirito
http://www.latiumsoftware.com/es
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar