PDA

Ver la Versión Completa : La mejor manera de hacer reportes con Qreport


Coco_jac
22-04-2006, 20:41:42
Hola amigos. tengo una duda, me pueden aconsejar la mejor manera de realizar reportes con Qreport, miren yo los hago asi, y pienso que no es la correcta asi que recurro a ustedes. Cuando necesito un reporte :
Creo un formulario y jalo el objeto QuickRep,y lo diseño y todo lo demas.Cuando necesito otro reporte repito lo mismo mencionado. Estaba pensando en una mejor forma de hacer esto , ya que asi me llenaria de formularios para cada reporte, y mas grade se haria mi aplicacion.
Para asignar la data al reporte utilizo un TClienDataSet, de la cual jalo los registros que esta contenga,claro en tiempo de ejecucion.

Espero sus comentarios amigos.

Lepe
23-04-2006, 12:21:34
File --> New --> Other --> QuicReport.

Con eso ya no necesitas un formulario base para cada QuickReport. Directamente creas el TQuickReport (igual que creas el formulario en tiempo de ejecución) y despues lo llamas con un Preview. Siempre tienes el evento BandBeforePrint para hacer invisible un componente.... por ejemplo.

Para listados "automaticos" desde un grid /consulta / TTable, mira el qrCreateList (http://www.clubdelphi.com/foros/showthread.php?t=18282&highlight=qrcreatelist)

Saludos

Coco_jac
24-04-2006, 04:50:14
Hola lepe y gracias por responder. Tengo una duda con respecto a lo que mencionas, bueno primeramente no lo eh probado aun , pero quiero saber, como personalizaria mi reporte de esta manera cuando por ejemplo quiero colocar un campo mas a la derecha o mas arriba, o ponerla negrita,como haria eso, bueno tal vez no entendi bien el ejemplo que pones , porque todavia no lo eh probado, ya que no tengo mi PC aqui.

Espero tus comentarios

Gracias

Lepe
24-04-2006, 10:36:42
Si quieres ponerlo bonito, hazlo como hasta ahora.

Si quieres listados simples, rescatando únicamente lo que hay en la consulta, usa el qrCreateList.

Saludos

Coco_jac
24-04-2006, 15:32:48
Hola Lepe, una consulta, tratare de hacerlo como hasta ahora ya que el usuario pide poner por ejemplo el logo de la empresa, entre otras cosas que inplican la visualiazcion de los reportes,pero quiero evitar crear formularios para cada reporte que haga, asi que estaba pensando dentro de un mismo formulario pegar los TQuickRep y ponerlos a invisibles en un inicio y visibles cuando los necesite, pero como poner invisibles los TQuickRep ? y visibles cuando los requiera ??

Espero sus comentarios.

Gracias.

Lepe
24-04-2006, 16:54:54
Poner varios quickreports dentro de un mismo form es viable, pero creo que no tiene sentido, me explico:

Colocas... digamos 5 QuickReports dentro de un mismo Form, en tiempo de ejecución tienes que crear ese Form (para poder acceder al QuickReport) y te encuentras con varios detalles:

- Al crearse el Form, se crean los 5 QuickReports, aunque solo vayas a usar 1, por tanto, tardará en crearse 5 veces más.

- El usuario puede tener la ventana de clientes y la de facturas abiertas. Cada vez que vayas a imprimir, tienes que mirar si el Form de los quickreports está creado o no, y además sincronizarlo para no liberar el Form mientras se esté imprimiendo desde otro sitio de tu programa.

- Un QuickReports, teniendo una relación Maestro-Detalle necesitará 2 Datasources, 2 TQuerys, etc. Si tenemos 5 QuickReports dentro del mismo Form, estamos liando las cosas aún más.


¿Por qué complicarnos tanto la vida?

File -> New -> Other ->QuickReport

Al igual que a todos los forms le ponemos el prefijo "Frm" delante de su nombre, con los QuickReports le ponemos el "Qr" delante; de esta forma en Delphi, al ver todos los forms que tenemos, veremos los Qr agrupados.

Cada ventana creará su propio TQuickReports, abrirá las consultas y lo cerrará liberando la memoria. No hay conflictos por ningún sitio.

Si Dentro del QuickReports tienes una imagen y no quieres que se imprima, usa el evento BeforePrint de la banda o del propio TqrImage. Allí puedes poner su propiedad Enabled a false, es el homólogo de Edit1.Visible := false; los de QuickReports se equivocaron al ponerle el nombre a esa propiedad ;).

Saludos

fjcg02
29-04-2006, 11:49:09
Hola Coco_jac,
en este hilo
http://www.clubdelphi.com/foros/showthread.php?t=25914
incluí un código que genera dinámicamente listados en base a una query que le mandas de parámetro. Es para listados todos iguales y sencillo, pero puede que te sirva de ayuda.
El QCreateList también es una buena opción para listados 'rápidos' , pero dependerá de lo que quieras hacer. No será la primera vez que una mala solución al tema de los listados ha llevado a un esfuerzo superior al desarrollo de la propia aplicación.

Suerte y un saludo