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 12-02-2013
jpgonzalez jpgonzalez is offline
Miembro
 
Registrado: feb 2010
Posts: 121
Poder: 15
jpgonzalez Va por buen camino
Report builder - Ticket de altura dinamica

Buenas para todos...
Estoy haciendo un sistema de facturacion en el cual lanzo los tickets en un impresora termica usando Report Builder.
El problema que tengo es que no puedo hacer que la altura del ticket sea dinamica, es decir, que el alto del ticket dependa de la cantidad de renglones del "detail" del reporte.
Debido al tamaño del "detail", entran aproximadamente 8 renglones...
Esto hace que si el detalle solo tiene 1 renglon imprime --> Header, renglon, espacio en blanco y el footer.
Si el detalle tien 11 renglones, me imprime --> Header, 8 renglones de detalle, footer ... header, 3 renglones de detalle, espacion en blanco y footer.

Probe poniendo en el Detail la opcion PrintHeight = "phDynamic" y sigue haciendo lo mismo.
La verdad que no se me ocurre que hacer para que quede un solo ticket y que la altura varie segun las lineas del detail sin repetir el footer.
Espero haber sido claro en la duda, un abrazo!!!
Responder Con Cita
  #2  
Antiguo 12-02-2013
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.039
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
No hay que hacer nada de eso, lo primero de todo es asegurarte de que tienes seleccionada la impresora adecuada.
Responder Con Cita
  #3  
Antiguo 12-02-2013
jpgonzalez jpgonzalez is offline
Miembro
 
Registrado: feb 2010
Posts: 121
Poder: 15
jpgonzalez Va por buen camino
ahhhh... ok
Yo tengo puesto PrinterName=Default, pense que con eso agarraba la impresora predeterminada de windows (que es la tickeadora termica).
Probare poniendo en el printername la impresora y ver si con eso anda... gracias!
Responder Con Cita
  #4  
Antiguo 12-02-2013
jpgonzalez jpgonzalez is offline
Miembro
 
Registrado: feb 2010
Posts: 121
Poder: 15
jpgonzalez Va por buen camino
Cita:
Empezado por Casimiro Notevi Ver Mensaje
No hay que hacer nada de eso, lo primero de todo es asegurarte de que tienes seleccionada la impresora adecuada.
Debido a tu respuesta me surge la siguiente duda, este programa lo tienen 5 clientes...
Por ahora solo 2 de ellos tienen impresoras termicas y ambos usan samsung...
Que pasa si alguno de los otros 3 tienen una Epson TM T20 por ejemplo??... tendria que hacer un ejecutable para las samsung y otro para las Epson?
De ser asi, tendria que tener un exe para cada tipo de impresora?... (ademas de tener instalado los drivers en mi PC para seleccionarlas).
Te dejo esa duda... un arbazo!
Responder Con Cita
  #5  
Antiguo 12-02-2013
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.039
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
No entiendo lo del "un .exe distinto para cada cliente", lo normal es tener los informes por separado y no tocar el programa, así cada vez que modificas un informe sólamente tienes que enviar eso y, además, puedes personalizarlo para cada cliente.
No entiendo bien lo que comentas, te aconsejo que mires los ejemplos que trae reportbuilder, son muchísimos informes los que trae y te servirán de referencia.
Responder Con Cita
  #6  
Antiguo 13-02-2013
jpgonzalez jpgonzalez is offline
Miembro
 
Registrado: feb 2010
Posts: 121
Poder: 15
jpgonzalez Va por buen camino
Cita:
Empezado por Casimiro Notevi Ver Mensaje
No entiendo lo del "un .exe distinto para cada cliente", lo normal es tener los informes por separado y no tocar el programa, así cada vez que modificas un informe sólamente tienes que enviar eso y, además, puedes personalizarlo para cada cliente.
No entiendo bien lo que comentas, te aconsejo que mires los ejemplos que trae reportbuilder, son muchísimos informes los que trae y te servirán de referencia.
Bien Casimiro, en primer lugar gracias por la respuesta.
A lo que me refiero con un exe para cada impresora, es compilar diferentes ejecutables.
Yo siempre (hace 5 años que programo en Delphi) use los reportes de Report Builder de manera interna, nunca los use por separado. Quiza en el lugar donde "aprendi" a programar en Delphi no lo usaban correctamente.
Se agregaba el componente de RB en el form que lo usaba, se creaba el reporte, se lo llamaba y listo... nunca guarde un reporte externamente al ejecutable.
Probaré haciendo los importes de manera externa, y buscare algunos ejemplos de RB para guiarme.
Hoy en mi trabajo tengo una Epson TM-T20 para probar como salen.
Nuevamente muchas gracias, espero que asi funcione.
Responder Con Cita
  #7  
Antiguo 13-02-2013
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.039
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Entonces te aconsejo que lo hagas así, con los informes fuera, los puedes poner en un directorio, o incluso almacenarlos en una tabla de la base de datos, de esa forma siempre puedes cambiarlos sin tocar el .exe
Responder Con Cita
  #8  
Antiguo 13-02-2013
jpgonzalez jpgonzalez is offline
Miembro
 
Registrado: feb 2010
Posts: 121
Poder: 15
jpgonzalez Va por buen camino
Cita:
Empezado por Casimiro Notevi Ver Mensaje
Entonces te aconsejo que lo hagas así, con los informes fuera, los puedes poner en un directorio, o incluso almacenarlos en una tabla de la base de datos, de esa forma siempre puedes cambiarlos sin tocar el .exe
Bien Casimiro...
Ya he probado configurar la impresora y sigue tirando el ticket con altura fija.
Adjunto una captura de pantalla en la que muestro la configuracion del layaout a ver si esto sirve... Abrazo!
Imágenes Adjuntas
Tipo de Archivo: jpg reporte.jpg (22,1 KB, 53 visitas)
Responder Con Cita
  #9  
Antiguo 13-02-2013
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.039
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Es muy complicado poder ayudarte de esta manera.
Debes tener en cuenta que el "Detail" es siempre de altura dinámica, sólo el "Header" y el "Footer" puedes elegir entre dinámico o estático.
¿Qué tipo de papel/página/tamaños/etc. tienes configurado?
Responder Con Cita
  #10  
Antiguo 13-02-2013
jpgonzalez jpgonzalez is offline
Miembro
 
Registrado: feb 2010
Posts: 121
Poder: 15
jpgonzalez Va por buen camino
Los tamaños de papel y demas estan en la imagen que adjunte.
La impresora es la EPSON TM-T20, el papel esta en roll paper 80 x 297, el footer y header en Static, el detail en dynamic.
La verdad, que ya no se mas que hacer... me esta volviendo loco esto, jajaja.
Responder Con Cita
  #11  
Antiguo 13-02-2013
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.039
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Demasiado pequeña la imagen para mi deficiente visión

Debes abrir el informe, y en el menú superior, la primera opción, elegir la opción de configurar página, seleccionas la impresora y eliges "papel continuo" o algo así, no recuerdo el nombre exacto, pero desde luego no tiene una longitud de 297 como indica en tu imagen.
O sea, tienes que seleccionar un tipo de papel de un tamaño enorme, lo verás en la lista, tras elegir la impresora.
Responder Con Cita
  #12  
Antiguo 13-02-2013
jpgonzalez jpgonzalez is offline
Miembro
 
Registrado: feb 2010
Posts: 121
Poder: 15
jpgonzalez Va por buen camino
La opcion de papel mas grande que me da la impresora es esa: 80 x 297... salvo que a mano le ponga un alto exagerado.
Creo que lo unico que me queda es calcular la altura por codigo, dependiendo de la cantidad de lineas del detalle y ajustar la altura del reporte antes de imprimir.
Ya no queda mucho para inventar.
Abrazo!
Responder Con Cita
  #13  
Antiguo 13-02-2013
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.039
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
¿Pero has seleccionado la impresora esa de ticket en el informe?
Responder Con Cita
  #14  
Antiguo 13-02-2013
jpgonzalez jpgonzalez is offline
Miembro
 
Registrado: feb 2010
Posts: 121
Poder: 15
jpgonzalez Va por buen camino
Cita:
Empezado por Casimiro Notevi Ver Mensaje
¿Pero has seleccionado la impresora esa de ticket en el informe?
Si Casimiro, seleccione esa impresora...
Evidentemente la impresora no da como opcion el papel continuo. O sea, da como opcion el roll paper pero de 80 x 297.
Quiza sea que esta impresora termica no tiene la opcion esa de configuracion, por lo cual lo hice de forma dinamica.

Código Delphi [-]
   if (CDSDetalleFactura.RecordCount > 3) then begin
      ppReportTicket.PrinterSetup.PaperHeight:= 60 + (CDSDetalleFactura.RecordCount * 6);
   end
   else begin
      ppReportTicket.PrinterSetup.PaperHeight:= 80;
   end;
   ppReportTicket.Print;

Lo que hago es, si el detalle tiene 3 articulos o menos, le dejo un tamaño fijo de 80mm de altura.
Sino le calculo la altura 60 mm (altura del header + footer) + CDSDetalleFactura.RecordCount * 6 mm (altura de la linea del detail)
Siendo el CDSDetalleFactura el detalle de articulos que se estan vendiendo.

Creo que ya no es problema del reportbuilder, sino de la configuracion de la impresora termica.
Abrazo, y espero que sirva para futuras dudas.
Responder Con Cita
  #15  
Antiguo 13-02-2013
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.039
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Nosotros hacemos informes de tickets para todo de impresoras y también, evidentemente, para las térmicas.
Ten en cuenta que no tiene sentido que hagas eso que estás haciendo, estamos hablando de un generador de informes muy potente, (y con todos funciona igual), no hay que hacer "inventos raros" para conseguir lo que quieres.
Fíjate, una imagen de un ticket que, entre otros formatos, incluye uno "custom" que tiene unas medidas de 76x2970
Te adjunto un ticket (sin módulo de datos, para que no te dé error) y tú le añades un módulo de datos, para que pruebes.
Imágenes Adjuntas
Tipo de Archivo: jpg pantallazo.jpg (22,7 KB, 63 visitas)
Archivos Adjuntos
Tipo de Archivo: rar ticket-ejemplo.rtm.rar (3,8 KB, 82 visitas)
Responder Con Cita
  #16  
Antiguo 13-02-2013
jpgonzalez jpgonzalez is offline
Miembro
 
Registrado: feb 2010
Posts: 121
Poder: 15
jpgonzalez Va por buen camino
Le puse custom, le puse una altura elevada, y no me funciono.
Quiza le este pifiando en algo, es muy probable... el invento lo hice porque necesito que funcione "ya"... despues con tiempo investigare un poco más acerca del problema.
Muchas gracias por la colaboracion... Abrazo!
Responder Con Cita
  #17  
Antiguo 13-02-2013
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.039
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Prueba el informe que te he enviado y luego, si te funciona, lo ajustas a tus requerimientos.
Responder Con Cita
  #18  
Antiguo 13-02-2013
jpgonzalez jpgonzalez is offline
Miembro
 
Registrado: feb 2010
Posts: 121
Poder: 15
jpgonzalez Va por buen camino
Buenisimo Casimiro, mañana lo pruebo nuevamente en el trabajo.
Ahora en casa, desde mi notebook he creado un nuevo reporte (muchas veces me ha pasado que al arrancar de cero se arregla todo, jajaja).
En mi notebook tengo instalada la impresora Samsung, en lugar de la EPSON.
La Samsung me da mucas mas opciones de papel, entre las cuales encuentro 80 x 3276 mm, y ademas me da en la opcion "Paper Source" la posibilidad de elegir Ticket.
Quiza con este nuevo reporte logre hacer la altura dinamica sin tener que hacer ningun invento... probare esto mañana y comentare los resultados.
Abrazo!
Responder Con Cita
  #19  
Antiguo 31-03-2013
jpgonzalez jpgonzalez is offline
Miembro
 
Registrado: feb 2010
Posts: 121
Poder: 15
jpgonzalez Va por buen camino
Bien Casimiro, ha pasado ya un tiempo desde este hilo, pero creo que merecias una respuesta.

Me sirvio de mucho el tema de usar los reportes en un archivo, para permitir editarlos. De hecho, cree una opcion en el menu para modificar reportes, donde se pueden modificar todos los reportes que usa el sistema, para personalizarlos segun las conveniencias del cliente.
Esta opcion me parece genial y me has dado una mano gigante para no tener que compilar un ejecutable para cada cliente que tenga una opcion de impresion diferente a la de otro.

Desde ya muchisimas gracias, un abrazo!!!
Responder Con Cita
  #20  
Antiguo 31-03-2013
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.039
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Me alegro
Gracias
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

Temas Similares
Tema Autor Foro Respuestas Último mensaje
¿como imprimir ticket con fast report? JXJ Impresión 3 05-10-2012 03:20:16
campo con altura variable (mas de un renglon a veces) en Report Builder advancexz Impresión 0 04-12-2008 04:06:40
Altura ticket en fast repor3 nugame Impresión 0 21-09-2007 10:39:52
Altura ilimitada en papel en Fast report 3 nugame Impresión 0 17-09-2007 10:10:01
Report Builder cafupe Impresión 1 24-10-2003 12:07:55


La franja horaria es GMT +2. Ahora son las 22:59:50.


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