PDA

Ver la Versión Completa : QReport sin usar BD


yomismo24
12-05-2008, 13:14:00
Hola
tengo una aplicación en la cual quiero generar informes con QReport, el problema es que los datos que quiero meter en el informe no provienen de una base de datos, sino que viene de un fichero de texto por ejemplo.
¿Alguien me puede hechar una mano?
Saludos y gracias!

coso
12-05-2008, 13:23:08
Puedes usar el evento OnPreview y el OnNeedData para ir cargando tus datos. Deberás usar el resto de componentes q no cargan desde tablas (QRLabel, QRMemo,...). Lo que pasa es q si no usas ninguna base de datos, las detail bands no te serviran para nada (no se agrandaran automaticamente, por ejemplo, ni saltaran de pagina solas) por lo que deberas programar tu mismo en los eventos OnPrint, Onpreview, etc....
Es muy faenoso. Te recomiendo que hagas una tabla temporal y en ella cargues los datos, para luego volcarlos de manera convencional a la QReport.
Tambien hay otros componentes por internet para generar informes (EKRTF, por ejemplo)

Venga, espero q te sirva.

Caro
12-05-2008, 14:32:42
Hola yomismo24, para conseguir lo que quieres debes usar el evento OnNeedData del QuickResport.

En el evento BeforePrint del QuickReport, abrimos el archivo para poder leerlo despues.


procedure TForm3.QuickRep1BeforePrint(Sender: TCustomQuickRep;
var PrintReport: Boolean);
begin
AssignFile(Archivo, 'c:\Archivo.txt');
Reset(Archivo);
end;


En el evento OnNeedData del QuickReport recorremos todo el archivo y cada linea que leamos lo asociamos a nuestro QrLabel, donde el QrLabel deberas colocarlo en tu BandaDetail para que se vayan imprimiendo todas las lineas de tu archivo.


procedure TForm3.QuickRep1NeedData(Sender: TObject; var MoreData: Boolean);
var
Linea : string;
begin
MoreData := not eof(Archivo);
if MoreData then
begin
Readln(Archivo, Linea);
QrLabel.caption := Linea;
end;
end;


Y en el evento AfterPrint del QuickReport, cerramos el archivo.


procedure TForm3.QuickRep1AfterPrint(Sender: TObject);
begin
CloseFile(Archivo);
end;


Saluditos

juanelo
12-05-2008, 16:35:44
Creo que si no quieres perder la funcionalidad que te da QReport para el manejo de tablas, pues deberias considerar pasar tus datos de texto, a un ClientDataSet, claro si tu archivo de texto te lo permite.
Saludos

yomismo24
13-05-2008, 09:36:06
Hola
gracias por las respuestas, me han servido de mucha ayuda ya que estaba muy perdido (es lo que tenemos los novatos :D). Al final he optado por la opción de cargar los datos en un ClientDataSet y a partir de ahí generar los informes. Funciona perfectamente, ahora ya solo falta pelearme para darle el formato adecuado jeje.
Muchas gracias y saludos!