PDA

Ver la Versión Completa : Imprimir un DataSet


Osorio
08-02-2005, 00:58:51
Hola todos,

He creado en mi aplicacion una ventana donde se pueda escribir una consulta SQL (solo consultas, nada de INSERT ni UPDATE) y ver el resultado en un DBGRID. Una vez los datos alli los envio a excel, unas negrillas, unos colorcitos y se imprime. (eso me sirve mientras genero el reporte en QReport)


Pero, no es mejor si los tiro de una vez a la impresora sin tener que estar enviando a excel?. Bueno ya se que es mejor :D , pero no se por donde empezar dicha tarea :confused: , por que luego quiero que me sirva para cualquier conjunto de datos sin importar la estructura (numero y tipo de campos del mismo).

saludos,

Neftali [Germán.Estévez]
08-02-2005, 12:11:16
El problema es que si quieres poner colores y demás, siempre tendrás que generar el fichero (para poder darle formato), ya sea en Excel o cualquier otro tipo. No puedes hacer eso directamente sobre la impresora. Lo que sí puedes hacer es generar ese fichero e imprimirlo sin que se habra Excel o como mínimo que se abra minimizado o invisible.

Lepe
08-02-2005, 12:12:13
echale un vistazo a:GRIDLIST.ZIP de la página http://www.qusoft.com/stanlegacy.html

Eso sí, olvidate de hacer listados complejos agrupando por campos y demás, esto es un listado simple.

Saludos

Lepe
08-02-2005, 12:44:23
Ese ejemplo es dificil de digerir, así que te he preparado algo más simple. Necesitas un TTable.


procedure TForm1.Button2Click(Sender: TObject);
var q:TQuickRep;
listaCampos:TStringList;
i:Integer;
begin
listaCampos:= TStringList.Create;
try

// lista de campos a incluir en el informe, por defecto, todos.
for i:=0 to Table1.Fields.Count-1 do
listaCampos.Add(Table1.Fields[i].FieldName);
Table1.Open;
q:=nil;
QRCreateList(tcustomquickrep(q),nil,Table1,'Listado Principal',listaCampos);
q.Previewmodal;

finally
listaCampos.Free;
FreeAndNil(q);
end;
end;

los uses que necesitarás, tarde o temprano, son : quickrpt, qrextra, qrprntr, qrctrls;

Neftali [Germán.Estévez]
08-02-2005, 13:55:15
Otra opción es mirar éste hilo (http://www.clubdelphi.com/foros/showthread.php?t=18242)

Los componentes tb te pueden servir a tí.

Osorio
08-02-2005, 15:35:39
Buena alternativa la de Lepe, la estoy usando por ahora y me esta dando resultado.

Gracias a todos,

Saludos :cool: :cool:

Lepe
08-02-2005, 16:00:46
Es muy importante que veas con tranquilidad las necesidades que vas a tener, ya que esa función es muy poderosa.... ya ves, una simple llamada y tienes el listado. Por contra, si necesitas agregarle colores al listado, por ejemplo, la cosa se complica mucho para tí.

Para que tengas una idea, lo que hace esa función es contruir el informe mediante una banda detalle y componentes del tipo TQRExpr, en su propiedad Expression, pone el nombre del campo.

Añadiendo colores, o formatos de números:
Una vez construido el listado, pero justo antes de hacer el PreviewModal, es donde tendrías que recorrer la banda detalle (por código), mirando si el Componente es un TQRExpr, despues,miras la propiedad Expression para ver si es el campo que quieres Modificar, por último, modificas la propiedad en cuestión.

Un ejemplo práctico para cambiar el número de página: (sabiendo que QRCreateList solo añade un control en el pie de pagina)

with TQRExpr(q.Bands.PageFooterBand.Controls[0]) do
expression := QuotedStr('Pág. ') + ' +PAGENUMBER';
// PAGENUMBER es una variable que entiende QUICKREPORTS

Saludos