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)
-   -   Query no actualiza (https://www.clubdelphi.com/foros/showthread.php?t=66752)

jaimeh 10-03-2010 18:19:23

Query no actualiza
 
Buenas a todo el mundo

A ver si me podéis ayudar en esto. Tengo dos aplicaciones en delphi
que utilizan Firebird y componentes IB. Pués en una de ellas hago
un select del campo x con un ibquery y lo abro, en la otra aplicación hago
un update del mismo campo x de antes y un commit, con un ibquery
también, cerrando esta segunda aplicacion. Y ahora cierro y abro el query
de la primera aplicación, pero no me coge el dato actualizado del campo x.
Sabríais decirme que es lo que esta pasando, que es como si estuviera
leyendo de algún buffer.

Muchas gracias a todos
Saludos

jaimeh 10-03-2010 18:24:43

Un matiz. Me sigue leyendo el antiguo dato del campo x en lugar del nuevo
dato que he actualizado con el update.

afunez2007 10-03-2010 19:36:31

seria bueno q incluyeras un poco del codigo para buscar el problema

asi es un poco dificil ayudar

Saludos

jaimeh 13-03-2010 20:17:44

Buenas a todos,

Gracias por responderme. Voy a poner el código en cuestión.

El siguiente código es de la primera apliación
Código Delphi [-]
   with AutoTablasDM.IBQuery1 do
   begin
     Close;
     Sql.Text := 'Select HORA_SEL from CONFHORA';

     Open;

     first;

     horaSeleccion := FieldByName('HORA_SEL').AsDateTime;
     shoraSeleccion := TimetoStr(horaSeleccion);

     close;


Ahora pongo el update que hace la segunda aplicacion
Código Delphi [-]
     with FTablas2.ibQuery4 do
     begin
        SQL.Text := 'Select * from CONFHORA';
        open;

        cantRegistros := RecordCount;

        close;

        if cantRegistros > 0 then
          SQL.Text := 'Update CONFHORA SET HORA_SEL = ' + horadtp
        else
          SQL.Text := 'Insert into CONFHORA (HORA_SEL) values (' + horadtp + ')';

        ExecSQL;
        Transaction.CommitRetaining;
        close;
     end;

y cierro esta segunda aplicacion

Miro el registro en la tabla y el campo ha cambiado de valor

Ahora, sin haber cerrado la primera aplicación vuelvo
a abrir el query en la primera aplicacion con lo siguiente

[delphi]
with AutoTablasDM.IBQuery1 do
begin
Close;
Sql.Text := 'Select HORA_SEL from CONFHORA';

Open;

first;

horaSeleccion := FieldByName('HORA_SEL').AsDateTime;

close;




[/DELHI]


El problema está en que horaSeleccion tiene el mismo valor
tanto en el primer Select como en este último. Es como si lo
leyese de algun buffer.

A ver si me podéis decir algo.


Saludos a todos

jaimeh 13-03-2010 20:28:13

Ahora bien, si antes del segundo select de la primera aplicación
cierro y abro la base entonces si me lee el valor actualizado,
pero esta no es la cuestion. La cuestion es que debería funcionar
cerrando y abriendo solo el segundo query de la primera aplicación.

Saludos


La franja horaria es GMT +2. Ahora son las 04:07:03.

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