Ir al contenido


Foto

Como dejar FIJO un NUMERO DETERMINADO DE RENGLONES en la banda detalle Qreport ?


  • Por favor identifícate para responder
16 respuestas en este tema

#1 agag4

agag4

    Advanced Member

  • Miembros
  • PipPipPip
  • 298 mensajes
  • LocationMéxico

Escrito 21 diciembre 2010 - 07:11

Buen dia compañeros, tengo mi aplicación que genera la factura electrónica uso el QReport 4.06 prof. con D7, uso una banda de titulo (PAGEHeader), de encabezado (rbColumnHeader), de detalle (qrSubdetail ) y pie de pagina (rbSummary), lo que deseo hacer es dejar fijo el numero de renglones en el detalle, es decir dejar que salgan 14 renglones, si se imprimen 4, que deje 10 renglones vacios después del 4to renglon, no se si me explique, de lo contrario, si salen 4 renglones el pie de pagina se sube y se acomoda junto con el detalle(se mira todo AMONTONADO  ^o| ), quiero ver si se puede que salga igual a como salen las facturas en las impresoras de matriz de punto, se podrá hacer esto en el QReport ??
  • 0

#2 andres1569

andres1569

    Advanced Member

  • Miembro Platino
  • PipPipPip
  • 431 mensajes

Escrito 22 diciembre 2010 - 11:51

Hola agag4, ¿y que pasaría si se necesitaran 15 renglones? El problema en ese caso es que al tener fijado el alto de la banda en 14, el renglón nº 15 no aparecería.

Cuando dices que el pie de pagina se sube supongo que te refieres a los totales, es decir a la banda SUMMARY, ya que la banda de pie de página debe quedarse abajo siempre. Mira de poner a TRUE la propiedad AlignToBottom de la banda que hace de rbSummary, con eso logras que el resumen o total aparezca pegado al pie de página, no al último renglón, creo que es lo que buscas.

Saludos
  • 0

#3 agag4

agag4

    Advanced Member

  • Miembros
  • PipPipPip
  • 298 mensajes
  • LocationMéxico

Escrito 22 diciembre 2010 - 04:56

lo que voy hacer es meter un StringBand en vez de un qrdetail, asi meto lineas en blanco para que quede fijo y no se amontone el piede pagina con el detalle, no se si me explique ....
  • 0

#4 andres1569

andres1569

    Advanced Member

  • Miembro Platino
  • PipPipPip
  • 431 mensajes

Escrito 23 diciembre 2010 - 10:25

Me extraña de todas formas que se amontone el detalle con el pie de página, salvo un bug de QReports el pie de página debería aparecer siempre debajo del todo y no a continuación de los detalles. Lo que te comenté de la banda de sumario es para bandas del tipo TQRBand donde la propiedad BandType se pone a rbSummary.

Saludos  (y)
  • 0

#5 cadetill

cadetill

    Advanced Member

  • Moderadores
  • PipPipPip
  • 994 mensajes
  • LocationEspaña

Escrito 24 diciembre 2010 - 05:57

Buenas,

Lo que tienes que usar es el evento OnNeedData del QuickReport. Adjunto unas units de ejemplo y la explicación de cómo funciona

Espero te sirva

Nos leemos

  • 0

#6 agag4

agag4

    Advanced Member

  • Miembros
  • PipPipPip
  • 298 mensajes
  • LocationMéxico

Escrito 24 diciembre 2010 - 10:47

Gracias cadetill, voy a probar el ejemplo, saludos....
  • 0

#7 agag4

agag4

    Advanced Member

  • Miembros
  • PipPipPip
  • 298 mensajes
  • LocationMéxico

Escrito 27 diciembre 2010 - 12:51

Al querer revisar el fuente del demo que subistes, el unico que no puedo ver el código es en el archivo UNeedDataRpt.pas, marca el siguiente error:


delphi
  1. One or more lines were too long and have been truncated



Al darle aceptar al mensaje me pone basura en el fuente.

  • 0

#8 cadetill

cadetill

    Advanced Member

  • Moderadores
  • PipPipPip
  • 994 mensajes
  • LocationEspaña

Escrito 27 diciembre 2010 - 05:42

Pues ciertamente está mal los fuentes :s

Miraré a ver si encuentro alguna copia de seguridad por ahí que esté bien y te lo vuelvo a subir

Nos leemos

  • 0

#9 cadetill

cadetill

    Advanced Member

  • Moderadores
  • PipPipPip
  • 994 mensajes
  • LocationEspaña

Escrito 28 diciembre 2010 - 09:55

Buenas,

He mirado las 2 copias de seguridad que tengo y las 2 las tengo igual, es decir, mal :s

Pero bueno, en el UNeedDataFrm tienes la explicación de lo que hay que hacer:

El evento OnNeedData

Este evento pertenece a la clase TQuickRep.
Con él especificamos o controlamos el final de nuestro listado gracias al
parámetro MoreData (de tipo boolean). Mientras el valor de este parámetro
sea TRUE, el listado seguirá pensando que quedan registros para imprimir
y
seguirá con la impresión de registros.
En principio, no hará falta utilizarlo nunca, sólo en aquellos casos en que
nos interese "engañar" al report en la cantidad de registros que tenemos.
En la demo que muestro, de lo que se tratará es de imprimir la línea que
separa las diferentes columnas de nuestro report hasta el final de la hoja,
sea cual sea el número de registros que tengamos.
Para ello, utilizaremos una variable global al formulario (FinPag: integer) que
nos servirá para tal efecto i que contendrá la línea de impresión actual
para
saber si llegamos o no al final de página (indicado por la constante NumLin:
integer)
La constante NumLin dependerá de la amplitud de nuestra banda de
detalle, por lo que, antes de poder darle un valor, necesitaremos hacer una
primera impresión para saber el número de líneas que cabrán en el Report.
El truco está en no asignarle al Report ningún Dataset y hacer nosotros por
código el recorrido de éste en el evento en cuestión


Lo realmente importante de toda la explicación son las 2 últimas líneas, donde dice que no hay que asignarle ningún DataSet al QuickReport.

Espero te sirva,

Nos leemos
  • 0

#10 agag4

agag4

    Advanced Member

  • Miembros
  • PipPipPip
  • 298 mensajes
  • LocationMéxico

Escrito 28 diciembre 2010 - 10:59

Si no hay que asignarle ningun dataset, entonces tengo que usar un StringBand ??
  • 0

#11 agag4

agag4

    Advanced Member

  • Miembros
  • PipPipPip
  • 298 mensajes
  • LocationMéxico

Escrito 28 diciembre 2010 - 06:29

Segun yo segui bien al pie de la letra a como mencionas, pero no me pone fijo los 12 registros que quiero dejar, por ejemplo en el detalle le pongo 4 renglones y me tiene que poner los 8 restantes vacios, ya le quite el dataset del QReport y de la banda de detalle, declare 1 variable global de tipo entero que se llama RegReport, donde la inicializo a 0 antes del prever, y en el evento NeedData le pongo una condicion de que si llega a los 12 registros que ponga en false a la variable MoreData, ya lo hice en el evento NeedData de la banda detalle y no me funciono, también en el mismo evento pero del Qreport y no me dio los resultados, compilando por partes veo que solo accesa 4 veces al evento NeedData, no accesa las veces que yo quiero que son 12, les pongo el codigo a como lo deje en el evento NeedData.


delphi
  1. procedure Tforma.QRSubDetail1NeedData(Sender: TObject;
  2.   var MoreData: Boolean);
  3. begin
  4.   Inc(RegReport);
  5.   if RegReport = 12 then
  6.     MoreData := False;
  7. end;



ó



delphi
  1. procedure Tforma.qrFE_F2NeedData(Sender: TObject;
  2.   var MoreData: Boolean);
  3. begin
  4.   Inc(RegReport);
  5.   if RegReport = 12 then
  6.     MoreData := False;
  7. end;




  • 0

#12 eduarcol

eduarcol

    Advanced Member

  • Administrador
  • 4.483 mensajes
  • LocationVenezuela

Escrito 29 diciembre 2010 - 07:45

Solo por curiosidad, porque no usas la banda summary alineada al bottom??  te ahorras muchos problemas.
  • 0

#13 agag4

agag4

    Advanced Member

  • Miembros
  • PipPipPip
  • 298 mensajes
  • LocationMéxico

Escrito 29 diciembre 2010 - 08:43

Muchas Gracias eduarcol, tan facil como eso, lo tenia en mis narices y no me fije :) , con eso basto para que hiciera lo que queria, que el "pie" se fuera al final de la página. Saludos....
  • 0

#14 cadetill

cadetill

    Advanced Member

  • Moderadores
  • PipPipPip
  • 994 mensajes
  • LocationEspaña

Escrito 29 diciembre 2010 - 10:24

Buenas,

Aunque ya lo tengas solucionado, para hacer lo del NeedData, tienes que hacer el report como normalmente lo harías, con bandas detalle, qrgroup,..... Sencillamente no le asignas Dataset al report :) (sí a los qrdbtext).

Es para que entiendas como funciona solo :)

Nos leemos


  • 0

#15 agag4

agag4

    Advanced Member

  • Miembros
  • PipPipPip
  • 298 mensajes
  • LocationMéxico

Escrito 29 diciembre 2010 - 11:14

Eso es lo que hice cadetill pero no me funciono arriba señalo como lo hice, no se en que estoy mal.
  • 0

#16 agag4

agag4

    Advanced Member

  • Miembros
  • PipPipPip
  • 298 mensajes
  • LocationMéxico

Escrito 29 diciembre 2010 - 11:33

Ahora el problema que tengo es que, uso en este mismo reporte el QRCompositeReport, y a veces en cierta condición le añado 2 Qreport, lo que pasa es que el reporte es una factura y cuando son de credito deben de ir el PAGARE, este pagare lo tengo aparte, lo que estoy viendo es que dicho pagare lo voy a tener que pasar en el qrSummary del Qreport1 para que me funcione al 100 el AlignTobotton .
  • 0

#17 agag4

agag4

    Advanced Member

  • Miembros
  • PipPipPip
  • 298 mensajes
  • LocationMéxico

Escrito 29 diciembre 2010 - 01:38

Anticipo, lo que estoy haciendo es una factura electrónica en el QReport v4.06 prof., D7, Añadi 2 TQRChildband, 1 para la cadena original y otra para el pagare, los añadi cambiando la propiedad HasChild a true del qrsumary y del 1er childband, todo va bien, pero el gran problema es que siempre me manda a la siguiente pagina los 2 childband, aunque quepan en la 1er pagina siempre los manda ala siguiente pagina.
  • 0




IP.Board spam blocked by CleanTalk.