Discussion:
Varias copias en un informe
(demasiado antiguo para responder)
Jaume
2003-12-04 23:32:55 UTC
Permalink
Hola a todos los del grupo.

Tengo el siguiente problemilla con informes. Tengo diseñado mediante un
informe la hoja de liquidación de pagos para los empleados de un compañia.
Todo correcto. Esta funcionando sin problema.
El problema es que hoy me han pedido que el informe se imprima 1 o 2 o 3
copias para cada empleado según se solicite en un formulario previo de
selección de datos.
¿Como lo puedo hacer?.

Gracias anticipadas por vuestra ayuda.
Juan M. Afan de Ribera
2003-12-05 06:26:52 UTC
Permalink
Hola Jaume,

una manera de hacerlo es utilizando la instrucción PrintOut del objeto DoCmd
(si lo haces con una macro, creo que es la acción Imprimir). Primero debes
abrir el informe en vista preliminar, pues PrintOut imprimirá el objeto que
esté en ese momento activo, por ejemplo:

' abrimos el informe en vista preliminar
DoCmd.OpenReport "TuInforme", acViewPreview
' imprimimos el informe con el num. de copias
' reflejado en "NumeroCopias"
DoCmd.PrintOut , , , , NumeroCopias
' cerramos el informe
DoCmd.Close acReport, "TuInforme"

y en principio ya está. Creo que la instrucción PrintOut es muy interesante
pues no sólo te permite imprimir las copias que tú desees, sino que también
te permite imprimir las páginas de un informe que tú desees, indicar la
calidad de impresión y intercalar las copias (busca en la ayuda por PrintOut
o por la acción Imprimir).

Espero que te sirva.

--
Saludos desde Barcelona
Juan M. Afan de Ribera
<MVP Ms Access>
http://www.juanmafan.tk
http://www.clikear.com/webs4/juanmafan
Post by Jaume
Hola a todos los del grupo.
Tengo el siguiente problemilla con informes. Tengo diseñado mediante un
informe la hoja de liquidación de pagos para los empleados de un compañia.
Todo correcto. Esta funcionando sin problema.
El problema es que hoy me han pedido que el informe se imprima 1 o 2 o 3
copias para cada empleado según se solicite en un formulario previo de
selección de datos.
¿Como lo puedo hacer?.
Gracias anticipadas por vuestra ayuda.
Jaume
2003-12-05 07:21:12 UTC
Permalink
Gracias,

me pongo en ello cuando llegue al curro.

Jaume
Post by Juan M. Afan de Ribera
Hola Jaume,
una manera de hacerlo es utilizando la instrucción PrintOut del objeto DoCmd
(si lo haces con una macro, creo que es la acción Imprimir). Primero debes
abrir el informe en vista preliminar, pues PrintOut imprimirá el objeto que
' abrimos el informe en vista preliminar
DoCmd.OpenReport "TuInforme", acViewPreview
' imprimimos el informe con el num. de copias
' reflejado en "NumeroCopias"
DoCmd.PrintOut , , , , NumeroCopias
' cerramos el informe
DoCmd.Close acReport, "TuInforme"
y en principio ya está. Creo que la instrucción PrintOut es muy interesante
pues no sólo te permite imprimir las copias que tú desees, sino que también
te permite imprimir las páginas de un informe que tú desees, indicar la
calidad de impresión y intercalar las copias (busca en la ayuda por PrintOut
o por la acción Imprimir).
Espero que te sirva.
--
Saludos desde Barcelona
Juan M. Afan de Ribera
<MVP Ms Access>
http://www.juanmafan.tk
http://www.clikear.com/webs4/juanmafan
Post by Jaume
Hola a todos los del grupo.
Tengo el siguiente problemilla con informes. Tengo diseñado mediante un
informe la hoja de liquidación de pagos para los empleados de un compañia.
Todo correcto. Esta funcionando sin problema.
El problema es que hoy me han pedido que el informe se imprima 1 o 2 o 3
copias para cada empleado según se solicite en un formulario previo de
selección de datos.
¿Como lo puedo hacer?.
Gracias anticipadas por vuestra ayuda.
LeoGrau®
2003-12-05 14:51:56 UTC
Permalink
Disimula mi ignorancia pero:
Quisiera saber en donde debo poner esa instrucción, ya que no hay un evento
que sea "Al imprimir" o en su caso cuando debe ejecutar la macro...

Gracias
Post by Juan M. Afan de Ribera
Hola Jaume,
una manera de hacerlo es utilizando la instrucción PrintOut del objeto DoCmd
(si lo haces con una macro, creo que es la acción Imprimir). Primero debes
abrir el informe en vista preliminar, pues PrintOut imprimirá el objeto que
' abrimos el informe en vista preliminar
DoCmd.OpenReport "TuInforme", acViewPreview
' imprimimos el informe con el num. de copias
' reflejado en "NumeroCopias"
DoCmd.PrintOut , , , , NumeroCopias
' cerramos el informe
DoCmd.Close acReport, "TuInforme"
y en principio ya está. Creo que la instrucción PrintOut es muy interesante
pues no sólo te permite imprimir las copias que tú desees, sino que también
te permite imprimir las páginas de un informe que tú desees, indicar la
calidad de impresión y intercalar las copias (busca en la ayuda por PrintOut
o por la acción Imprimir).
Espero que te sirva.
--
Saludos desde Barcelona
Juan M. Afan de Ribera
<MVP Ms Access>
http://www.juanmafan.tk
http://www.clikear.com/webs4/juanmafan
Post by Jaume
Hola a todos los del grupo.
Tengo el siguiente problemilla con informes. Tengo diseñado mediante un
informe la hoja de liquidación de pagos para los empleados de un compañia.
Todo correcto. Esta funcionando sin problema.
El problema es que hoy me han pedido que el informe se imprima 1 o 2 o 3
copias para cada empleado según se solicite en un formulario previo de
selección de datos.
¿Como lo puedo hacer?.
Gracias anticipadas por vuestra ayuda.
Juan M. Afan de Ribera
2003-12-05 16:58:30 UTC
Permalink
Si lo haces por código (más o menos como lo indico en el ejemplo) puedes
poner un botón de comando en el formulario desde donde deseas imprimir y
asociarle ese código. NumeroCopias puede ser un cuadro de texto en ese mismo
formulario en el que el usuario escriba el número de copias que desea
imprimir del informe (por ejemplo).

Si tienes alguna dificultad más, exponlo e intentaremos resolverla.

--
Saludos desde Barcelona
Juan M. Afan de Ribera
<MVP Ms Access>
http://www.juanmafan.tk
http://www.clikear.com/webs4/juanmafan
Post by LeoGrau®
Quisiera saber en donde debo poner esa instrucción, ya que no hay un evento
que sea "Al imprimir" o en su caso cuando debe ejecutar la macro...
Gracias
Post by Juan M. Afan de Ribera
Hola Jaume,
una manera de hacerlo es utilizando la instrucción PrintOut del objeto
DoCmd
Post by Juan M. Afan de Ribera
(si lo haces con una macro, creo que es la acción Imprimir). Primero debes
abrir el informe en vista preliminar, pues PrintOut imprimirá el objeto
que
Post by Juan M. Afan de Ribera
' abrimos el informe en vista preliminar
DoCmd.OpenReport "TuInforme", acViewPreview
' imprimimos el informe con el num. de copias
' reflejado en "NumeroCopias"
DoCmd.PrintOut , , , , NumeroCopias
' cerramos el informe
DoCmd.Close acReport, "TuInforme"
y en principio ya está. Creo que la instrucción PrintOut es muy
interesante
Post by Juan M. Afan de Ribera
pues no sólo te permite imprimir las copias que tú desees, sino que
también
Post by Juan M. Afan de Ribera
te permite imprimir las páginas de un informe que tú desees, indicar la
calidad de impresión y intercalar las copias (busca en la ayuda por
PrintOut
Post by Juan M. Afan de Ribera
o por la acción Imprimir).
Espero que te sirva.
--
Saludos desde Barcelona
Juan M. Afan de Ribera
<MVP Ms Access>
http://www.juanmafan.tk
http://www.clikear.com/webs4/juanmafan
Post by Jaume
Hola a todos los del grupo.
Tengo el siguiente problemilla con informes. Tengo diseñado mediante un
informe la hoja de liquidación de pagos para los empleados de un
compañia.
Post by Juan M. Afan de Ribera
Post by Jaume
Todo correcto. Esta funcionando sin problema.
El problema es que hoy me han pedido que el informe se imprima 1 o 2 o 3
copias para cada empleado según se solicite en un formulario previo de
selección de datos.
¿Como lo puedo hacer?.
Gracias anticipadas por vuestra ayuda.
LeoGrau®
2003-12-05 17:50:38 UTC
Permalink
Te cuento:
Ahora voy entendiendo desde el formulario si. Había entendido que la
instrucción era en el informe..

Ahora hice esto en el botón que manda la impresión.....y anda...!!!!!!!!!!!!

Private Sub Comando128_Click()
Dim cadNombreDocumento As String
cadNombreDocumento = "Facturas a"
DoCmd.OpenReport cadNombreDocumento, acPreview, "Filtro remitos"
DoCmd.PrintOut , , , , 2
DoCmd.Close acReport, "Facturas a"
End Sub

sigo agradeciendo, ojala pueda un dia devolver parte de lo que me ayudan.
CRACKER2000
2003-12-05 19:07:41 UTC
Permalink
¿Pero no seria mucho más facil con DoCmd.RunCommand acCmdPrint colocado
dentro de una función en un modulo y llamar a la función desde un botón
personalizado de la barra de herramientas de los informes?.
De esta manera se fuerza que aparezca la ventana de impresión de windows
donde se puede elegir impresora, páginas y número de copias a imprimir con
la ventaja que la función es llamada desde la barra de herramientas del los
informes.
Yo lo tengo así y va de lujo
Post by LeoGrau®
Ahora voy entendiendo desde el formulario si. Había entendido que la
instrucción era en el informe..
Ahora hice esto en el botón que manda la impresión.....y
anda...!!!!!!!!!!!!
Post by LeoGrau®
Private Sub Comando128_Click()
Dim cadNombreDocumento As String
cadNombreDocumento = "Facturas a"
DoCmd.OpenReport cadNombreDocumento, acPreview, "Filtro remitos"
DoCmd.PrintOut , , , , 2
DoCmd.Close acReport, "Facturas a"
End Sub
sigo agradeciendo, ojala pueda un dia devolver parte de lo que me ayudan.
Juan M. Afan de Ribera
2003-12-05 19:39:06 UTC
Permalink
También, también. Como comentaba en el primer mensaje, esa es "una forma de
hacerlo".

Todo depende de lo que se quiera conseguir.

--
Saludos desde Barcelona
Juan M. Afan de Ribera
<MVP Ms Access>
http://www.juanmafan.tk
http://www.clikear.com/webs4/juanmafan
Post by CRACKER2000
¿Pero no seria mucho más facil con DoCmd.RunCommand acCmdPrint colocado
dentro de una función en un modulo y llamar a la función desde un botón
personalizado de la barra de herramientas de los informes?.
De esta manera se fuerza que aparezca la ventana de impresión de windows
donde se puede elegir impresora, páginas y número de copias a imprimir con
la ventaja que la función es llamada desde la barra de herramientas del los
informes.
Yo lo tengo así y va de lujo
Post by LeoGrau®
Ahora voy entendiendo desde el formulario si. Había entendido que la
instrucción era en el informe..
Ahora hice esto en el botón que manda la impresión.....y
anda...!!!!!!!!!!!!
Post by LeoGrau®
Private Sub Comando128_Click()
Dim cadNombreDocumento As String
cadNombreDocumento = "Facturas a"
DoCmd.OpenReport cadNombreDocumento, acPreview, "Filtro remitos"
DoCmd.PrintOut , , , , 2
DoCmd.Close acReport, "Facturas a"
End Sub
sigo agradeciendo, ojala pueda un dia devolver parte de lo que me ayudan.
Juan M. Afan de Ribera
2003-12-05 19:23:29 UTC
Permalink
Pues me alegro de que te funcione, la verdad.

En cuanto a lo de devolver, te cuento:

Imagino que en esto está la gracia de los foros de discusión. Yo me he
pasado bastante tiempo simplemente leyendo preguntas y respuestas (bueno,
eso lo sigo haciendo) y un día empecé a responder, porque imagino que
acumulaba suficiente información sobre algún tema del cual se preguntaba.

Yo sigo preguntando como un verdadero pardillo en algunos foros y me encanta
también ver cómo la gente que sabe sobre esos temas te ayuda.

Así que ya ves, yo simplemente estoy devolviendo favores (y disfrutando de
hacerlo)

:-)

--
Saludos desde Barcelona
Juan M. Afan de Ribera
<MVP Ms Access>
http://www.juanmafan.tk
http://www.clikear.com/webs4/juanmafan
Post by LeoGrau®
Ahora voy entendiendo desde el formulario si. Había entendido que la
instrucción era en el informe..
Ahora hice esto en el botón que manda la impresión.....y
anda...!!!!!!!!!!!!
Post by LeoGrau®
Private Sub Comando128_Click()
Dim cadNombreDocumento As String
cadNombreDocumento = "Facturas a"
DoCmd.OpenReport cadNombreDocumento, acPreview, "Filtro remitos"
DoCmd.PrintOut , , , , 2
DoCmd.Close acReport, "Facturas a"
End Sub
sigo agradeciendo, ojala pueda un dia devolver parte de lo que me ayudan.
Jaume
2003-12-05 19:43:54 UTC
Permalink
Gracias, me ha servido la solucion que me has dado.
Sin embargo se me plantea una duda. No se si es rizar el rizo pero....

Habria alguna manera de que para cada una de las facturas o liquidaciones,
se pudiera imprimir un numero variable de copias?
Me explicare.
Imaginemos al Cliente A que desea tres copias de la factura, Cliente B con
dos tiene suficiente, Cliente C desea una, etc ....
Podriamos conseguir que a cada uno se le imprimieran las copias
correspondientes.?
No se donde poner el codigo. para que lo haga de esta menera.
Lo que si se es que debo añadir un campo en la ficha de clientes que indica
el numero de copias que desea.

Gracias a todos.
Juan M. Afan de Ribera
2003-12-05 22:09:31 UTC
Permalink
Bueno, no se cómo ni donde estás implementando esta rutina. Una manera de
hacerlo sería tener un campo en alguna tabla (tal vez la tabla clientes o
alguna relacionada con clientes) en donde existiera un campo llamado
NumeroCopias (por ejemplo) en el que almacenaras el número de copias que se
necesita imprimir para cada cliente en particular. Después, desde ese
formulario y conociendo el IdCliente o el campo clave de clientes, hacer una
búsqueda de ese valor. Por ejemplo, lo podrías hacer con DLookup.

Imaginemos que:

- buscamos en la tabla Clientes
- el campo clave de la tabla clientes es IdCliente
- el valor de este campo clave está en un cuadro de texto llamado
txtIdCliente

a partir de aquí, podríamos utilizar un código de este tipo, desde el mismo
formulario:

Dim Copias as integer

Copias = DLookup("NumeroCopias", "Clientes", "IdCliente=" &
Me.txtIdCliente)

DoCmd.OpenReport "TuInforme", acViewPreview
DoCmd.PrintOut , , , , Copias
DoCmd.Close acReport, "TuInforme"

como siempre esto es un ejemplo que tendrás que adaptar a tus necesidades
:-) Si necesitas más ayuda, pídela.

--
Saludos desde Barcelona
Juan M. Afan de Ribera
<MVP Ms Access>
http://www.juanmafan.tk
http://www.clikear.com/webs4/juanmafan
Post by Jaume
Gracias, me ha servido la solucion que me has dado.
Sin embargo se me plantea una duda. No se si es rizar el rizo pero....
Habria alguna manera de que para cada una de las facturas o liquidaciones,
se pudiera imprimir un numero variable de copias?
Me explicare.
Imaginemos al Cliente A que desea tres copias de la factura, Cliente B con
dos tiene suficiente, Cliente C desea una, etc ....
Podriamos conseguir que a cada uno se le imprimieran las copias
correspondientes.?
No se donde poner el codigo. para que lo haga de esta menera.
Lo que si se es que debo añadir un campo en la ficha de clientes que indica
el numero de copias que desea.
Gracias a todos.
Loading...