![]() |
![]() |
| Paypal | FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
|||||||
| Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Buscar | Temas de Hoy | Marcar Foros Como Leídos |
![]() |
|
|
Herramientas | Buscar en Tema | Desplegado |
|
|
|
#1
|
|||
|
|||
|
Reportes multicolumnas con QREPORT
Hola a todos
Estoy intentando imprimir un reporte con varias columnas (en concreto 5), en principio lo he intentado dando el valor 5 a la propiedad Page.Columns del objeto TQuickRep, pero con esto me sale a 5 columnas la banda de titulo (TQRBand.BandType:=rbTitle), la banda de grupo (TQRGroup), la banda de detalles, y la banda de sumario; y yo solamente quiero que vaya a 5 columnas la banda de detalle (si la propiedad Page.Columns fuera a nivel de banda :-)). Puesto que esta opción no me es válida (a menos que alguien me demuestre lo contario, lo cual agradeceria pues es la mas facil), me decidi por la implimentacion mediante codigo para lo cual en la banda de detalles introduje 4 TQRLabel mas, y el siguiente código en el BEFOREPRINT de la banda: Código:
var
origen:string;
n,posicion:integer;
lEti:TComponent;
begin
n:=1;
//Como la expresion del grupo es el origen lo guardo
origen:=dmdatos.msqAlbaranes['origen'];
//Voy imprimiendo los albaranes
while (n<=5) and (not dmdatos.msqAlbaranes.EOF) and (origen=dmdatos.msqAlbaranes['origen']) do
begin
lEti:=self.FindComponent('lAlbaran'+inttostr(n));
TQRLabel(lEti).Caption:=dmdatos.msqAlbaranes['numalbaran'];
dmdatos.msqAlbaranes.Next;
n:=n+1;
end;
//Si he salido del bucle porque no hay mas datos (EOF)
//o el origen a cambiado limpio los TQRLabel que no han sido impresos
if n<5 then
begin
for posicion:=n+1 to 5 do
begin
lEti:=self.FindComponent('lAlbaran'+inttostr(posicion));
TQRLabel(lEti).Caption:=' ';
end;
end;
//Pero si el origen a cambiado vuelvo al registro anterior
if origen<>dmdatos.msqAlbaranes['origen'] then
begin
//Esto lo hago para que la banda de grupo se imprima al cambiar
//el origen, y esto no funciona, la banda en cuestion no se imprime
dmdatos.msqAlbaranes.Prior;
end;
end;
Espero que alguien me pueda echar una mano. Gracias a tod@s de antemano. Un saludo.
__________________
Vivir a la deriva, sentir, que no se que hago aki... (Extremo) |
|
#2
|
||||
|
||||
|
No te entiendo... ¿Porqué no nos cuentas que es lo que quieres dibujar en el reporte?
Saludos!
__________________
delphi.com.ar Dedique el tiempo suficiente para formular su pregunta si pretende que alguien dedique su tiempo en contestarla.
|
|
#3
|
|||
|
|||
|
No se exactamente si el problema es que no te imprime la banda o se te queda atascada la impresion.
Por lo que veo, posiblemente se te quede atascado en esta ultima parte del codigo : //Pero si el origen a cambiado vuelvo al registro anterior if origen<>dmdatos.msqAlbaranes['origen'] then begin //Esto lo hago para que la banda de grupo se imprima al cambiar //el origen, y esto no funciona, la banda en cuestion no se imprime dmdatos.msqAlbaranes.Prior; end; Deberias controlar el EOF, es decir : if origen<>dmdatos.msqAlbaranes['origen'] and Not DmDatos.msqAlbaranes.EOF then begin //Esto lo hago para que la banda de grupo se imprima al cambiar //el origen, y esto no funciona, la banda en cuestion no se imprime dmdatos.msqAlbaranes.Prior; end; Prueba a ver ![]() |
|
#4
|
|||
|
|||
|
No se si me he explicado bien, la impresion se hace bien lo que pasa que no es el resultado que yo quiero.
Yo querria que el listado fuera algo tal que asi: Código:
--------------------------------------
Mensaje <-en la cabecera y multilinea
--------------------------------------
Nombre del origen1 <-Es un QRGroup
--------------------------------------
Alb_01 Alb_02 Alb_03 Alb_04 Alb_05
Alb_06 Alb_07 Alb_08 Alb_09 Alb_10
Alb_11 Alb_12 Alb_13 Alb_14 Alb_15
Alb_16 Alb_17 Alb_18 Alb_19
<-Un listado de los albaranes de origen1
--------------------------------------
Nobre del origen2 <-Es un QRGroup
--------------------------------------
Alb_20 Alb_21 Alb_22 Alb_23 Alb_24
Alb_25 Alb_26
<-Un listado de los albaranes de origen2
...........
...........
Pie
Código:
Mensaje
Nombre del origen1
Alb_01 Alb_02 Alb_03 Alb_04 Alb_05
Alb_06 Alb_07 Alb_08 Alb_09 Alb_10
Alb_11 Alb_12 Alb_13 Alb_14 Alb_15
Alb_16 Alb_17 Alb_18 Alb_19
Alb_20 Alb_21 Alb_22 Alb_23 Alb_24
Alb_25 Alb_26
<-Un listado de los albaranes de origen1 y origen2 pero sin imprimir el nombre del origen2
...........
...........
Pie
y poniendo propiedad columns a 5 obtengo algo tal que asi: Código:
Mensaje Alb_07 Alb_17 Alb_25
(varias lineas) Alb_08 Alb_18 Alb_26
Alb_09 Alb_19
Nom origen1 Alb_10
Alb_01 Alb_11 Nom origen2 Aqui meteria el pie
Alb_02 Alb_12 Alb_20
Alb_03 Alb_13 Alb_21
Alb_04 Alb_14 Alb_22
Alb_05 Alb_15 Alb_23
Alb_06 Alb_16 Alb_24
<-Un listado de los albaranes de origen1 y origen2 pero sin imprimir el nombre del origen2
...........
...........
Y muchisimas gracias. Un saludo.
__________________
Vivir a la deriva, sentir, que no se que hago aki... (Extremo) |
|
#5
|
|||
|
|||
|
A ver esto ....
Perdon por el malentendido
![]() A ver si esto te vale. No se si lo habras probado, pero creo que debe funcionar. (La verdad es una chapuza, pero con QReport se ve de todo). ¿Puedes utilizar dos consultas Master - Detail ?. Si es asi, en lugar de utilizar un QrGroup, utiliza una banda Detalle y una banda Subdetalle, y Antes de la impresion de la subdetalle pones el codigo que tienes. Creo recordar que el QrGroup y la combinacion "Banda Detalle - Subdetalle" no funcionan exactamente igual aunque el resultado final pueda ser el mismo ![]() Espero que te sirva |
![]() |
| Herramientas | Buscar en Tema |
| Desplegado | |
|
|
|