Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Actualizar datos en un Qreport (https://www.clubdelphi.com/foros/showthread.php?t=37735)

royrogers84 21-11-2006 17:18:58

Actualizar datos en un Qreport
 
El problema es el siguiente: Almaceno datos en una tabla, tengo una opcion en mi aplicacion que muestra el reporte de los datos almacenado en la tabla (nombre, direccion, etc), la falla esta es que el reporte no me actualiza los datos que guardo en tiempo de ejecucion, es decir, el programa en tiempo de ejecucion no actualiza el reporte. ¿como podrìa solucinarlo?

Caral 21-11-2006 17:29:12

Hola royrogers84
Cierra y abre la tabla antes de enseñar el reporte.
Saludos

royrogers84 21-11-2006 17:39:43

Gracias, eso era lo que me faltaba..

BlueSteel 21-11-2006 21:53:37

a mi tambien me pasa algo parecido...
 
hola.. a mi tambien me pasa algo parecido... para que me entiendan, tengo lo sigte;

el form de tipo data mudule llamado Datos, en donde tengo un IBDatabase, 6 IBQuerry y 6 IBTransacction.

en el Form Ordenes, genero un listado de Ordenes, lo que funciona muy bien...

cuando selecciono un registro de Orden... este se puede imprimir, al presionar el boton imprimir se ejecuta el sgte código:

Código Delphi [-]
     OCompra.Num_Orden := Datos.IBQ_Select['Ord_Numero'];
     OCompra.Orden.Preview;

el Formulario OCompra (que tiene el Informe en QReport) ejecuta lo sgte:

bueno, tiene

banda title proceso before
Código Delphi [-]
procedure TOCompra.TitleBand1BeforePrint(Sender: TQRCustomBand;
  var PrintBand: Boolean);
begin
     Datos.IBQ_Orden.SQL.Clear;
     Datos.IBQ_Orden.SQL.Add('Select * From "Orden","Proveedor"');
     Datos.IBQ_Orden.SQL.Add('Where "Orden"."Pro_Rut"="Proveedor"."Pro_Rut"');
     Datos.IBQ_Orden.SQL.Add('And "Ord_Numero"=:Var1');
     Datos.IBQ_Orden.Params[0].AsString := Num_Orden;
     Datos.IBQ_Orden.Open;
     Datos.IBQ_Cargos.SQL.Clear;
     Datos.IBQ_Cargos.SQL.Add('Select * From "Cargos","Centro"');
     Datos.IBQ_Cargos.SQL.Add('Where "Cargos"."Cen_Codigo"="Centro"."Cen_Codigo"');
     Datos.IBQ_Cargos.SQL.Add('And "Ord_Numero"=:Var1');
     Datos.IBQ_Cargos.Params[0].AsString := Num_Orden;
     Datos.IBQ_Cargos.Open;
     Datos.IBQ_Cargos.First;
     sCargos.Lines.Clear;
     While Datos.IBQ_Cargos.Eof = False Do
     Begin
          sCargos.Lines.Add(Concat(Datos.IBQ_Cargos['Cen_Detalle'],' $',FormatFloat('#',Datos.IBQ_Cargos['Car_Monto'])));
          Datos.IBQ_Cargos.Next;
     End;
     sRaz.Caption    := Datos.IBQ_Orden['Pro_Razon'];
     sAte.Caption    := Datos.IBQ_Orden['Ord_Atencion'];
     sDir.Caption    := Concat(Datos.IBQ_Orden['Pro_Direccion'],' ',Datos.IBQ_Orden['Pro_Comuna']);
     sSol.Caption    := Datos.IBQ_Orden['Ord_Solicitado'];
     sPag.Caption    := 'CONTADO - 30 DÍAS';
     sFax.Caption    := Datos.IBQ_Orden['Pro_Fax'];
     sOrden.Caption  := FormatFloat('000#',Datos.IBQ_Orden['Ord_Numero']);
     sFec.Caption    := Concat('Talcahuano, ', FormatDateTime('dd "de" mmmm "de" yyyy', Datos.IBQ_Orden['Ord_Fecha']));
     sObs.Caption    := Datos.IBQ_Orden['Ord_Observacion'];
     sDescto.Caption := FormatFloat('0,',Datos.IBQ_Orden['Ord_Descuento']);
     sNeto.Caption   := FormatFloat('#,',Datos.IBQ_Orden['Ord_Total_Neto']);
     sIVa.Caption    := FormatFloat('0,',Datos.IBQ_Orden['Ord_Iva']);
     sTotal.Caption  := FormatFloat('#,',Datos.IBQ_Orden['Ord_Total']);
end;

proceso After - Aqui es donde selecciono todos los registros que deben mostrarse en la banda detail
Código Delphi [-]
procedure TOCompra.TitleBand1AfterPrint(Sender: TQRCustomBand;
  BandPrinted: Boolean);
begin
     With Datos Do
     Begin
          IBQ_Items.Close;
          IBQ_Items.SQL.Clear;
          IBQ_Items.SQL.Add('Select * From "DOrden"');
          IBQ_Items.SQL.Add('Where "Ord_Numero"=:Var1');
          IBQ_Items.Params[0].AsString := Num_Orden;
          IBQ_Items.Open;
          IBQ_Items.First;
     End;
end;

banda detail / proceso Before
Código Delphi [-]
procedure TOCompra.DetailBand1BeforePrint(Sender: TQRCustomBand;
  var PrintBand: Boolean);
begin
     sCtd.Caption  := FormatFloat('#,',Datos.IBQ_Items['Dor_Cantidad']);
     sDes.Caption  := Datos.IBQ_Items['Dor_Descripcion'];
     sUnit.Caption := FormatFloat('#,',Datos.IBQ_Items['Dor_Valor_Unitario']);
     sTot.Caption  := FormatFloat('#,',Datos.IBQ_Items['Dor_Valor_Total']);
end;

bueno, y eso es todo el código...

mi problema es que cuando muestro el informe por primera vez la banda detail solo muestra el primer registro, pero si salgo e ingreso nuevamente (sin salir del sistema), me muestra todo... trate de cambiar los IBQuerry e IBTransacction al Formulario ... pero sucede lo mismo....

a alguien se le ocurre que puede ser :confused: :p ;)

Caral 21-11-2006 22:06:13

Hola BlueSteel
No me hagas mucho caso, pero si quieres lo pruebas.
Tengo entendido que cuando se produce este error, osea que solo muestra el primer registro tiene que ver con el dataset del qReport, este tiene que incluir el nombre del query o tabla que estes usando, en tu caso me parece que es IBQ_Orden.
Saludos

BlueSteel 21-11-2006 23:37:00

Hola Caral

En realidad, si lo tengo vinculado al dataset... lo puse al IBQ_Items (que corresponde a los datos que se imprimen en el Detail), tambien lo vincule al IBQ_Orden.. pero no pasa nada

Caral 21-11-2006 23:46:09

Hola
Se me escapa de las manos, la verdad, no se que te este sucediendo, cuando me ha sucedido algo similar es por esa razon.
Saludos


La franja horaria es GMT +2. Ahora son las 00:18:22.

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