PDA

Ver la Versión Completa : Imprimir 2 copias en una hoja -- FastReport


edgar_vife
31-10-2008, 21:45:12
Hola amigos de Club Delphi, tengo un problema, tengo Delphi 7 y FastReport 3, lo que intento hacer es que se imprima una copia de un recibo.
Ejemplo:
normalmente sale:
empleado 1, empleado 2, empleado 3, etc..
en hojas diferentes o empleado1 y empleado 2 o en una misma hoja ya q son tamaño media carta

--pero lo que necesito es que salga empleado 1 y empleado1copia, empleado2 y empleado2copia, etc. donde el empleado 1 y empleado1copia salgan en una sola hoja tamaño carta

Donde: la informacion del empleado X es tamaño media carta.

espero me haya explicado y puedan ayudarme, porque si me urge!!!, gracias y seguimos en contacto...

Lepe
31-10-2008, 23:06:17
Haz la banda detalle igual de grande que un folio. En la parte superior de la banda, pon los controles que necesites. Selecciona todos los controles, copias y pegas en la parte inferior de la banda detalle.

Listo, ya tienes 2 copias del mismo registro.

Saludos

edgar_vife
01-11-2008, 00:29:28
Hola [Lepe], gracias por ayudarme ya lo hice de esa forma que me comentas y no me funcionó, mira te explicomas tengo un grupheader1 con información, un master data igual con informacion y un goupfooter con su respectiva información. Ese es mi reporte y esa informacion pues es la que quiero replicar en la misma hoja. Cuando los pongo abajo como mensionas solo la primer hoja me lo replica despues ya no. ahora la parte de que lo haga del tamaño del folio te refieres al tamaño de mi recibo que es media carta o a que?
Gracias y seguimos en contacto

TOPX
01-11-2008, 02:52:59
Hola,

De la forma que dice Lepe me parece una buena idea, debe funcionar sin problema.

Pero, hace tiempos cuando tuve que generar un reporte con diferentes conjuntos de copias, me aseguré que el procedimiento almacenado me retornara los registros repetidos en las cantidades que necesitaba.

Como usaba Firebird, fue tan sencillo como poner suspend en un ciclo while (o incluso manualmente).

Espero haber sido de ayuda.

Lepe
01-11-2008, 13:09:59
Al tener varias bandas, quizás no funcione el método que yo describo. El de TOPX, seguro que si.

Yo siempre he procurado no usar bandas, sólo la de detalle donde pongo los controles repetidos. Si necesito totales o cosas similares, intento usar varios Querys, (aunque en FastReport no te puedo ayudar, no lo he usado nunca).

Si en la primera hoja te sale bien, quizás es que esos registros tienen poca información que imprimir y por ello, caben en el mismo folio. Si tienes espacios en blanco (sin controles) puedas hacer más pequeña la banda, para intentar que quepan 2 en el mismo folio.

Saludos

hecospina
01-11-2008, 16:45:33
Hola
El el menu informes, options de fastreport aparece un cuadro de dialogo donde se pueden elejir varios parametros, uno es que impresora se desea utilizar otro es el numero de copias y hay otro que te dice si intercaladas o no, cuando se guarda el informe queda con estos parametros
Mira si te funciona y nos cuentas

Mira hice la prueba y debes dejar inactivo intercalar

edgar_vife
03-11-2008, 16:04:01
Hola, si la solucion de hecospina funciona, el problema es q me hace salto de página y asi no me sirve, mi formato derecibo es tamaño media carta y es en formato preimpreso entonces en la misma hoja vienen el recibo de pago original en la parte de arriba y copia en la parte de abajo 2, por eso es que necesito q se impriman en la misma hoja 2 veces los datos.
No es costeable que separen el recibo original de la copia ya que son aproximadamante 5,000 recibos, asi q imaginense.
Gracias por su interes y sigo investigando...

Lepe
03-11-2008, 19:03:22
Necesitas explicar mejor qué vas a imprimir y qué tiene cada una de las bandas, así como la estructura de base de datos (las tablas y campos).

Yo he realizado algo similar y no he tenido problemas, es más cuestión de inventiva. Por ejemplo:
armas una consulta que no dependa de relación Maestro-detalle, normalmente con un INNER JOIN, esto hace que el maestro se repita por cada registro del detalle:
factura1 linea1
factura1 linea2
factura1 linea3
factura2 linea1
factura2 linea2
Ahora Ya solo tienes una consulta para imprimir todos los datos. Los datos de la factura los pones en un encabezado de página, y los datos de las lineas, en la banda detalle.

Los totales, puedes conseguirlos mediante variables internas del Informe que se van aumentando por cada registro impreso. Incluso algunos textos, como el típico "Suma y sigue" se pueden ocultar si el total de la factura es igual a una suma acumulada, este es el truco para saber si estás en el último folio de una factura o no.

En fin, primero debes conocer la herramienta (fastreport) y ya depués aplicar la imaginación. No creas que todos los generadores de informes tienen la opción que necesitas ;).

Saludos.

toni.vi
03-11-2008, 21:00:42
No hay ninguna opción que un report te haga de forma automatica, pero puedes ingeniartela de distintas formas.
En el caso que me comentas, yo tengo uno similar y lo he resuelto de la siguiente forma.
1.- Duplico los registros y los ordeno para que me vengan consecutivos.
Select * from tabla union all Select * from tabla.
2.- Recorro toda la tabla renumerando un campo Identificador para que sea correlativo.
3.- Indexo por esta campo con Indexfieldnames del ClientDataset.
4.- En el informe me creo un groupheader que me cambie por el campo indexado, y por supuesto la banda de detalle y la banda GroupFooter.
Todas estas bandas me ocupan la mitad de la pagina.
Y ya esta.
Suerte.
PD. En el caso que tengas varias lineas de detalle (subdetalle), debes trasladarlas a un memo e imprimirlas en un solo bloque.

hecospina
05-11-2008, 00:15:49
Que pena la demora en constestar
Mira la solucion es muy sencilla, dentro de la opcion archivo esta la opciones de pagina, o no recuerdo bien, en esta opcion solo debes crear un formulario de tipo personalizado donde las medidas son ancho 21.95 y alto 13.97 "estas son las medidas de media carta", guardas el reporte y listo

En quick report tenia que crear el formulario con estas medidas cuando era win xp, pero con fast report el sistema operativo toma estas medidas automaticamente y no se debe configurar este tamaño

ESpero no sea tarde y aun te sirva

edgar_vife
18-11-2008, 15:34:58
Hola Amigos, ya solucione el problema, por mas que busqué y busqué no encontre solucion desde fastreport, lo que hice fue modificar mi consulta para que se repitiera la información n veces y con eso, muchas gracias a todos por su interes y ayuda.
Espero con esto den por terminado este hilo.

Gracias y hasta la proxima :)

hecospina
18-11-2008, 17:45:40
Hola Edgar_vife
Puedes decirnos como hiciste para generar la informacion n veces ?

edgar_vife
20-11-2008, 21:18:05
Hola hecospina, una disculpa por tardarme en contestar pero es que sigo desarrollando :)mira lo que hice fue esto:

1-saque en una temporal de memoria (Tabla Temporal) los datos a repetir(Tabla Base)
2-un ciclo for i:= 2 to N veces
3-entonces inserte dentro de la tabla (Tabla Base) lo que saque en memoria(Tabla Temporal)
4-Reordene mi tabla de acuerdo al indise q genere(Clave + i ) donde Clave es clave de empleado e i representa el numero de veces q se repite
Y Listo con esto te queda una tabla como yo la requeria.
Espero les haya servido mi idea, nota el algo tardado dependiendo del tamaño de información q manejen pero funciona :)

hecospina
20-11-2008, 23:47:31
Edgar_vife

Lo voy a revisar, gracias por tu respuesta

odrack
22-11-2008, 21:36:20
Saludos.

Quiza sea una respuesta tonta pero hay va, por que no colocar en la impresora el numero de copias que se quiere mandar a imprimir, hasta donde tengo entendido todas las impresoras toman el numero de copias de un total de hojas, por ejemplo.

si son 3 hojas de algun reporte divide 3 hojas y a cada hoja saca el numero de copias que uno quiera.

Espero que sirva de algo mi comentario :D