Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Conexión con bases de datos (https://www.clubdelphi.com/foros/forumdisplay.php?f=2)
-   -   Paradox hace lo que quiere (https://www.clubdelphi.com/foros/showthread.php?t=76410)

Parsec 30-10-2011 19:47:54

Paradox hace lo que quiere
 
Buenas a tod@s,

tengo una aplicación, realizada con Delphi 7 y Paradox y, de vez en cuando, (no tengo ni idea de cuando ni porqué), los datos de las tablas muestran información anterior.
Por ejemplo: inserto registros en una tabla..y está todo correcto; sigo modificando el programa y haciendo pruebas y de repente....me aparecen datos antiguos, he perdido los nuevos.
Y lo más curioso, que me ha hecho tomar la decisión de pediros ayuda, es que he eliminado, a través de un botón del programa todos los registros de una tabla (uno a uno), compruebo que los grids están vacíos y cierro el programa, me salgo del entorno de desarrollo y me voy al Database Desktop, y para mi sorpresa, en las tablas estaban todos los datos. Vuelvo a abrir el proyecto lo ejecuto y han vuelto a aparecer todos los datos en los grids.
¿ Alguien me puede decir que está sucediendo?
Siempre me salgo del programa a través de un botón 'Cerrar' que pone a 'Close' todas las tablas y SQL`s.
A ver si me podéis ayudas porque he invertido muchas horas de trabajo y estoy alarmado.

Saludos

ecfisa 30-10-2011 22:46:22

Hola Parsec.
Cita:

es que he eliminado, a través de un botón del programa todos los registros de una tabla (uno a uno), compruebo que los grids están vacíos y cierro el programa, me salgo del entorno de desarrollo y me voy al Database Desktop, y para mi sorpresa, en las tablas estaban todos los datos. Vuelvo a abrir el proyecto lo ejecuto y han vuelto a aparecer todos los datos en los grids.
A golpe de ojo, la causa de ese comportamiento pareciera ser que tenés activado CachedUpdates y no realizas ApplyUpdates al finalizar con las acciones. Aunque según he leido, a veces Paradox suele dar algunas sorpresas.

No es una sugerencia para que apliques a este proyecto por que veo que lo tenés muy avanzado, pero pegale una leida a este artículo.

Un saludo.

Parsec 31-10-2011 00:28:11

Hola Ecfisa,

antes que nada gracias por tu respuesta...si que tengo activado CachedUpdates y los ApplyUpdates los realizo correctamente, en fin......he descubierto que si hago pruebas (F9) ejecutando el proyecto desde el entorno de desarrollo puede suceder que los datos almacenados, de pronto, sean otros, pero ojo....no justo los anteriores, si no otros que hacía tiempo que los había grabado.......UN PU,TO LIO. Parece que ejecutando el exe no salen estos problemas, eso espero.
Como bien apuntas Interbase es la solución más profesional.
Utilizo Paradox para hacer programitas off-line, fuera de mi entorno de trabajo (normalmente utilizo SQL Server, Navision y otros similares).

Bueno gracias de nuevo.

Saludos

egostar 31-10-2011 03:05:53

Cita:

Empezado por Parsec (Mensaje 417118)
Hola Ecfisa,

antes que nada gracias por tu respuesta...si que tengo activado CachedUpdates y los ApplyUpdates los realizo correctamente, en fin......he descubierto que si hago pruebas (F9) ejecutando el proyecto desde el entorno de desarrollo puede suceder que los datos almacenados, de pronto, sean otros, pero ojo....no justo los anteriores, si no otros que hacía tiempo que los había grabado.......UN PU,TO LIO. Parece que ejecutando el exe no salen estos problemas, eso espero.
Como bien apuntas Interbase es la solución más profesional.
Utilizo Paradox para hacer programitas off-line, fuera de mi entorno de trabajo (normalmente utilizo SQL Server, Navision y otros similares).

Bueno gracias de nuevo.

Saludos

Una pregunta, en tiempo de diseño ¿ tienes tus componentes de tablas, queries y base de datos en open, active = True ?

Saludos

newtron 31-10-2011 10:36:30

Hola.

¿Estás usando el bde para acceder a las tablas paradox?, porque en ese caso puede ser configuración del bde.

Saludos

Parsec 31-10-2011 13:56:45

Cita:

Una pregunta, en tiempo de diseño ¿ tienes tus componentes de tablas, queries y base de datos en open, active = True ? ¿Estás usando el bde para acceder a las tablas paradox?, porque en ese caso puede ser configuración del bde.
Hola Newtron,

si estoy utilizando BDE para acceder a Paradox y están Active=True. ¿Es este el problema?

Saludos

ecfisa 31-10-2011 14:24:45

Hola Parsec.

Leyendo un poco sobre las posibles causas, encontré en este artículo, un parrafo que podría tener relación:
Cita:

Asignar en valor TRUE a la propiedad LOCAL SHARE localizada en el DBEADMIN puede evitar problemas de pérdidas de registros cuando nuestra aplicación trabaja en modo multiusuario
Cuando LOCAL SHARE es igual a TRUE el BDE no utiliza cache de escritura. Si LOCAL SHARE es iguala a FALSE en un ambiente multiusuario puede inducir a errores de pérdida de registros.
Revisalo por las dudas...

Un saludo.

newtron 31-10-2011 16:50:41

Cita:

Empezado por ecfisa (Mensaje 417172)
Hola Parsec.

Leyendo un poco sobre las posibles causas, encontré en este artículo, un parrafo que podría tener relación:


Revisalo por las dudas...

Un saludo.

Nuestro amigo ecfisa se me ha adelantado. :)

Parsec 31-10-2011 18:53:11

Gracias Ecfisa.
Gracias Newtron.

Saludos

Parsec 03-11-2011 18:54:52

Hola,

estoy intentando cambiar este valor:
Cita:

Asignar en valor TRUE a la propiedad LOCAL SHARE localizada en el DBEADMIN puede evitar problemas de pérdidas de registros cuando nuestra aplicación trabaja en modo multiusuario
Cuando LOCAL SHARE es igual a TRUE el BDE no utiliza cache de escritura. Si LOCAL SHARE es iguala a FALSE en un ambiente multiusuario puede inducir a errores de pérdida de registros.
pero cuando aplico los cambios se queda off-line y me dice que IDAPI32.CFG no responde.
He reinstalado dos veces delphi y no se que hacer sigo perdiendo datos en las tablas (parece surrealista porque igual me presentan datos del día anterior o me aparecen registros que estaban anulados).
Si se os ocurre alguna cosa notificármelo.

Gracias

newtron 03-11-2011 19:00:08

Hola.

Mientras no cambies ese valor seguirás teniendo problemas. Mira a ver si es algún tema de permisos del sistema pero debes de poner esa variable a TRUE.

Saludos

Lepe 04-11-2011 11:16:06

¿haces un table.flushBuffers en el afterPost de las tablas?... deberías.

Parsec 04-11-2011 17:27:16

Hola a tod@s,

pude poner a TRUE el LOCAL SHARE y parece que va bien.

Cita:

Lepe:
¿haces un table.flushBuffers en el afterPost de las tablas?... deberías.
No la he utilizado nunca, me tomo nota y si veo que hace algo raro la pruebo.

Gracias a todos

newtron 04-11-2011 19:08:26

Cita:

Empezado por Parsec (Mensaje 417618)
Hola a tod@s,

pude poner a TRUE el LOCAL SHARE y parece que va bien.

Oh.... ¿dudabas de mi y de mi amigo ecfisa? :D

Lepe 04-11-2011 22:50:32

lo del local share creo recordar que era cuando se estaba en red, pero dado que hace mucho que no uso paradox, preferí no hablar de ello.

Lo del flushbuffers, es si usas un TTable, porque los datos no se guardan, sino que quedan en un buffer y hay que vaciarlos manualmente. Si no lo haces y hay un corte de luz (por ejemplo) perderías todos los datos de esa sesión. Obviamente no es de recibo tal conducta.

El tema de recordcount, bueno, casimiro habla de sistemas gestores de Bases de datos, digo, bases de datos cliente servidor donde esa conducta que dice es normal. Sin embargo, Paradox con el BDE es una base de datos de escritorio y el término eficiencia no va con ellos, por eso el recordcount siempre te devolverá el valor correcto, aún cuando tengas 300.000 registros, Paradox como buen contable, contará todos y cada uno de ellos de la forma más ineficiente posible y te devolverá ese valor en RecordCount. Pido perdón, la ironía no es lo mío... :p

Antes de que me preguntes...Sí, yo también empecé a programar con BBDD usando Paradox, digo Parados, digo Parado, digo Para...fastidiarme las neuronas; después lo pasé en Red y después cambié a Firebird. Esto último es lo mejor que hice, pero bueno, por algo hay que empezar.

Saludos, suerte y que no se corte la luz nunca jamás con Paradox: "table header is corrupt, ouch!!" eso ni con Utils32 se arreglaba...:D


La franja horaria es GMT +2. Ahora son las 21:18:31.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi