Printereigenschappen die niet worden overgenomen door objecten die de standaardprinter gebruiken


Geavanceerd: vereist deskundige codering, interoperabiliteit en vaardigheden voor meerdere gebruikers. Dit artikel is van toepassing op een Microsoft Access-database (. mdb) of een Microsoft Office Access 2007-database (. ACCDB). Dit artikel is ook van toepassing op een Microsoft Access-project (. ADP).

Symptomen


Nadat u de eigenschappen van het object Application. printer programmatisch hebt gewijzigd, worden deze instellingen niet automatisch overgenomen door formulieren en rapporten die de standaardprinter gebruiken.

Oorzaak


Opgeslagen formulieren en rapporten slaan printergegevens op als onderdeel van hun definitie. Wanneer u opgeslagen formulieren en rapporten bekijkt of afdrukt, gebruiken deze objecten de printergegevens die erin zijn opgeslagen in plaats van de instellingen van het object Application. printer te overnemen.

Oplossing


Er zijn twee mogelijke oplossingen om te forceren dat het rapport de huidige printerinstellingen gebruikt. Microsoft biedt programmeervoorbeelden voor alleen illustratie, zonder uitdrukkelijke of impliciete garantie. Dit omvat, maar is niet beperkt tot, de impliciete garanties van verhandelbaarheid of geschiktheid voor een bepaald doel. In dit artikel wordt ervan uitgegaan dat u bekend bent met de programmeertaal die wordt gedemonstreerd en met de hulpprogramma's die worden gebruikt voor het maken en fouten opsporen in procedures. Ondersteuningstechnici van Microsoft kunnen u helpen de functionaliteit van een bepaalde procedure uit te leggen, maar deze voorbeelden worden niet gewijzigd om extra functionaliteit te bieden of om aan uw specifieke vereisten te voldoen.

Stel de eigenschap printer in op Application. printer

Nadat u de eigenschappen voor het object Application. printer hebt aangepast, stelt u de eigenschap printer van het formulier of rapport in op het object Application. printer . Dit dwingt het formulier of het rapport om de huidige DEVMODE -structuur te vernietigen en een nieuwe te overnemen van het object Application. printer . Deze benadering is goed voor het tijdelijk wijzigen van de printereigenschappen van het object. De printerinstellingen worden niet met het object opgeslagen, tenzij u het object daarna expliciet opslaat. Dit zorgt er ook voor dat het object wordt ingesteld op een specifieke printer voor de periode dat deze is geopend. Voer de volgende stappen uit om de printer eigenschap van het object in te stellen op het object Application. printer :
  1. Open de voorbeelddatabase Noordenwind. mdb.
  2. Sluit het hoofdschakelbord formulier wanneer het wordt weergegeven.
  3. Druk op ALT + F11 om de Visual Basic-editor te openen.
  4. Klik op Module in het menu Invoegen.
  5. Voeg de volgende Visual Basic for Applications-code toe aan de nieuwe module:
    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. Klik in de voorbeeldprocedure hierboven en klik vervolgens in het menu uitvoeren op Sub/UserForm uitvoeren.
  7. Klik in het menu bestand op sluiten en ga terug naar Microsoft Access.
  8. In Microsoft Office Access 2003 of in Microsoft Access 2002, klikt u op pagina-instelling in het menu bestand en klik vervolgens op het tabblad pagina . In Microsoft Office Access 2007, klikt u op de Microsoft Office-knop, wijsafdrukken, en klik vervolgens op afdrukvoorbeeld. Klik op het tabbladafdrukvoorbeeld op pagina-instelling in de groeppagina-indeling en klik vervolgens op het tabblad pagina. Houd er rekening mee dat het papierformaat van het rapport is ingesteld op Legalen dat de Afdrukstand is ingesteld op Liggend.
  9. Sluit het rapport.
  10. Afdrukvoorbeeld van het rapport Alfabetische lijst van producten in het database venster opnieuw. Houd er rekening mee dat de printerinstellingen niet automatisch met het rapport zijn opgeslagen.

De printer instellingen van het object rechtstreeks toewijzen

Een andere oplossing is het programmatisch instellen van de printerinstellingen van het object zelf, in plaats van deze in te stellen op de eigenschap Application. printer . Het instellen van de afzonderlijke eigenschappen van de printer eigenschap van het object is vergelijkbaar met de gebruiker die de printerinstellingen in het dialoogvenster pagina-instelling handmatig wijzigt. Wanneer u de printerinstellingen van het object programmatisch instelt, worden de instellingen automatisch met het object opgeslagen. Voer de volgende stappen uit om de printerinstellingen van het object rechtstreeks in te stellen:
  1. Open de voorbeelddatabase Noordenwind. mdb.
  2. Sluit het hoofdschakelbord formulier wanneer het wordt weergegeven.
  3. Druk op ALT + F11 om de Visual Basic-editor te openen.
  4. Klik op Module in het menu Invoegen.
  5. Voeg de volgende Visual Basic for Applications-code toe aan de nieuwe module:
    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. Klik in de voorbeeldprocedure hierboven en klik vervolgens in het menu uitvoeren op Sub/UserForm uitvoeren.
  7. Klik in het menu bestand op sluiten en ga terug naar Microsoft Access.
  8. Klik in het menu bestand op pagina-instellingen klik vervolgens op het tabblad pagina . In Microsoft Office Access 2007, klikt u op de Microsoft Office-knop, wijsafdrukken, en klik vervolgens op afdrukvoorbeeld. Klik op het tabbladafdrukvoorbeeld op pagina-instelling in de groeppagina-indeling en klik vervolgens op het tabblad pagina. Houd er rekening mee dat het papierformaat van het rapport is ingesteld op Legalen dat de Afdrukstand is ingesteld op Liggend.
  9. Sluit het rapport.
  10. Afdrukvoorbeeld van het rapport Alfabetische lijst van producten in het database venster opnieuw. Houd er rekening mee dat de printerinstellingen automatisch met het rapport zijn opgeslagen.

Status


Dit gedrag is inherent aan het ontwerp van het product.

Meer informatie


Formulieren en rapporten slaan een structuur op met de naam DEVMODE als onderdeel van hun definitie. De structuur DEVMODE is een Microsoft Windows-structuur waarmee printergegevens voor een bepaald object worden gedefinieerd. Items zoals papierformaat, papierlade en afdrukstand worden bijvoorbeeld opgeslagen als onderdeel van deze structuur. Wanneer u een nieuw formulier-of rapportobject maakt, neemt het formulier-of rapportobject automatisch de structuur DEVMODE over van het object Application. printer . Wanneer u het formulier of rapport opslaat, wordt de structuur DEVMODE die automatisch is overgenomen, hiermee opgeslagen. Standaard zijn de printereigenschappen voor het object Application. printer hetzelfde als de standaardprinter in Microsoft Windows. Het is echter mogelijk deze eigenschappen programmatisch te wijzigen, zodat in Microsoft Access een andere set eigenschappen voor de standaardprinter wordt gebruikt. Tabellen, query's, weergaven en opgeslagen procedures slaan geen printerinformatie op als onderdeel van de definitie. Wanneer u tabellen, query's, weergaven of opgeslagen procedures afdrukt, gebruiken ze daarom altijd de huidige instellingen die zijn gedefinieerd in het object Application. printer .

Het probleem reproduceren

  1. Open in Access 2003 of in Access 2002 de voorbeelddatabase Noordenwind. mdb.
  2. Sluit het hoofdschakelbord formulier wanneer het wordt weergegeven.
  3. Wijs database objectenaan in het menu beeld en klik vervolgens op rapporten.
  4. Klik op het rapport Alfabetische lijst met producten in het database venster en klik vervolgens op pagina-instellingin het menu bestand .
  5. Klik op het tabblad pagina en controleer of de optie standaardprinter is geselecteerd in het gedeelte printer van het dialoogvenster.
  6. Klik op OK om het dialoogvenster pagina-instelling te sluiten.
  7. Klik op Module in het menu Invoegen.
  8. Voeg de volgende Visual Basic for Applications-code toe aan de module:
    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. Klik in de voorbeeldprocedure hierboven en klik vervolgens in het menu uitvoeren op Sub/UserForm uitvoeren.
  10. Klik in het menu bestand op sluiten en ga terug naar Microsoft Access.
  11. Wijs database objectenaan in het menu beeld en klik vervolgens op query's.
  12. Klik op de Alfabetische lijst met producten query en klik vervolgens in het menu bestand op afdrukvoorbeeld.
  13. Klik op pagina-instellingin het menu bestand .
  14. Klik op het tabblad pagina . Houd er rekening mee dat de optie oriëntatie is ingesteld op Liggend en dat de optie papierformaat is ingesteld op legaal zoals verwacht.
  15. Klik op Annuleren om het dialoogvenster pagina-instelling te sluiten en sluit de query.
  16. Wijs database objectenaan in het menu beeld en klik vervolgens op rapporten.
  17. Klik in het database venster op het rapport Alfabetische lijst met producten en klik vervolgens op voorbeeld.
  18. Klik op pagina-instellingin het menu bestand .
  19. Klik op het tabblad pagina . Houd er rekening mee dat de optie oriëntatie is ingesteld op Staand en dat de optie papierformaat is ingesteld op letter, die verschilt van de instellingen die zijn aangebracht in het object Application. printer .