Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Firebird e Interbase (https://www.clubdelphi.com/foros/forumdisplay.php?f=19)
-   -   Problema de Actualización de Queries Firebird (https://www.clubdelphi.com/foros/showthread.php?t=49377)

Cannabis 19-10-2007 19:54:37

Problema de Actualización de Queries Firebird
 
Hola, buen día.

Tengo un problema de actualización.

Utilizo D7, Firebird 2 e IBx.

El asunto es que cuando desde una pc/computadora/ordenador actualizo una tabla por medio de un query, desde otro equipo no se notan los cambios.

Este es un ejemplo deel query que utilizo:
Código Delphi [-]
query1.close;
query1.sql.clear;
query1.sql.add('SELECT .........');
....
....
query1.open;

IBTransaction1.CommitRetaining;

Al salir de la aplicación e ingresar de nuevo, la información es correcta.

Gracias por su ayuda.

Salud.

gluglu 19-10-2007 23:05:20

Se ha hablado bastantes veces en el foro ya acerca de este asunto.

El otro ordenador no verá los cambios hasta que hagas un Refresh del Registro (si es a nivel de registro), o cerrar y volver a abrir la base de datos (si son cambios a nivel de la base de datos completa), o implementes avisos que notifiquen al otro ordenador que se ha realizado un cambio.

Además tendrás que tener la transacción definida de tal manera que permita ver los cambios realizados (en principio, CommitRetaining).

Si buscas en el foro encontrarás varios hilos que tratan el tema.

Cannabis 21-10-2007 05:48:42

Gracias por la respuesta Gluglu.

Expliqué mal la situación:

1.- Los dos equipos están en la misma Ventana/Forma
2.- La información se despliega en un DBGrid
3.- En uno de los equipos se modifican los datos.
4.- En el otro equipo, el usuario sale de la forma y vuelve a entrar y la información no ha cambiado en el DBGrid.

Utilizo queries para actualizar, modificar y eliminar registros.

Cuando el usuario entra a la forma/ventana:
Código Delphi [-]
qry_Libros:= TMDOQuery.Create(nil);
qry_Libros.Database:= dm_Master.FBDB;
qry_Libros.SQL.Add('SELECT * FROM Libros');
qry_Libros.SQL.Add('ORDER BY Libro_Nom');
qry_Libros.Open;
ds_Libros:= TDataSource.Create(nil);
ds_Libros.DataSet:= qry_Libros;

Cuando el usuario sale de la forma/ventana:
Código Delphi [-]
qry_Libros.Close;
qry_Libros.Free;
ds_Libros.Free;

El problema es que a pesar de eliminar el Query cuando el usuario sale de la ventana/forma y de crearlo de nuevo cuando el usuario entra, la información no ha cambiado.

Si el otro usuario sale de la aplicación y vuelve a entrar, los datos aparecen actualizados.

Gracias.

Editado por mal formato de las etiquetas

pvizcay 22-10-2007 03:50:48

te debe faltar el commit del que actualiza en ese caso..
salu2

gluglu 22-10-2007 10:35:32

O como han dicho, te falta el Commit en la transacción, o el nivel de aislamiento de la transacción a la que está asociado el Query no es ReadCommited.

Para comprobarlo, deberás hacer doble click encima del componente de la transacción y comprobar lo que te he dicho.

Gabo 22-10-2007 11:01:15

Revísate éste enlace sobre lo que te ha dicho gluglu...

Cannabis 22-10-2007 12:11:20

Soy nuevo usando Firebird (y al parecer muy tonto) Jamás se me hubiera ocurrido hacer doble clic sobre Ttransaction.

Leí acerca de isolation level y sus opciones. Asunto arreglado.

Gluglu, pvizcay, Gabo, les agredezco su ayuda


Salud.


La franja horaria es GMT +2. Ahora son las 02:23:44.

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