Druckereigenschaften, die nicht von Objekten geerbt werden, die den Standarddrucker verwenden


Erweitert: Erfordert Expertencodierung, Interoperabilität und Mehrbenutzerkenntnisse. Dieser Artikel gilt für eine Microsoft Access-Datenbank (.mdb) oder eine Microsoft Office Access 2007-Datenbank (.accdb). Dieser Artikel gilt auch für ein Microsoft Access-Projekt (.adp).

Problembeschreibung


Nachdem Sie die Eigenschaften des Application.Printer-Objekts programmgesteuert geändert haben, erben Formulare und Berichte, die den Standarddrucker verwenden, diese Einstellungen nicht automatisch.

Ursache


Gespeicherte Formulare und Berichte speichern Druckerinformationen als Teil ihrer Definition. Wenn Sie gespeicherte Formulare und Berichte in der Vorschau anzeigen oder drucken, verwenden diese Objekte die darin gespeicherten Druckerinformationen, anstatt die Einstellungen vom Application.Printer-Objekt zu erben.

Fehlerbehebung


Es gibt zwei mögliche Problemumgehungen, um den Bericht zu zwingen, die aktuellen Druckereinstellungen zu verwenden. Microsoft stellt nur Programmierbeispiele zur Veranschaulichung zur Verfügung, ohne dass eine Garantie ausdrücklich oder stillschweigend besteht. Dazu gehören unter dessen Eingrenzen, aber nicht beschränkt auf die stillschweigende Gewährleistung der Marktgängigkeit oder Eignung für einen bestimmten Zweck. In diesem Artikel wird davon ausgegangen, dass Sie mit der gezeigten Programmiersprache und den Tools, die zum Erstellen und Debuggen von Prozeduren verwendet werden, vertraut sind. Microsoft-Supporttechniker können Ihnen helfen, die Funktionalität einer bestimmten Prozedur zu erläutern, ändern diese Beispiele jedoch nicht, um zusätzliche Funktionen bereitzustellen oder Verfahren zu erstellen, die Ihren spezifischen Anforderungen entsprechen.

Festlegen der Druckereigenschaft auf Application.Printer

Nachdem Sie die Eigenschaften für das Application.Printer-Objekt angepasst haben, legen Sie die Printer-Eigenschaft des Formulars oder Berichts auf das Application.Printer-Objekt fest. Dadurch wird das Formular oder der Bericht dazu zwingt, seine aktuelle DEVMODE-Struktur zu zerstören und eine neue vom Application.Printer-Objekt zu erben. Beachten Sie, dass dieser Ansatz gut ist, um die Druckereigenschaften des Objekts vorübergehend zu ändern. Die Druckereinstellungen werden nicht mit dem Objekt gespeichert, es sei denn, Sie speichern das Objekt anschließend explizit. Dadurch wird das Objekt auch für den Zeitraum, zu dem es geöffnet ist, auf "Bestimmter Drucker" festgelegt. Gehen Sie folgendzuunter Schritte vor, um die Printer-Eigenschaft des Objekts auf das Application.Printer-Objekt festzulegen:
  1. Öffnen Sie die Beispieldatenbank Northwind.mdb.
  2. Schließen Sie das Formular Hauptschalttafel, wenn es angezeigt wird.
  3. Drücken Sie ALT+F11, um den Visual Basic-Editor zu öffnen.
  4. Klicken Sie im Menü Einfügen auf Modul.
  5. Fügen Sie dem neuen Modul den folgenden Visual Basic for Applications-Code hinzu:
    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. Klicken Sie in das Beispielverfahren oben, und klicken Sie dann im Menü Ausführen auf Sub/UserForm ausführen.
  7. Klicken Sie im Menü Datei auf Schließen und Zurück zu Microsoft Access.
  8. Klicken Sie in Microsoft Office Access 2003 oder in Microsoft Access 2002 im Menü Datei auf Seiteneinrichtung, und klicken Sie dann auf die Registerkarte Seite. Klicken Sie in Microsoft Office Access 2007 auf die Schaltfläche Microsoft Office, zeigen Sie aufDrucken, und klicken Sie dann auf "Vorschau drucken". Klicken Sie auf der RegisterkarteSeitenvorschau in der GruppeSeitenlayout auf Seiteneinrichtung, und klicken Sie dann auf die Registerkarte Seiten. Beachten Sie, dass der Papierumfang des Berichts auf "Legal" und "Ausrichtung" auf "Landschaft"festgelegt ist.
  9. Schließen Sie den Bericht.
  10. Drucken Sie im Datenbankfenster erneut eine Vorschau des Berichts Alphabetische Liste der Produkte. Beachten Sie, dass die Druckereinstellungen nicht automatisch mit dem Bericht gespeichert wurden.

Zuweisen der Druckereinstellungen des Objekts direkt

Eine weitere Problemumgehung besteht darin, die Druckereinstellungen des Objekts selbst programmgesteuert festzulegen, anstatt sie auf die Application.Printer-Eigenschaft festzulegen. Das Festlegen der einzelnen Eigenschaften der Printer-Eigenschaft des Objekts ähnelt dem manuell endenden Ändern der Druckereinstellungen im Dialogfeld Seiteneinrichtung. Wenn Sie die Druckereinstellungen des Objekts programmgesteuert direkt festlegen, werden die Einstellungen automatisch mit dem Objekt gespeichert. Gehen Sie folgendzulande vor, um die Druckereinstellungen des Objekts direkt festzulegen:
  1. Öffnen Sie die Beispieldatenbank Northwind.mdb.
  2. Schließen Sie das Formular Hauptschalttafel, wenn es angezeigt wird.
  3. Drücken Sie ALT+F11, um den Visual Basic-Editor zu öffnen.
  4. Klicken Sie im Menü Einfügen auf Modul.
  5. Fügen Sie dem neuen Modul den folgenden Visual Basic for Applications-Code hinzu:
    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. Klicken Sie in das Beispielverfahren oben, und klicken Sie dann im Menü Ausführen auf Sub/UserForm ausführen.
  7. Klicken Sie im Menü Datei auf Schließen und Zurück zu Microsoft Access.
  8. Klicken Sie im Menü Datei auf Seiteneinrichtung, und dann auf die Registerkarte Seite. Klicken Sie in Microsoft Office Access 2007 auf die Schaltfläche Microsoft Office, zeigen Sie aufDrucken, und klicken Sie dann auf "Vorschau drucken". Klicken Sie auf der RegisterkarteSeitenvorschau in der GruppeSeitenlayout auf Seiteneinrichtung, und klicken Sie dann auf die Registerkarte Seiten. Beachten Sie, dass der Papierumfang des Berichts auf "Legal" und "Ausrichtung" auf "Landschaft"festgelegt ist.
  9. Schließen Sie den Bericht.
  10. Drucken Sie im Datenbankfenster erneut eine Vorschau des Berichts Alphabetische Liste der Produkte. Beachten Sie, dass die Druckereinstellungen automatisch mit dem Bericht gespeichert wurden.

Status


Es handelt sich hierbei um ein beabsichtigtes Verhalten.

Weitere Informationen


Formulare und Berichte speichern eine Struktur mit dem Namen DEVMODE als Teil ihrer Definition. Die DEVMODE-Struktur ist eine Microsoft Windows-Struktur, die Druckerinformationen für ein bestimmtes Objekt definiert. Beispielsweise werden Artikel wie Papierformat, Papierkorb und Ausrichtung als Teil dieser Struktur gespeichert. Wenn Sie ein neues Formular- oder Berichtsobjekt erstellen, erbt das Formular- oder Berichtsobjekt automatisch die DEVMODE-Struktur vom Application.Printer-Objekt. Wenn Sie das Formular oder den Bericht speichern, wird die vererbte DEVMODE-Struktur automatisch damit gespeichert. Standardmäßig sind die Druckereigenschaften für das Application.Printer-Objekt mit dem Standarddrucker in Microsoft Windows identisch. Es ist jedoch möglich, diese Eigenschaften programmgesteuert zu ändern, sodass Microsoft Access einen anderen Satz von Eigenschaften für den Standarddrucker verwendet. Tabellen, Abfragen, Ansichten und gespeicherte Prozeduren speichern Druckerinformationen nicht als Teil ihrer Definition. Wenn Sie Tabellen, Abfragen, Ansichten oder gespeicherte Prozeduren drucken, verwenden sie daher immer die aktuellen Einstellungen, die im Application.Printer-Objekt definiert sind.

Schritte zum Reproduzieren des Verhaltens

  1. Öffnen Sie in Access 2003 oder in Access 2002 die Beispieldatenbank Northwind.mdb.
  2. Schließen Sie das Formular Hauptschalttafel, wenn es angezeigt wird.
  3. Zeigen Sie im Menü Ansicht auf Datenbankobjekte, und klicken Sie dann auf Berichte.
  4. Klicken Sie im Datenbankfenster auf den Bericht Alphabetische Liste der Produkte, und klicken Sie dann im Menü Datei auf Seiteneinrichtung.
  5. Klicken Sie auf die Registerkarte Seite, und stellen Sie sicher, dass die Option Standarddrucker im Abschnitt Drucker des Dialogfelds ausgewählt ist.
  6. Klicken Sie auf OK, um das Dialogfeld Seiteneinrichtung zu schließen.
  7. Klicken Sie im Menü Einfügen auf Modul.
  8. Fügen Sie dem Modul den folgenden Visual Basic for Applications-Code hinzu:
    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. Klicken Sie in das Beispielverfahren oben, und klicken Sie dann im Menü Ausführen auf Sub/UserForm ausführen.
  10. Klicken Sie im Menü Datei auf Schließen und Zurück zu Microsoft Access.
  11. Zeigen Sie im Menü Ansicht auf Datenbankobjekte, und klicken Sie dann auf Abfragen.
  12. Klicken Sie auf die Abfrage Alphabetische Liste der Produkte, und klicken Sie dann im Menü Datei auf "Vorschau drucken".
  13. Klicken Sie im Menü Datei auf Seite einrichten.
  14. Klicken Sie auf die Registerkarte Seite. Beachten Sie, dass die Option Ausrichtung auf Querformat und die Option Papiergröße wie erwartet auf Legal festgelegt ist.
  15. Klicken Sie auf Abbrechen, um das Dialogfeld Seiteneinrichtung zu schließen, und schließen Sie dann die Abfrage.
  16. Zeigen Sie im Menü Ansicht auf Datenbankobjekte, und klicken Sie dann auf Berichte.
  17. Klicken Sie im Fenster Datenbank auf den Bericht Alphabetische Liste der Produkte, und klicken Sie dann auf Vorschau.
  18. Klicken Sie im Menü Datei auf Seite einrichten.
  19. Klicken Sie auf die Registerkarte Seite. Beachten Sie, dass die Option Ausrichtung auf Hochformat und die Option Papierformat auf Buchstabefestgelegt ist, die sich von den Einstellungen des Application.Printer-Objekts unterscheidet.