PDA

Ver la Versión Completa : Impresion en delphi


luketas
31-08-2007, 18:22:12
Hola Amigos, necesito que me ayuden en lo siguiente.... tengo que sacar un reporte, el problema es que tengo los datos que necesito imprimir en un array dinamico, ejecuto un for y voy tirando los datos en el subdetail campo por campo, el problema es que no se como hacer para que la banda desarrolle otra linea por cada registro del array, se q cuando lo hago desde un data set la grilla se expande sola.... mil gracias por su ayuda!!!:(

ElKurgan
31-08-2007, 20:35:32
No explicas en que gestor de informes estás generando el report. Si estás usando QuickReport, entonces la solución pasa por capturar el evento "OnNeedData". Desconozco cómo pueden realizar esto otras herramientas generadoras, lo siento.

Un saludo

luketas
31-08-2007, 20:48:14
Hola!! es verdad no especifiique nada, estoy usando delphi 6 y trabajo con quickrep... me podrias explicar como capturo y uso el evento onNeedData? Gracias KURGAN por todo!

fjcg02
31-08-2007, 22:42:13
Con el ejemplo de QuickReport te viene un caso específico de NeedData.
El ejemplo está en \directorio de dephi\Demos\Quickrpt\Q3

El archivo es concretamente needdata.pas

Revisalo y nos cuentas.

Saludos

luketas
06-09-2007, 18:13:45
...estoy usando el evento onneeddata como recomendaron solo que cuando previsualizo la impresion los registros no muestran nada, y si hago un paso a paso del programa, al evento needdata nunca ingresa! de que me estoy olvidando?? muchas gracias por su ayuda!

eduarcol
06-09-2007, 18:37:37
te recomendaria que usaras tablas de memorias, hacen la vida mas sencilla, en lugar de vaciarlo al detail lo vacias a la tabla

luketas
07-09-2007, 15:55:39
Aca les muestro los procedimientos y su codigo... no entiendo porque el programa no ingresa al need data, que estoy haciendo mal? mire un par de ejemplos y los resuelven de la manera q lo hago, pero al no ingresar al procedim, ovbiamente los campos se imprimen vacios, me pueden dar algun otro ejemplo?

procedure TRptAsistHsSuplementarias.QuickRepNeedData(Sender: TObject;
var MoreData: Boolean);
begin
QrlNombre.Caption := FrmVentImpAsist.arrayExtension[i].ApeNombre;
QrlNroLeg.Caption := IntToStr(FrmVentImpAsist.arrayExtension[i].NroLeg);
QrlExtJor.Caption := FrmVentImpAsist.arrayExtension[i].hsExtJor;
QrlNombre2.Caption := FrmVentImpAsist.arrayExtension[i].ApeNombre;
QrlNroLeg2.Caption := IntToStr(FrmVentImpAsist.arrayExtension[i].NroLeg);
Qrl50.Caption := FrmVentImpAsist.arrayExtension[i].hs50;
Qrl100.Caption := FrmVentImpAsist.arrayExtension[i].hs100;
MoreData:= i <= FrmVentImpAsist.cantRegArray-1;
i:= i+1;
end;
procedure TRptAsistHsSuplementarias.QuickRepStartPage(
Sender: TCustomQuickRep);
begin
i:=0;
end;

hmrvivas
09-09-2007, 15:22:01
como tu reporte es manual, debes activar primero que todo el evento BeforePrint, y en el inicias tu variable i y ademas estableces la variable printReport = true;

Luego en tu reporte colocas una banda Detail.
En la banda Detail colocas tus QRLabel.

El evento OnNeedData lo dejas como estas, teniendo en cuenta que el moredata debe actualizarse en cada registro que ingresas a la banda detail.

Espero te sirva esto, yo lo hago y me funciona.

luketas
10-09-2007, 19:30:47
Bueno! ufff despues de tanto luchar con los reportes llegue a la conclusion de que lo que yo queria hacer no se puede! osea imprimir en una misma hoja registros de un data set con registros de un arreglo que trabajo en forma paralela. Probe de mil maneras y el unico resultado posible fue crear otro reporte solo para los datos del arreglo, eso si con la gran ayuda que me dieron los que participaron en el tema! desde ya muchas gracias a todos! y si tienen algo q aclarar al respecto bienbenido sea!! saludos!!