ACC: How to Change a Report's Printer Using Code

Last reviewed: October 13, 1997
Article ID: Q129397
The information in this article applies to:
  • Microsoft Access versions 1.0, 1.1, 2.0, 7.0, 97

SUMMARY

Advanced: Requires expert coding, interoperability, and multiuser skills.

You can change the printer for a report or form in two ways:

  • You can change the Microsoft Windows Default Printer.
  • You can set the PrtDevNames and PrtDevMode properties.

This information supplements the Microsoft Access Help Topic about the PrtDevNames property.

MORE INFORMATION

Method 1: Changing the Microsoft Windows Default Printer

In the Page Setup (or Print Setup in version 2.0) dialog box, you can choose whether forms or reports are printed by either a default printer or a specific printer. If you choose a default printer, the form or report is printed to the Microsoft Windows default printer. If you want to change to another default printer, you must change the Microsoft Windows default printer.

To change the Microsoft Windows default printer using Visual Basic code (or Access Basic code in version 2.0 or earlier), use WriteProfileString to change the Device= entry of the Microsoft Windows section of the Win.ini file.

Method 2: Setting the PrtDevNames and PrtDevMode properties

The PrtDevNames property stores the name of the printer, and the PrtDevMode property stores the driver information. Both of these properties need to be changed in order to change the printer driver. If the PrtDevMode property does not match the PrtDevNames property (that is, the PrtDevMode property describes a different driver than the PrtDevNames property) a General Protection (GP) Fault may occur.

To change the printer driver, you must do the following:

  • Open a form or report in Design view.
  • Set the PrtDevNames property.
  • Retrieve and set the PrtDevMode property.

In order to set the PrtDevMode property to the appropriate structure, the driver information must be obtained. There are several ways to obtain this information:
  • Retrieve the information from a previously saved form or report that uses the desired printer.
  • Call the driver and retrieve the structure. In order to call the driver, a separate DLL is needed. This is because calls to functions in outside files must be declared ahead of time and the driver name will not be known. Instead, call a DLL that determines the correct printer driver to call and retrieves the DevMode structure.
  • Use the Windows Print Common Dialog.

REFERENCES

For more information about PrtDevMode and PrtDevNames, search for "PrtDevMode property" or "PrtDevNames property," using the Microsoft Access 97 Help Index or please see the following web site:

   http://www.microsoft.com/AccessDev/Articles/GetzCh10.HTM

For more information about WriteProfileString, the Win.ini, and the Default Printer in Windows 95, consult the Microsoft Developers Network CD-ROM (MSDN).
Keywords          : PtrSetup kbprint
Version           : 1.0 1.1 2.0 7.0 97
Platform          : WINDOWS
Hardware          : x86
Issue type        : kbhowto


================================================================================


THE INFORMATION PROVIDED IN THE MICROSOFT KNOWLEDGE BASE IS PROVIDED "AS IS" WITHOUT WARRANTY OF ANY KIND. MICROSOFT DISCLAIMS ALL WARRANTIES, EITHER EXPRESS OR IMPLIED, INCLUDING THE WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL MICROSOFT CORPORATION OR ITS SUPPLIERS BE LIABLE FOR ANY DAMAGES WHATSOEVER INCLUDING DIRECT, INDIRECT, INCIDENTAL, CONSEQUENTIAL, LOSS OF BUSINESS PROFITS OR SPECIAL DAMAGES, EVEN IF MICROSOFT CORPORATION OR ITS SUPPLIERS HAVE BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. SOME STATES DO NOT ALLOW THE EXCLUSION OR LIMITATION OF LIABILITY FOR CONSEQUENTIAL OR INCIDENTAL DAMAGES SO THE FOREGOING LIMITATION MAY NOT APPLY.

Last reviewed: October 13, 1997
© 1998 Microsoft Corporation. All rights reserved. Terms of Use.