Reporte ( 2 copias en una pagina)

375 views
Skip to first unread message

Luis Salazar

unread,
Mar 23, 2015, 6:40:30 PM3/23/15
to publice...@googlegroups.com
saludos a los amigos Foxeros.. NO he podido resolver lo siguiente ::

Tengo un REPORTE y necesito imprimir dos copias en la misma pagina
he intentado por varias formas configurando la pagina y nada
..
Les anexos imagen del Reporte, como esta ya cuadrado para imprimir en media pagina pero necesito me imprima dos copias en la misma pagina

Gracias por su atencion .. 

NOTA : tengo una Impresora Laser SAMSUNG ML2160

Jean Pierre Adonis De La Cruz Garcia

unread,
Mar 23, 2015, 6:52:36 PM3/23/15
to publice...@googlegroups.com
depende del tipo de impresora


Claro si es lo que deseas hacer.

Luis Salazar

unread,
Mar 23, 2015, 7:13:51 PM3/23/15
to publice...@googlegroups.com
Disculpa Jean Pierre , entiendo me quieres decir que lo genere con pDF Creator
y lo configure .. Peroo  No veo bien la imagen  que enviaste 

Te puedes explicar un poco mejor ???
Tengo una Impresora SAMSUNG  ML2160  Laser
Gracias

Jean Pierre Adonis De La Cruz Garcia

unread,
Mar 23, 2015, 7:20:01 PM3/23/15
to publice...@googlegroups.com
Ahi esta Dr. para Impresoras Samsung

Víctor Hugo Espínola Domínguez

unread,
Mar 23, 2015, 9:53:25 PM3/23/15
to publice...@googlegroups.com
Hola Luís

Puedes buscar en el foro: copia report y encontrarás varios hilos que tratan el tema.

Saludos,
Víctor.
Lambaré - Paraguay.

acmc

unread,
Mar 24, 2015, 5:04:29 PM3/24/15
to publice...@googlegroups.com
Jean Pierre.. creo que tu sugerencia no es buena, ya que al hacerlo en la impresora te sacara N copias al imprimir cualquier tipo de reporte.

La opción que yo utilizo es la siguiente:

Tienes que sustituir el nombre y la ruta de tu report 

USE "C:\FOX PRG\reports\_etiq_rast.lbx"
brow 

Buscas un campo llamado Expr que tenga el valor 53
MODIFY MEMO expr

y en Copies pones el valor de número de copias que necesitas para ese reporte únicamente
COPIES=1 

Solo tener en cuenta que cada vez que hagas cambios al reporte, tienes que entrar a cambiarle el valor ya que por default te lo deja en 1 cuando haces cambios al reporte.

Salu2!!

Jean Pierre Adonis De La Cruz Garcia

unread,
Mar 24, 2015, 5:07:25 PM3/24/15
to publice...@googlegroups.com
bueno, la forma que lo hago es directa, y no necesita programacion.
y es mas rapida, solo decide poner 2 paginas por hojas y listo.

Jose Antonio Blasco

unread,
Mar 25, 2015, 11:53:43 AM3/25/15
to Comunidad de Visual Foxpro en Español
Tal vez os venga bien esta función:


Function NumCopias
*------------------------------------------
* Parametros:
*  lcFRX    = archivo frx con el formato
*  lnCopies = nº de copias
*
* Uso:
*    =NumCopias('mireport',3)
*------------------------------------------
Lparameter lcFRX, lnCopies
Local lcNewExpr, lnStartCopiesLine, lcStartAtCopiesLine, lnEndCopiesLine, ;
lnLenCopiesLine, lcTop, lcBottom, lcAlias
#Define vfCRLF Chr(13) + Chr(10)

lcAlias=Alias()

lcFRX = Forceext(lcFRX, 'frx')

Use (lcFRX) In 0 Alias FrxCopias
Select FrxCopias
Goto Top
Locate For objtype = 1 And objCode = 53

If Empty(Expr)
lcNewExpr = "COPIES=" + Allt(Str(lnCopies)) + vfCRLF
Else
lnStartCopiesLine = Atc("COPIES", Expr)

If lnStartCopiesLine <> 0
lcStartAtCopiesLine = Substr(Expr, lnStartCopiesLine)
lnEndCopiesLine = Atc(vfCRLF, lcStartAtCopiesLine)
lnLenCopiesLine = Len(Substr(lcStartAtCopiesLine, 1, lnEndCopiesLine))
lcTop = Substr(Expr, 1, lnStartCopiesLine - 1)
lcBottom = Substr(Expr, (Len(lcTop) + lnLenCopiesLine))
lcNewExpr  = lcTop + "COPIES=" + Allt(Str(lnCopies)) + lcBottom
Else
lcNewExpr = Expr + "COPIES=" + Allt(Str(lnCopies)) + vfCRLF
Endif
Endif

Replace Expr With lcNewExpr
Use In FrxCopias

If !Empty(lcAlias)
Select &lcAlias
Endif
Endfunc


Saludos

Jose A. Blasco
Zaragoza - España
Visual FoxPro 9 SP2

"No hay camino hacia la libertad, la libertad es el camino" - Indira Gandhi
“Nunca te olvides de sonreír, porque el día que no sonrías  será un día perdido”  -  Charles Chaplin
“Todo el mundo quiere tener un amigo, pero pocos se toman la molestia de ser uno”
- Anónimo

Ruben Huare

unread,
Mar 28, 2015, 11:04:36 PM3/28/15
to publice...@googlegroups.com
Prueba agregandole un grupo copia al reporte y listo
crea un cursor CREATE CURSOR copias (ncodigo N(5), ncopias n(1))
codigo = al campo que queres relacionar
FOR i= 1 TO 2
INSERT INTO copias(ncodigo,ncopias) values( codigo,i)
endfor
creas un nuevo cursor con la relación y prueba
Saludos

Rafael Carballo

unread,
Mar 29, 2015, 2:03:50 PM3/29/15
to publice...@googlegroups.com
Hay varias formas que podrias hacer dependiendo de que se trata el duplicar el reporte

1. Si el mismo reporte deseas dos copias puedes usar un for 
for x=1 to 2
report form <<reporte>> to printer noconsole
next x

2.  Si es dos copias del mismo registros, duplica los registros 
     selec * from <<tabla>> where 1=2 into cursor cur_informe
     selec cur_informe 
     append from dbf("cur_informe")
     append from dbf("cur_informe")
     report form <<reporte >> to printer noconsole


Espero te sirva

Saldos

Rafael Carballo
El Salvador

Martín E. Lezama

unread,
Mar 29, 2015, 7:09:07 PM3/29/15
to publice...@googlegroups.com
Efectivamente, lo que interpreto es que lo que quiere hacer es esto, el punto 2. Ese sería el tema justamente, duplicar los registros, peeeeero...

Supongamos que lo que quiere imprimir, por ejemplo, son recibos. Y que original y duplicado le salgan juntos en la misma hoja. Si el recibo es uno solo, no hay problemas, si son más registros (varias liquidaciones, por ejemplo), para hacer un "original y duplicado" lo que tendría que hacer, luego de duplicar los registros, es indexar la tabla temporaria por el ID (en mi suposición, un número de recibo o lo que fuese) para que ahí sí, los registros duplicados les salgan uno pegado al otro.

Si no, la otra alternativa (la que me parece más práctica) es un SELECT con UNION, haciendo que ese SELECT duplique los registros y ordene por ID, ejemplo:

SELECT * FROM recibos ;
UNION ;
SELECT * FROM recibos ;
ORDER BY 1 ;
INTO DBF c:\temp\mitemporario

Recordemos que el SELECT con UNION fuerza a que uno declare el orden con un número, en este caso estoy suponiendo que la columna ID es la primera de la tabla. Si fuese la quinta, bueno, "ORDER BY 5"

Jorge Leandro

unread,
Mar 30, 2015, 8:32:59 AM3/30/15
to publice...@googlegroups.com
  Buen día Colega, no probaste con la opción de agregar otra banda? Eso te permite mantener el header y el footer pero duplicar el detalle del reporte.
  Espero sirva de ayuda, saludos.


El lunes, 23 de marzo de 2015, 19:40:30 (UTC-3), likiliki escribió:

Guillermo MDQ

unread,
Mar 30, 2015, 12:17:55 PM3/30/15
to publice...@googlegroups.com
No indicas que tipo de reporte es el que tienes que imprimir, pero si es como el tipo de una factura por duplicado en un tamaño de hoja A4 por ejemplo, lo mejor para mi es tener un campo para agrupar, que podria ser 1 para el original y 2 para la copia..
Hay que establecer la cantidad de lineas maximas que me permite la hoja para imprimir el detalle
Despues  creamos un cursor con los registro de el detalle duplicados y diferenciados por el campo que se quiere agrupar, y si la cantidad de registros no alcanza para cubrir el total de lineas permitidas le agregamos registros en blanco hasta completar ese maximo.
Despues hacemos el reporte agrupado por el campo diferenciador de copias y en los encabezamientos de grupo ponemos los datos de cabezera de factura, y en el pie de grupo los totales.
Esta creo que es la mejor manera de imprimir dos copias de factura en un tamaño de hoja pre impreso.


Saludos
Guillermo

Jose Mario

unread,
Mar 30, 2015, 6:24:05 PM3/30/15
to publice...@googlegroups.com
en los tiempos antiguos cuando imprimia estados de pagos, estos cabian dos estados en una hoja tamaño carta, pero lo tenia @ say 
y con una sola impresion me lo imprimia dos estados de diferentes empleados en una sola hoja

set prin to estadop.doc
set devi to print
@0,0 say chr(27)+"C"+chr(33)



El lunes, 23 de marzo de 2015, 16:40:30 (UTC-6), likiliki escribió:
Reply all
Reply to author
Forward
0 new messages