Propiedades de impresora no heredadas por objetos que utilizan la impresora predeterminada


Avanzado: Requiere conocimientos expertos de codificación, interoperabilidad y multiusuario. Este artículo se aplica a una base de datos de Microsoft Access (.mdb) o a una base de datos de Microsoft Office Access 2007 (.accdb). Este artículo también se aplica a un proyecto de Microsoft Access (.adp).

Síntomas


Después de cambiar mediante programación las propiedades del objeto Application.Printer, los formularios e informes que utilizan la impresora predeterminada no heredan automáticamente esta configuración.

Causa


Los formularios e informes guardados almacenan información de impresora como parte de su definición. Al obtener una vista previa o imprimir formularios e informes guardados, estos objetos utilizan la información de la impresora que se almacena en ellos en lugar de heredar la configuración del objeto Application.Printer.

Resolución


Hay dos soluciones posibles para forzar el informe a utilizar la configuración actual de la impresora. Microsoft proporciona ejemplos de programación solo para ilustrar, sin garantía expresa o implícita. Esto incluye, pero no se limita a, las garantías implícitas de comerciabilidad o idoneidad para un propósito particular. En este artículo se supone que está familiarizado con el lenguaje de programación que se está demostrando y con las herramientas que se usan para crear y depurar procedimientos. Los ingenieros de soporte técnico de Microsoft pueden ayudar a explicar la funcionalidad de un procedimiento determinado, pero no modificarán estos ejemplos para proporcionar funcionalidad adicional o construir procedimientos para satisfacer sus requisitos específicos.

Establezca la propiedad Printer en Application.Printer

Después de personalizar las propiedades del objeto Application.Printer, establezca la propiedad Printer del formulario o informe en el objeto Application.Printer. Esto obliga al formulario o al informe a destruir su estructura DEVMODE actual y a heredar una nueva del objeto Application.Printer. Tenga en cuenta que este enfoque es bueno para cambiar temporalmente las propiedades de la impresora del objeto. La configuración de la impresora no se almacenará con el objeto a menos que guarde explícitamente el objeto después. Esto también hace que el objeto se establezca en Impresora específica durante el período de tiempo que está abierto. Para establecer la propiedad Printer del objeto en el objeto Application.Printer, siga estos pasos:
  1. Abra la base de datos de ejemplo Northwind.mdb.
  2. Cierre el formulario de la centralita principal cuando aparezca.
  3. Presione ALT+F11 para abrir el Editor de Visual Basic.
  4. En el menú Insertar, haga clic en Módulo.
  5. Agregue el siguiente código de Visual Basic para Aplicaciones al nuevo módulo:
    Sub ChangePrinterSettingsForReport()   Dim rpt As Access.Report   Dim prtr As Access.Printer      Set Application.Printer = Nothing   Set prtr = Application.Printer      'Set the default printer's orientation to landscape   prtr.Orientation = acPRORLandscape   'Set the default printer's paper size to legal   prtr.PaperSize = acPRPSLegal   'Print Preview the Alphabetical List of Products Report   DoCmd.OpenReport "Alphabetical List of Products", acPreview   Set rpt = Reports("Alphabetical List of Products")   'Set the Printer property of the report to the   'Application.Printer object   Set rpt.Printer = prtr   'Uncomment the following line if you wish to save the object   'with the current settings   'DoCmd.Save acReport, rpt.NameEnd Sub
  6. Haga clic en el procedimiento de ejemplo anterior y, a continuación, en el menú Ejecutar, haga clic en Ejecutar sub/UserForm.
  7. En el menú Archivo , haga clic en Cerrar y volver a Microsoft Access.
  8. En Microsoft Office Access 2003 o en Microsoft Access 2002, haga clic en Configurar página en el menú Archivo y, a continuación, haga clic en la ficha Página. En Microsoft Office Access 2007, haga clic en el botón de Microsoft Office, seleccioneImprimiry, a continuación, haga clic en Vista previa de impresión. En la pestaña Vista previa deimpresión, haga clic en Configurar página en el grupo Diseño depágina y, a continuación, haga clic en la ficha Página. Tenga en cuenta que el tamaño de papel del informe está establecido en Legaly la orientación se establece en Paisaje.
  9. Cierre el informe.
  10. En la ventana Base de datos, vuelva a imprimir la vista previa del informe Lista alfabética de productos. Tenga en cuenta que la configuración de la impresora no se guardó automáticamente con el informe.

Asigne la configuración de la impresora del objeto directamente

Otra solución alternativa es establecer mediante programación la configuración de la impresora del propio objeto, en lugar de establecerlos en la propiedad Application.Printer. Establecer las propiedades individuales de la propiedad Printer del objeto es similar a la que el usuario cambia manualmente la configuración de la impresora en el cuadro de diálogo Configurar página. Cuando se establece la configuración de la impresora del objeto directamente, la configuración se guarda automáticamente con el objeto. Para establecer la configuración de la impresora del objeto directamente, siga estos pasos:
  1. Abra la base de datos de ejemplo Northwind.mdb.
  2. Cierre el formulario de la centralita principal cuando aparezca.
  3. Presione ALT+F11 para abrir el Editor de Visual Basic.
  4. En el menú Insertar, haga clic en Módulo.
  5. Agregue el siguiente código de Visual Basic para Aplicaciones al nuevo módulo:
    Sub ChangePrinterSettingsForReport()   Dim rpt As Access.Report     DoCmd.OpenReport "Alphabetical List of Products", acPreview   Set rpt = Reports("Alphabetical List of Products")         'Set the default printer's orientation to landscape   rpt.Printer.Orientation = acPRORLandscape   'Set the default printer's paper size to legal   rpt.Printer.PaperSize = acPRPSLegalEnd Sub
  6. Haga clic en el procedimiento de ejemplo anterior y, a continuación, en el menú Ejecutar, haga clic en Ejecutar sub/UserForm.
  7. En el menú Archivo , haga clic en Cerrar y volver a Microsoft Access.
  8. En el menú Archivo, haga clic en Configurar páginay, a continuación, haga clic en la ficha Página. En Microsoft Office Access 2007, haga clic en el botón de Microsoft Office, seleccioneImprimiry, a continuación, haga clic en Vista previa de impresión. En la pestaña Vista previa deimpresión, haga clic en Configurar página en el grupo Diseño depágina y, a continuación, haga clic en la ficha Página. Tenga en cuenta que el tamaño de papel del informe está establecido en Legaly la orientación se establece en Paisaje.
  9. Cierre el informe.
  10. En la ventana Base de datos, vuelva a imprimir la vista previa del informe Lista alfabética de productos. Tenga en cuenta que la configuración de la impresora se guardó automáticamente con el informe.

Estado


Este comportamiento es una característica del diseño de la aplicación.

Más información


Los formularios y los informes almacenan una estructura denominada DEVMODE como parte de su definición. La estructura DEVMODE es una estructura de Microsoft Windows que define la información de impresora para un objeto determinado. Por ejemplo, elementos como el tamaño del papel, la bandeja de papel y la orientación se almacenan como parte de esta estructura. Al crear un nuevo formulario o objeto de informe, el objeto de formulario o informe hereda automáticamente la estructura DEVMODE del objeto Application.Printer. Al guardar el formulario o el informe, la estructura DEVMODE que se heredó se guarda automáticamente con él. De forma predeterminada, las propiedades de impresora para el objeto Application.Printer serán las mismas que la impresora predeterminada dentro de Microsoft Windows. Sin embargo, es posible cambiar mediante programación estas propiedades para que Microsoft Access use un conjunto diferente de propiedades para la impresora predeterminada. Las tablas, consultas, vistas y procedimientos almacenados no almacenan información de impresora como parte de su definición. Por lo tanto, al imprimir tablas, consultas, vistas o procedimientos almacenados, siempre usarán la configuración actual definida en el objeto Application.Printer.

Pasos para reproducir el comportamiento

  1. En Access 2003 o en Access 2002, abra la base de datos de ejemplo Northwind.mdb.
  2. Cierre el formulario de la centralita principal cuando aparezca.
  3. En el menú Ver , seleccione Objetosde base de datos y, a continuación, haga clic en Informes.
  4. Haga clic en el informe Lista alfabética de productos en la ventana Base de datos y, a continuación, en el menú Archivo, haga clic en Configurar página.
  5. Haga clic en la pestaña Página y compruebe que la opción Impresora predeterminada está seleccionada en la sección Impresora del cuadro de diálogo.
  6. Haga clic en Aceptar para cerrar el cuadro de diálogo Configurar página.
  7. En el menú Insertar, haga clic en Módulo.
  8. Agregue el siguiente código de Visual Basic para Aplicaciones al módulo:
    Sub ChangePrinterSettings()   'Set the default printer's orientation to landscape   Application.Printer.Orientation = acPRORLandscape   'Set the default printer's paper size to legal   Application.Printer.PaperSize = acPRPSLegalEnd Sub
  9. Haga clic en el procedimiento de ejemplo anterior y, a continuación, en el menú Ejecutar, haga clic en Ejecutar sub/UserForm.
  10. En el menú Archivo , haga clic en Cerrar y volver a Microsoft Access.
  11. En el menú Ver , seleccione Objetosde base de datos y, a continuación, haga clic en Consultas.
  12. Haga clic en la consulta Lista alfabética de productos y, a continuación, en el menú Archivo, haga clic en Vista previa de impresión.
  13. En el menú Archivo, haga clic en Configurar página.
  14. Haga clic en la ficha Página. Tenga en cuenta que la opción Orientación está establecida en Paisaje y la opción Tamaño de papel está establecida en Legal como se esperaba.
  15. Haga clic en Cancelar para cerrar el cuadro de diálogo Configurar página y, a continuación, cierre la consulta.
  16. En el menú Ver , seleccione Objetosde base de datos y, a continuación, haga clic en Informes.
  17. En la ventana Base de datos , haga clic en el informe Lista alfabética de productos y, a continuación, haga clic en Vista previa.
  18. En el menú Archivo, haga clic en Configurar página.
  19. Haga clic en la ficha Página. Tenga en cuenta que la opción Orientación está establecida en Retrato y la opción Tamaño de papel está establecida en Carta, que difiere de la configuración realizada al objeto Application.Printer.