PDA

Ver la Versión Completa : QuickReport con dos bandas detalles?


ercea
04-08-2007, 16:25:58
Hola a todos, me presento, este es mi primer mensaje aunque llevo tiempo visitando vuestros foros, procurare presentar mi duda lo más detallado posible ;)

Estoy aqui familiarizandome con el componente Quickreport, bastante bueno http://foros.ryanstudios.com/images/smiles/icon_wink.gif. Vereis me gustaría generar un informe (un prespuesto), en el que los detalles pueden ser de dos tipos: de recambios y de máquinas. Es decir un cliente puede pedir un preupuesto de solo recambios, de solo máquinas o de ambos.

Me gustaría saber si puedo hacer que en un solo informe me muestre todos los detalles de un presupuesto tanto si solo tiene recambios, si solo tiene maquinas o si tiene de los dos. Es decir, tenemos por ejemplo 3 clientes:
1 - Pide un presupuesto de 30 recambios
2 - Pide un presupuesto de 20 maquinas
3 - Pide un presupuesto de 20 recambios y 10 maquinas

Y me gustaria que en cada uno saliera un solo informe de tal forma que salga:
Recambios y a continuación los detalles de los recambios (si exisitiera en el presupuesto)
Máquinas y a continuación los detalles de las máquinas (si exisitera en el presupuesto)

Las tablas son:
Presupuesto: codigo, fecha, caducidad, % descuento, Total
Pres_rec: codigo_pres, codigo_rec, precio, unidades, subtotal
pres_maq: codigo_pres, nºmod_maq, nºserie_maq, precio, unidades, subtotal
Maquinas: nº mod, nº serie, marca, modelo, precio, (otros)
Recambios: codigo, nombre, precio, (otros)
Cliente: nº, dni, nombre (otros)

Intenté hacer una consulta SQL (veo más comodo hacer una consulta SQL e ir pillando de ahi los datos para generar el report), pero como puede darse el caso de que no haya recambios o que no haya máquinas en un presupuesto dado, creo que en una sola consulta no puedo hacerla (no me devuleve resultados). Así opté por dos Querys, una para generar el informe de Presupuestos con detalles recambios, y otra para generar el informe Presupuestos máquinas (ojo de un mismo Presupuesto en general). Las consultas devuelven bien los resultados (comprobado en un grid así temporal xD). Pero no sé cómo hacer que aparezcan ambos detalles en un solo informe.

Me gustaría que tuviera la siguiente estructura:

[Logo de la empresa]
[Titulo: Presupuesto]
[Datos del presupuesto (codigo, fecha, caducidad, datos cliente]
[Título: Recambios] (si las hay)
[Detalles de los recambois que tenga el presupuesto (codigo, nombre rcambio, precio, unidades y subtotal] (si las hay)
[Titulo: Máquinas] (si las hay)
[Detalles de las máquinas que tenga el presupuesto (nº mod, nº serie, marca, modelo, precio, unidades y subtotal] (si las hay)
[Pie de página indicando el iva, el descuento aplicado y el Total]

El logo de la empresa, el titulo presupuseto, los datos del presupuesto y el pie de página me gustaría que saliese en cada hoja.

Consegui algo parecido a lo expuesto, pero solo con uno de los tipos de detalles, por ejemplo recambios, para ello hice:

[logo con una banda título]
[Titulo presupuesto, datos presupuesto y datos cliente con una banda Column Header]
[Detalles de cada recambio con una banda Detail]
[Y lo de pie de pagina (descuento, iva y total) con una banda Page Footer]

Pero si añado otra banda Detail a ese report que hice para las máquinas... no funciona (sale debajo de la banda Page Footer y además nome imprime nada) :s.

He leido algo de que podría usar el componente QRCompositeReport, creando dos formularios (uno para Quickreport con su correspondiente Query), y en el envento OnAddReport añadir cada quickreport que quiera. Pero al hacer un Preview no me muestra nada :S ni si quiera laventana de vista previa vamos.

En fin, si me podeis dar algún consejo estaría muy agradecido http://foros.ryanstudios.com/images/smiles/icon_wink.gif

gracias por adelantado y saludos!

luisgutierrezb
04-08-2007, 17:29:35
en quickreport, podrias tener un QRComposite para unir los 2 reportes

ContraVeneno
04-08-2007, 17:31:32
Pues si, la solución es hacerlo con el CompositeReport
al menos yo así lo tengo. Haces el mismo reporte, con el mismo formato, para las diferentes cosas que necesitas, al final, los agrupas todos juntos con el compositereport y aparecerán los tres como si fueran uno solo, el usuario simplemente verá un reporte. Puedes jugar con la propiedad "PrintIfEmpty" de cada reporte si deseas que aparezca o no cuando este no contenga datos.

El preview, lo tienes que hacer al compositereport

....
qrcompositereport1.Preview;
....


Y en el evento OnAddReports del compositereports:

procedure TfrmImprimir.QRCompositeReport1AddReports(Sender: TObject);
begin
with QRCompositeReport1.Reports do begin
Add(qrReporteReCambios);
Add(qrReporteMaquinas);
end; //with

end;



Si el compositereports no te esta funcionando, entonces te esta faltando algún detalle a la hora del diseño.

ercea
04-08-2007, 19:49:27
Hola ContraVeneno, gracias por responder. Cuando dices problema de diseño, te refieres al diseño de cada quickreport no?. Bueno si es así ambos tienen el mismo diseño:

[Logo de la empresa con banda rbTitle]
[Título "PRESUPUESTO" + Datos del presupeusto + datos cliente en banda rbColumnHeader]
[Detalles de los recambios (codigo, nombre, precio, unidades, subtotal) en banda rbDetail]
[IVA, Descuento, Precio Total en banda PageFooter]

Para las máuiqnas es exactamente el mismo, solo que en detalles tiene más campos (nº mod, nº serie, marca, modelo, precio, unidades, subtotal)

He hecho un formulario para cada reporte con su rspectivo Query, más otro formulario más para el QRCompositeReport. En el evento OnAddReport tengo puesto lo que me comentas, y en un botón llamo al método Preview del composite. No me hace nada, y si le vuelvo a pulsar me sale una excepción "Access violation at address 00000000. Read of address 0000000".

De todos modos, muchas gracias por responder, al menos sé que me tengo que guiar por el componente ComopositeReport, así que miraré a ver qué pasa para que falle ;)

gracias y saludos!

EDITO: corregido, esa excepcion me hacia pensar que no se estaban creando correctamente los quickreports por separado, se me habian quitado los datasets al separar en formularios cada uno :S ya lo hace todo correctaemnte.

Gracias de nuevoy saludos!