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



The information in this article applies to:

  • Microsoft Access 1.0
  • Microsoft Access 1.1
  • Microsoft Access 2.0
  • Microsoft Access for Windows 95 7.0
  • Microsoft Access 97

This article was previously published under Q129397

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://msdn.microsoft.com/library/default.asp?url=/library/en-us/off2000/html/acproPrtDevMode.asp

For more information about WriteProfileString, the Win.ini, and the Default Printer in Windows 95, consult the Microsoft Developers Network CD-ROM (MSDN).

Modification Type:MinorLast Reviewed:10/13/2005
Keywords:kbhowto kbprint KB129397