** NORMAS DEL FORO **
Inicio del foro Inicio del foro > Access y VBA > Access y VBA
  Mensajes nuevos Mensajes nuevos RSS - Asignar Informe a Impresora
  Preguntas frecuentes Preguntas frecuentes  Buscar en el foro   Eventos   Registro Registro  Iniciar sesion Iniciar sesion

Tema cerradoAsignar Informe a Impresora

 Responder Responder
Autor
Mensaje
Brutus Ver desplegable
Habitual
Habitual


Unido: 10/Enero/2007
Localización: España
Estado: Sin conexión
Puntos: 164
Enlace directo a este mensaje Tema: Asignar Informe a Impresora
    Enviado: 25/Enero/2016 a las 21:33
Buenas, tengo la siguiente situación:

Tengo 3 impresoras distintas de las cuales utilizo 2 con Access

En Informe 1 lo imprimo con la Impresora 1
El Informe 2 lo imprimo con la Impresora 2
La Impresora 3 en la impresora que tengo configurada como impresora por defecto en el sistema , pero que No uso con Access

Bien,.......... No quiero utilizar DoCmd.RunCommand acCmdPrint para que se abra el cuadro dialogo sino lo que pretendo es que se imprima directamente cada Informe con su impresora correspondiente sin tener que seleccionar manualmente la impresora.


He probado el siguiente código



Function ChangePrinter(rptToChange As String, rptPrinter As String)

' >> https://support.microsoft.com/es-es/kb/319317
 Dim rpt1 As Report, rpt2 As Report DoCmd.OpenReport rptToChange, acViewDesign DoCmd.OpenReport rptPrinter, acViewDesign Set rpt1 = Reports(rptToChange) Set rpt2 = Reports(rptPrinter) rpt1.PrtDevNames = rpt2.PrtDevNames DoCmd.Close acReport, rptPrinter, acSaveNo DoCmd.OpenReport rptToChange, acViewPreview End Function
Pero me da error cuando la Base esta en formato ACCDE o MDE

Alguna idea ?

 



Editado por Brutus - 25/Enero/2016 a las 21:37
Arriba
MexMan70 Ver desplegable
Colaborador
Colaborador


Unido: 17/Julio/2007
Localización: DarkSide
Estado: Sin conexión
Puntos: 9235
Enlace directo a este mensaje Enviado: 26/Enero/2016 a las 00:01
Cuando compilas y creas un MDE o ACCDE no es posible modificar los objetos en tiempo de ejecución, Tendras que modificar el código, ejemplo:

Set Application.Printer = Application.Printers("NombreDeLaImpresora")
Application.Printer.Orientation = Orientacion
Application.Printer.PaperSize = Tamaño
DoCmd.OpenReport Informe, Modo
Set Application.Printer = Nothing

Donde Modo:
acViewPreview 'Preliminar
acViewNormal  'Impresora

El Nombre de la impresora puedes pasarlo directamente o bien obtenerlo asi:
   For Each prt In Application.Printers
      'Obtenemos el nombre de las impresoras
      Debug.print prt.DeviceName
      End If
   Next prt

OneDrive: http://sdrv.ms/Vk6eJd
Arriba
E. Feijoo Ver desplegable
Moderador
Moderador


Unido: 16/Abril/2004
Localización: España
Estado: Sin conexión
Puntos: 19948
Enlace directo a este mensaje Enviado: 26/Enero/2016 a las 03:14
Con lo sencillo que es asignársela en modo diseño al informe ....
Arriba
Pp2010 Ver desplegable
Asiduo
Asiduo


Unido: 20/Mayo/2010
Localización: Estados Unidos
Estado: Sin conexión
Puntos: 237
Enlace directo a este mensaje Enviado: 26/Enero/2016 a las 13:37
Por favor podrias explicar como es que se hace desde el modo diseño del informe, pues realmente nunca lo visto,
Que tengan un buen dia
Arriba
E. Feijoo Ver desplegable
Moderador
Moderador


Unido: 16/Abril/2004
Localización: España
Estado: Sin conexión
Puntos: 19948
Enlace directo a este mensaje Enviado: 26/Enero/2016 a las 14:18
Con el informe en modo diseño (o cualquier otra vista que lo permita) se acude a la CONFIGURACION DE PAGINA, en ella se selecciona normalmente el tamaño y posición, pero admite mas variaciones (de hecho cualquier a que permita el driver de la impresora).

Hay dos opciones, una es imprimir en la 'impresora por defecto' (la clásica), pero hay en esa misma pagina la de 'imprimir en una impresora especifica' que permite seleccionar tanto la impresora como cualquiera otra opción (color, tamaño, bandeja ....) y que solo se aplicara para ese informe en concreto.

Asi, se pueden enviar las facturas a una para que utilice papel pre-impreso de una de sus bandejas, y en esa misma (u otra de la red o local) a la que utiliza papel reciclado para presentar listados de punteo ....

¿Jamás os habéis dado un paseo por las opciones de Access? .... hay infinidad de utilidades 'útiles' que se activan con un click, en lugar de andar buscado a quien copiarle un método que ... no hace nada nuevo (si es que llega a funcionar de forma correcta).
Arriba
Brutus Ver desplegable
Habitual
Habitual


Unido: 10/Enero/2007
Localización: España
Estado: Sin conexión
Puntos: 164
Enlace directo a este mensaje Enviado: 27/Enero/2016 a las 08:10
Buenas,  el problema de Seleccionar la Impresora en Modo Diseño es que se presupone que la impresora debe esta instalada en el momento de hacer el Informe. No siempre se dispone insitu de la Impresora físicamente.



Con la instrucción  de Mexman70 me ha servido y funciona perfectamente
Set Application.Printer = Application.Printers("NombreDeLaImpresora")

Gracias a todos, se puede cerrar el tema


Arriba
E. Feijoo Ver desplegable
Moderador
Moderador


Unido: 16/Abril/2004
Localización: España
Estado: Sin conexión
Puntos: 19948
Enlace directo a este mensaje Enviado: 27/Enero/2016 a las 08:55
No estoy de acuerdo, Access (y en general Windows) no accede físicamente a la impresora, lo hace a través de sus drivers y los drivers son libres y gratuitos, se pueden instalar en cualquier maquina, en cualquier momento y con cualquier configuración.

Como es natural (otra cosa 'seria un milagro'), se pueden presentar vistas previas pero no ejecutar la acción física de pasar la información al papel .... porque no existe la maquina física, pero tampoco se puede hacer un scaneado o un toma de datos con un lector de códigos y sin embargo se puede crear una aplicación que los gestione (a eso se le conoce como DISEÑAR).

Es mas .... si tienes impresoras que respondan a un standard de minimos (sobre todo en el tratamiento del papel) creas 'tu impresora' renombrando a la que tengas por defecto y en el resto de las maquinas solo han de crear una copia (de la impresora que tengan) y ponerle de nombre el que hubieres inventado para 'tu impresora'.

En definitiva: lo mismo o mejor con menos esfuerzo.
Arriba
Pp2010 Ver desplegable
Asiduo
Asiduo


Unido: 20/Mayo/2010
Localización: Estados Unidos
Estado: Sin conexión
Puntos: 237
Enlace directo a este mensaje Enviado: 28/Enero/2016 a las 02:47
Muchas gracias Feijoo, pues no me habia dado vuelta por esos lares, pero siempre se aprende de ustedes, hay que ser mas curioso, de nuevo muchas gracias
Arriba
Brutus Ver desplegable
Habitual
Habitual


Unido: 10/Enero/2007
Localización: España
Estado: Sin conexión
Puntos: 164
Enlace directo a este mensaje Enviado: 20/Julio/2016 a las 22:14
Podrian porfavor cerrar este hilo ? Gracias
Arriba
 Responder Responder
  Compartir tema   

Ir al foro Permisos de foro Ver desplegable