Accedi a Microsoft
Accedi o crea un account.
Salve,
Select a different account.
Hai più account
Scegli l'account con cui vuoi accedere.

Avanzate: richiede competenze esperte di codifica, interoperabilità e multiutente. In questo articolo si applica a un database di Microsoft Access (mdb) o un database di Microsoft Office Access 2007 (con estensione accdb). Questo articolo si applica anche a un progetto di Microsoft Access (adp).

Sintomi

Dopo aver modificato a livello di codice le proprietà dell'oggetto Application.Printer, le maschere e i report che utilizzano la stampante predefinita non ereditano automaticamente queste impostazioni.

Causa

I moduli e i report salvati memorizzano le informazioni sulla stampante come parte della loro definizione. Quando si visualizzano in anteprima o si stampano maschere e report salvati, questi oggetti utilizzano le informazioni sulla stampante memorizzate al loro interno anziché ereditare le impostazioni dall'oggetto Application.Printer.

Risoluzione

Esistono due possibili soluzioni alternative per forzare il report a utilizzare le impostazioni correnti della stampante. Microsoft fornisce esempi di programmazione solo a scopo illustrativo, senza garanzia espressa o implicita. Ciò include, ma non è limitato a, le garanzie implicite di merchantability o idoneità per uno scopo particolare. In questo articolo si presuppone che si abbia familiarità con il linguaggio di programmazione che viene dimostrato e con gli strumenti utilizzati per creare ed eseguire il debug delle procedure. I tecnici del supporto Microsoft possono spiegare la funzionalità di una particolare procedura, ma non modificheranno questi esempi per fornire funzionalità aggiuntive o creare procedure per soddisfare i requisiti specifici.

Impostare la proprietà Printer su Application.Printer

Dopo aver personalizzato le proprietà dell'oggetto Application.Printer, impostare la proprietà Printer della maschera o del report sull'oggetto Application.Printer. In questo modo la maschera o il report per eliminare la struttura DEVMODE corrente e di ereditarne una nuova dall'oggetto Application.Printer. Si noti che questo approccio è valido per modificare temporaneamente le proprietà della stampante dell'oggetto. Le impostazioni della stampante non verranno memorizzate con l'oggetto a meno che non si salvi esplicitamente l'oggetto in un secondo momento. In questo modo l'oggetto da impostare su stampante specifica per il periodo di tempo in cui è aperto. Per impostare la proprietà Printer dell'oggetto sull'oggetto Application.Printer, attenersi alla seguente procedura:

  1. Aprire il database di esempio Northwind.mdb.

  2. Chiudere il modulo Switchboard principale quando viene visualizzato.

  3. Premere ALT e F11 per aprire Visual Basic Editor.

  4. Scegliere Modulodal menu Inserisci .

  5. Aggiungere il seguente codice di Visual Basic, Applications Edition al nuovo modulo:

    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. Fare clic sulla procedura di esempio precedente e quindi scegliere Esegui Sub/UserFormdal menu Esegui .

  7. Scegliere Chiudi e torna a Microsoft Accessdal menu File .

  8. In Microsoft Office Access 2003 o Microsoft Access 2002, scegliere Imposta pagina dal menu File , quindi fare clic sulla scheda pagina . In Microsoft Office Access 2007, fare clic sul Pulsante Microsoft Office, scegliereStampa, quindi fare clic su Anteprima di stampa. Nella schedaAnteprima di stampa fare clic su Imposta pagina nel gruppo Layoutdi pagina e quindi fare clic sulla scheda Pagina. Si noti che Formato carta del report è impostato su Legalee l'orientamento è impostato su Orizzontale.

  9. Chiudere il report.

  10. Nella finestra del database, anteprima di stampa del report Elenco alfabetico prodotti. Si noti che le impostazioni della stampante non sono state salvate automaticamente con il report.

Assegnazione diretta delle impostazioni della stampante dell'oggetto

Un'altra soluzione consiste nell'impostare a livello di codice le impostazioni della stampante dell'oggetto stesso, anziché impostarle sulla proprietà Application.Printer. L'impostazione delle singole proprietà della proprietà Printer dell'oggetto è simile alla modifica manuale delle impostazioni della stampante da parte dell'utente nella finestra di dialogo Imposta pagina. Quando si impostano direttamente le impostazioni della stampante dell'oggetto a livello di codice, le impostazioni vengono salvate automaticamente con l'oggetto. Per impostare direttamente le impostazioni della stampante dell'oggetto, attenersi alla seguente procedura:

  1. Aprire il database di esempio Northwind.mdb.

  2. Chiudere il modulo Switchboard principale quando viene visualizzato.

  3. Premere ALT e F11 per aprire Visual Basic Editor.

  4. Scegliere Modulodal menu Inserisci .

  5. Aggiungere il seguente codice di Visual Basic, Applications Edition al nuovo modulo:

    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. Fare clic sulla procedura di esempio precedente e quindi scegliere Esegui Sub/UserFormdal menu Esegui .

  7. Scegliere Chiudi e torna a Microsoft Accessdal menu File .

  8. Scegliere Imposta paginadal menu File , quindi fare clic sulla scheda Pagina . In Microsoft Office Access 2007, fare clic sul Pulsante Microsoft Office, scegliereStampa, quindi fare clic su Anteprima di stampa. Nella schedaAnteprima di stampa fare clic su Imposta pagina nel gruppo Layoutdi pagina e quindi fare clic sulla scheda Pagina. Si noti che Formato carta del report è impostato su Legalee l'orientamento è impostato su Orizzontale.

  9. Chiudere il report.

  10. Nella finestra del database, anteprima di stampa del report Elenco alfabetico prodotti. Si noti che le impostazioni della stampante sono state salvate automaticamente con il report.

Stato

Si tratta di un comportamento correlato alla progettazione del prodotto.

Ulteriori informazioni

Le maschere e i report archiviano una struttura denominata DEVMODE come parte della relativa definizione. La struttura DEVMODE è una struttura di Microsoft Windows che definisce le informazioni sulla stampante per un determinato oggetto. Ad esempio, elementi quali il formato carta, il contenitore della carta e l'orientamento vengono memorizzati come parte di questa struttura. Quando si crea un nuovo oggetto maschera o report, la struttura della maschera o del report eredita automaticamente la struttura DEVMODE dall'oggetto Application.Printer. Quando si salva la maschera o il report, la struttura DEVMODE ereditata viene salvata automaticamente con essa. Per impostazione predefinita, le proprietà della stampante per l'oggetto Application.Printer saranno le stesse della stampante predefinita all'interno di Microsoft Windows. Tuttavia, è possibile modificare queste proprietà a livello di codice in modo che Microsoft Access utilizzi un set di proprietà diverso per la stampante predefinita. Tabelle, query, viste e stored procedure non archiviano le informazioni sulla stampante come parte della loro definizione. Pertanto, quando si stampano tabelle, query, viste o stored procedure, verranno sempre utilizzate le impostazioni correnti definite nell'oggetto Application.Printer.

Procedura per riprodurre il problema

  1. In Access 2003 o Access 2002, aprire il database di esempio Northwind.mdb.

  2. Chiudere il modulo Switchboard principale quando viene visualizzato.

  3. Scegliere Oggetti di databasedal menu Visualizza , quindi fare clic su Report.

  4. Fare clic sul report Elenco alfabetico prodotti nella finestra del database, quindi scegliere Imposta paginadal menu File .

  5. Fare clic sulla scheda Pagina e verificare che l'opzione Stampante predefinita sia selezionata nella sezione Stampante della finestra di dialogo.

  6. Fare clic su OK per chiudere la finestra di dialogo Imposta pagina.

  7. Scegliere Modulodal menu Inserisci .

  8. Aggiungere il seguente codice di Visual Basic, Applications Edition al modulo:

    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. Fare clic sulla procedura di esempio precedente e quindi scegliere Esegui Sub/UserFormdal menu Esegui .

  10. Scegliere Chiudi e torna a Microsoft Accessdal menu File .

  11. Scegliere Oggetti di databasedal menu Visualizza , quindi fare clic su Query.

  12. Fare clic sulla query Elenco alfabetico prodotti e quindi scegliere Anteprima di stampadal menu File .

  13. Scegliere Imposta pagina dal menu File.

  14. Fare clic sulla scheda Pagina. Si noti che l'opzione Orientamento è impostata su Orizzontale e l'opzione Formato carta è impostata su Legale come previsto.

  15. Fare clic su Annulla per chiudere la finestra di dialogo Imposta pagina e quindi chiudere la query.

  16. Scegliere Oggetti di databasedal menu Visualizza , quindi fare clic su Report.

  17. Nella finestra del database fare clic sul report Elenco alfabetico prodotti e quindi su Anteprima.

  18. Scegliere Imposta pagina dal menu File.

  19. Fare clic sulla scheda Pagina. Si noti che l'opzione Orientamento è impostata su Verticale e l'opzione Formato carta è impostata su Lettera, che differisce dalle impostazioni effettuate per l'oggetto Application.Printer .

Serve aiuto?

Amplia le tue competenze

Esplora i corsi di formazione >

Ottieni in anticipo le nuove caratteristiche

Partecipa a Microsoft Insider >

Queste informazioni sono risultate utili?

Come valuti la qualità della lingua?
Cosa ha influito sulla tua esperienza?

Grazie per il feedback!

×