Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Impresión
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 17-08-2004
vichovi vichovi is offline
Miembro
 
Registrado: may 2003
Ubicación: Huelva (España)
Posts: 59
Poder: 21
vichovi Va por buen camino
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;
Bueno pues con esto llevo atascado 4 dias haciendo pruebas y mas pruebas, he mirado en los foros antiguos y no vi nada.

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)
Responder Con Cita
  #2  
Antiguo 18-08-2004
Avatar de delphi.com.ar
delphi.com.ar delphi.com.ar is offline
Federico Firenze
 
Registrado: may 2003
Ubicación: Buenos Aires, Argentina *
Posts: 5.932
Poder: 27
delphi.com.ar Va por buen camino
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.
Responder Con Cita
  #3  
Antiguo 18-08-2004
cheewe cheewe is offline
Registrado
 
Registrado: ago 2004
Posts: 7
Poder: 0
cheewe Va por buen camino
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
Responder Con Cita
  #4  
Antiguo 18-08-2004
vichovi vichovi is offline
Miembro
 
Registrado: may 2003
Ubicación: Huelva (España)
Posts: 59
Poder: 21
vichovi Va por buen camino
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
y lo que obtengo con el codigo del mi primera pregunta es algo tal como lo anterior, lo que ocurre es que QReport no detecta el cambio de origen; daos cuenta que en la impresion del detalle imprimo hasta 5 elementos del Query, y por eso el Prior si ha cambiado el origen para intentar que QReport detecte que la expresion de la QRGroup se ha cumplido y me imprima el nuevo origen, o sea que en con mi codigo me quedaria algo tal que asi:

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

...........
...........
Espero haberme explicado con mas exactitud en esta ocasion.

Y muchisimas gracias.

Un saludo.
__________________
Vivir a la deriva,
sentir,
que no se que hago aki...

(Extremo)
Responder Con Cita
  #5  
Antiguo 20-08-2004
cheewe cheewe is offline
Registrado
 
Registrado: ago 2004
Posts: 7
Poder: 0
cheewe Va por buen camino
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
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro


La franja horaria es GMT +2. Ahora son las 07:30:58.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi