PDA

Ver la Versión Completa : Duda con Qreport


joanajj
20-07-2008, 20:16:43
Buenas a todos!!!

Tengo la siguiente cuestión para ver si alguién me puede ayudar...

En un quick report, para imprimir una serie de datos en una banda detalle basta con colocar los qrdbtext,apuntar cada uno a un canmpo y filtrar los datos a mostrar, así que si quiero mostrar x registros lo puedo hacer perfectamente. Hasta ahí todo bien...
La duda me surge: si quisiera mostrar unos datos en una banda detail sin que estos pertenezcan a una base de datos... Por ejemplo mostrar los números del uno al diez.
1
2
3
4
....

intento hacerlo usando el befor print del qrband y solo me muestra el último número de un bucle del 1 al 10... es decir solo muestra el 10, y me interesa que los muestre todos,desde el 1 al 10, no sé si me he expresado bien...
La historia es que debo de hacer una serie de cálculos, que puede dar como resultado 10,20,30 etc resultados y quiero que me los muestre en un report, para poder imprimirlos.

Muchas gracias...

coso
20-07-2008, 20:30:16
Hola, puedes probar el evento OnNeedData

marcoszorrilla
20-07-2008, 21:42:18
procedure TfrmNeedData.FormCreate(Sender: TObject);
var
i: integer;
begin
SomeList := TStringlist.Create;

for i := 0 to 500 do
SomeList.Add('Line ' + IntToStr(i));
end;

procedure TfrmNeedData.QuickRep1BeforePrint(Sender: TCustomQuickRep;
var PrintReport: Boolean);
begin
// You must reset your data in the BeforePrint event
// or when you print from the preview, the report will
// start with the last value(s)
CurrentIndex := 0;
end;

procedure TfrmNeedData.QuickRep1NeedData(Sender: TObject;
var MoreData: Boolean);
begin
// If MoreData is true, then QuickReport will print
// another detail band. When you set it to false,
// the report is done.

MoreData := (CurrentIndex < SomeList.Count);

if MoreData then
begin
QRLabel1.Caption := SomeList[CurrentIndex];

// Here's how to set the progress bar
QuickRep1.QRPrinter.Progress := (Longint(CurrentIndex) * 100) div SomeList.Count;
end
else
QuickRep1.QRPrinter.Progress := 100;

Inc(CurrentIndex);
end;


Este ejemplo lo trae el propio QuickReport en la carpeta Demos de Delphi.

Un Saludo.

joanajj
20-07-2008, 22:24:56
gracias por vuestra respuestas...

he encontrado un par de soluciones más que me pueden ayudar son:

usar un qrstringlist o una tabla virtual... con esto también me vale.


muchas gracias...