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)
-   -   No actualiza si no salgo y vuelvo a entrar a la aplicación.... (https://www.clubdelphi.com/foros/showthread.php?t=13236)

JuanBCT 11-08-2004 15:35:25

No actualiza si no salgo y vuelvo a entrar a la aplicación....
 
Hola, soy nuevo, tengo un problemita con la actualización de una tabla Paradox, espero explicarme bien.
El tema es así... hice un código que permite cargar 6 líneas de texto para luego imprimir etiquetas en un QuickReport. Una vez que lleno los correspondientes Edits grabo mediante .Post la información la cantidad de veces que necesito (por la cantidad de etiquetas que entran en una hoja).
Cuando hago un preview del Qreport no me muestra nada, pero si salgo de la aplicación y vuelvo a entrar, muestra la información.
Y pasa siempre lo mismo, si vuelvo a cargar datos, me muestra los de la ejecución anterior (deduzco que todavía no actualizó la tabla...)

Este es el código que escribí para el botón "Mostrar":

procedure TEtiqCarga_form.BitBtn1Click(Sender: TObject);
var
I:integer;
begin
I:=0;
Datamodule1.ConcesTMP.close;
Datamodule1.ConcesTMP.EmptyTable;
Datamodule1.ConcesTMP.open;
while I <> 33 do
begin
I:=I+1;
Datamodule1.ConcesTMP.Insert;
Datamodule1.ConcesTMP['aux1_tmp']:=Edit1.Text;
Datamodule1.ConcesTMP['aux2_tmp']:=Edit2.Text;
Datamodule1.ConcesTMP['aux3_tmp']:=Edit3.Text;
Datamodule1.ConcesTMP['aux4_tmp']:=Edit4.Text;
Datamodule1.ConcesTMP['aux5_tmp']:=Edit5.Text;
Datamodule1.ConcesTMP['aux6_tmp']:=Edit6.Text;
Datamodule1.ConcesTMP.Post;
end;
Impre_Etiq2.QuickRep1.preview;
EtiqCarga_form.close;


A alguien se le ocurre algo? Desde ya muchas gracias.....

JuanBCT 11-08-2004 19:34:25

Quisiera agregar también que, para comprobar, en tiempo de ejecución me he metido en la tabla a través del DBD32 y veo que los datos SI están actualizados....
Y por las dudas que tenga algo que ver, los datos en el Qreport los manejo a través de un Query con la sentencia sql "SELECT * from CONCESTMP", los datos los muestro con QRDBText.
Por más vueltas que le doy al asunto, no consigo ver donde está el error.... :confused:

Saul 13-08-2004 09:05:48

Tal vez sea esto
 
Es algo curioso lo que te sucede pero no estaria por demas intentar esto, noto que en tu codigo hace falta que actives la tabla y nada mas la cierras podria ser este el caso por ejemplo yo tengo en mi codigo algo asi para introducir datos en un campo:

procedure TForm4.BitBtn14Click(Sender: TObject);
var
dal0,dal1,dal2,dal3,dal4,dal5:real;
begin
Form3.Table1.Active:=True;
Form3.Table1.Open;
Form3.Table1.Last;
Form3.Table1.append;
.
.
.
. // aqui va codigo
.
.
.

Table1.Post;
Table1.Last;



Bueno eso es lo que pienso en primera instancia no lo he provado directamente en el codigo que enviaste pero ojala y te sirva ponme al tanto si lo lograste ok:
sad9902000@yahoo.es

DarkByte 13-08-2004 12:38:11

Cita:

Empezado por JuanBCT
Código Delphi [-]
   Datamodule1.ConcesTMP.Post;
//----------------------------------
  end;
  Impre_Etiq2.QuickRep1.preview;
  EtiqCarga_form.close;

Donde he puesto los guiones, ¿no debería haber un Refresh de la tabla? :confused: :confused: :confused:

basti 13-08-2004 12:40:45

El problema está en la consulta del informe. Al ser un query no se actualiza automáticamente. Prueba a poner el la propiedad active = false en el query y abrirlo en el código:

Impre_Etiq2.Query1.Active := true;
Impre_Etiq2.QuickRep1.preview;
Impre_Etiq2.Query1.Active := false;

JuanBCT 13-08-2004 14:30:34

Hola! Les quería contar que resolví el problema, aparentemente es como dice basti. Puse en false el query en el quickreport, y lo activé durante la ejecución (también tuve que ponerlo en false al principio porque después de la primera vez que lo hago queda activado y vuelve a ocurrir lo mismo). El código quedó así:

procedure TEtiqCarga_form.BitBtn1Click(Sender: TObject);
var
I:integer;
begin
I:=0;
Impre_Etiq2.Query1.Active:=false;
Datamodule1.ConcesTMP.close;
Datamodule1.ConcesTMP.EmptyTable;
Datamodule1.ConcesTMP.open;
while I <> 33 do
begin
I:=I+1;
Datamodule1.ConcesTMP.Insert;
Datamodule1.ConcesTMP['aux1_tmp']:=Edit1.Text;
Datamodule1.ConcesTMP['aux2_tmp']:=Edit2.Text;
Datamodule1.ConcesTMP['aux3_tmp']:=Edit3.Text;
Datamodule1.ConcesTMP['aux4_tmp']:=Edit4.Text;
Datamodule1.ConcesTMP['aux5_tmp']:=Edit5.Text;
Datamodule1.ConcesTMP['aux6_tmp']:=Edit6.Text;
Datamodule1.ConcesTMP.Post;
end;
Impre_Etiq2.Query1.Active:=true;
Impre_Etiq2.QuickRep1.preview;
EtiqCarga_form.close;


Les agradezco a todos por su ayuda. :)


La franja horaria es GMT +2. Ahora son las 15:52:56.

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