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