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)
-   -   Leer actualizaciones realizada en una tabla por una aplicación Clippper. (https://www.clubdelphi.com/foros/showthread.php?t=52261)

jplj 15-01-2008 21:26:49

Leer actualizaciones realizada en una tabla por una aplicación Clippper.
 
Hola:

Tengo una aplicación en Clipper que trabaja con una tablas en DBase III con índices NTX.

He creado una aplicación en Delphi desde la que con un TQuery sólo leo información de esas tablas y la almaceno en memoria, después desconecto la consulta.

Todo funciona correctamente hasta que desde la aplicación en Clipper realizo cualquier modificación en cualquier tabla (inserción, edición o eliminación), la operación se realiza correctamente, pero no es "visible" para la aplicación en Delphi hasta que cierro la aplicación hecha en Clipper.
La aplicación hecha en Clipper no realiza ninguna operación especial al cerrarse. Cuenta con una opción que permite reindexar, la he probado pero las modificaciones continúan "invisibles" para la aplicación en Delphi.

Una vez cerrada la hecha en Clipper, todas la modificaciones que hemos realizados desde ella son visibles -al relanzar la consulta- en la de Delphi.

Muchas gracias de antemano.
Juan P.

marcoszorrilla 15-01-2008 21:32:30

En la aplicación Clipper vacias la memoria intermedia despues de una grabración modificación?

MiTabla->(DbCommit())

Un Saludo.

jplj 15-01-2008 21:46:21

Ahora no estoy seguro.

Mañana veré el código y te contestaré.

No ha llegado mañana pero recordé unas viejas copias de código que tenía por casa.

Al borrar un registros sí se vacía la memoria intermedia, no es así al modificar o insertar.

AzidRain 16-01-2008 05:15:07

Tu mismo dices la respuesta: "desconecto la consulta". Para ver los cambios necesitas hacer un refresh o bien cerrar y abrir (mas bien esto último) el query de Delphi para que veas los cambios, lo puedes poner en un boton que diga "refrescar" o bien hacer el refresco cada x segundos mediante un TTimer... Este caso es común así que no te preocupes.

jplj 16-01-2008 17:07:47

Quizá no expresado correctamente el proceso:

1.- Aplicación Delphi - Proceso de lectura.

.- Abre la consulta.
.- Recorre los registros y almacena la información en memoria.
.- Cierra la consulta.


2.- Aplicación Clipper - Proceso de modificación.

3.- Aplicación Delphi - Proceso de lectura : el mismo del punto 1. Los datos modificados no son visibles.

4.- Cierro Aplicación Clipper.

5.- Aplicación Delphi - Proceso de lectura: el mismo del punto 1. Ahora si son visibles los datos modificados por la aplicación clipper en el paso 2.

AzidRain 16-01-2008 17:22:57

Ahora sí te entendí...deja buscar entre mis cosas porque hace años me pasaba lo mismo y finalmente lo resolví pero no recuerdo como iba la cosa...Yo en mis épocas de DOS programaba Clipper y después pase a Delphi...de ahí mi problema de ese entonces.

marcoszorrilla 16-01-2008 19:37:25

Reitero lo dicho:
Aplicación Clipper: hacer un Tabla->(DbCommit())

despues de la grabación o cambio.

Aplicación Delphi:
Con un Timer reabrir la consulta o tabla cada x segundos para que se entere del cambio si se ha producidol

Un Saludo.

jplj 17-01-2008 10:11:56

Hola:

He logrado desenterrar del "archivo" la Guía de Programación y Utilidades de CA-Clipper.

En relación a Visibilidad de la Actualización en la página 4-17 dice:
Cita:

  • DOS/otras aplicaciones: No se garantiza que aparezcan la actualización hasta que se cierre el fichero o se ejecute una de las siguientes instrucciones: UNLOCK, RLOKC() o COMMIT.
  • Disco: No se garantiza que la actualización aparezca en disco hasta que se ejecute un COMMINT o se cierre el fichero.

Por lo que la solución pasa por modificar la aplicación Clipper.

Muchas gracias por vuestras respuestas.


La franja horaria es GMT +2. Ahora son las 03:18:16.

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