Властивості принтера, які не успадковуються об'єктами, які використовують принтер за промовчанням


Advanced: вимагає експертного кодування, оперативної сумісності та навичок багатокористувацької роботи. Ця стаття стосується бази даних Microsoft Access (MDB) або бази даних Microsoft Office Access 2007 (. accdb). Ця стаття також стосується проекту Microsoft Access (. adp).

Ознаки


Після того, як ви програмно змінити властивості програми. принтер , форми та звіти, які використовують принтер за промовчанням, не успадкують ці параметри автоматично.

Причина


Збережені форми та звіти зберігають інформацію про принтер як частину їхнього визначення. Під час попереднього перегляду або друку збережених форм і звітів ці об'єкти використовують відомості про принтер, які зберігаються в них замість успадкування параметрів програми. принтер .

Спосіб вирішення


Існує два можливих способів, щоб примусити звіт використовувати поточні настройки принтера. Microsoft надає приклади програмування тільки для ілюстрації, без гарантій або вираженого або припущених. Це включає в себе, але не обмежуючись, неявні гарантії придатності до продажу або для конкретної мети. У цій статті припускається, що ви знайомі з мовою програмування, який демонструє та засоби, які використовуються для створення та налагодження процедури. Інженери служби підтримки Microsoft можуть пояснити функціональність конкретної процедури, але вони не будуть змінювати ці приклади для надання додаткових функціональних можливостей або конструювати процедури відповідно до ваших конкретних вимог.

Установіть для властивості принтера застосунок.

Після того, як настроїти властивості застосунку. принтера об'єкта, встановити властивість принтера форми або звіт застосунку. принтера . Це змушує форму або звіт знищити його поточну структуру DevMode і успадковувати новий з програми. принтер об'єкта. Зверніть увагу, що цей підхід є хорошим для тимчасово зміни властивостей принтера об'єкта. Параметри принтера не будуть зберігатися разом із об'єктом, якщо ви явно не збережете об'єкт після цього. Це також призводить до того, що об'єкт буде встановлено на певний принтер протягом часу, що його відкрито. Щоб установити об'єкт принтера об'єкта застосунку. принтера , виконайте такі дії:
  1. Відкрийте зразкову базу даних «Борей. mdb».
  2. Закрийте основну форму кнопкової форми, коли вона з'явиться.
  3. Натисніть сполучення клавіш ALT + F11, щоб відкрити редактор Visual Basic.
  4. У меню Вставка виберіть команду модуль.
  5. Додайте до нового модуля такі Visual Basic для застосунків код:
    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. Клацніть у вищенаведеній процедурі, а потім у меню виконати виберіть команду запустити вкладену форму.
  7. У меню " файл " натисніть кнопку закрити і повернутися до Microsoft Access.
  8. У Microsoft Office Access 2003 або Microsoft Access 2002 виберіть у меню файл команду Параметри сторінки , а потім відкрийте вкладку сторінка . У Microsoft Office Access 2007 натисніть кнопку Microsoft Office, наведіть вказівник на пунктДрукі виберіть пункт попередній перегляд. На вкладціпопередній перегляд виберіть пункт Параметри сторінки у групімакет сторінки , а потім відкрийте вкладку сторінка. Зверніть увагу, що Формат паперу звіту встановлено як Legal, а орієнтація має значення Альбомна.
  9. Закрийте звіт.
  10. У вікні бази даних, попередній перегляд звіту Алфавітний список продуктів знову. Зверніть увагу, що параметри принтера не було автоматично збережено у звіті.

Призначення принтера параметрів об'єкта безпосередньо

Іншим обхідним рішенням є програмно встановити параметри принтера самого об'єкта, а не встановлювати їх на додаток. властивості принтера . Настроювання окремих властивостей принтера об'єкта властивість схожий на користувача вручну, змінивши параметри принтера в діалоговому вікні Параметри сторінки . Під час програмно встановити параметри принтера в об'єкті безпосередньо, параметри зберігаються з об'єкта автоматично. Щоб безпосередньо настроїти параметри принтера для об'єкта, виконайте такі дії:
  1. Відкрийте зразкову базу даних «Борей. mdb».
  2. Закрийте основну форму кнопкової форми, коли вона з'явиться.
  3. Натисніть сполучення клавіш ALT + F11, щоб відкрити редактор Visual Basic.
  4. У меню Вставка виберіть команду модуль.
  5. Додайте до нового модуля такі Visual Basic для застосунків код:
    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. Клацніть у вищенаведеній процедурі, а потім у меню виконати виберіть команду запустити вкладену форму.
  7. У меню " файл " натисніть кнопку закрити і повернутися до Microsoft Access.
  8. У меню файл виберіть команду Параметри сторінки, а потім відкрийте вкладку сторінка . У Microsoft Office Access 2007 натисніть кнопку Microsoft Office, наведіть вказівник на пунктДрукі виберіть пункт попередній перегляд. На вкладціпопередній перегляд виберіть пункт Параметри сторінки у групімакет сторінки , а потім відкрийте вкладку сторінка. Зверніть увагу, що Формат паперу звіту встановлено як Legal, а орієнтація має значення Альбомна.
  9. Закрийте звіт.
  10. У вікні бази даних, попередній перегляд звіту Алфавітний список продуктів знову. Зверніть увагу, що параметри принтера були автоматично збережені у звіті.

Стан


Така поведінка передбачено.

Додаткові відомості


Форми та звіти зберігають структуру « DevMode » як частину їхнього визначення. Структура DevMode — це структура Microsoft Windows, яка визначає відомості про принтер для певного об'єкта. Наприклад, такі елементи, як розмір паперу, папір bin і орієнтація зберігаються як частина цієї структури. Під час створення нової форми або звіту об'єкт, форма або звіт об'єкт автоматично успадковує DevMode структури з програми. принтера об'єкта. Під час збереження форми або звіту, структуру DevMode , успадковану автоматично, буде збережено з ним. За промовчанням властивості принтера для програми. принтер об'єкт буде таким же, як принтер за промовчанням у Microsoft Windows. Однак, можна програмно змінити ці властивості так, що Microsoft Access використовує інший набір властивостей принтера за промовчанням. Таблиці, запити, подання та збережених процедур не зберігають відомості про принтер як частину їхнього визначення. Тому під час друку таблиць, запитів, подань або збережених процедур вони завжди будуть використовувати поточні параметри, визначені у програмі. принтер об'єкта.

Дії, щоб відтворити поведінку

  1. У Access 2003 або Access 2002 відкрийте зразкову базу даних «Борей. mdb».
  2. Закрийте основну форму кнопкової форми, коли вона з'явиться.
  3. У меню вигляд виберіть пункт об'єкти бази даних, а потім – звіти.
  4. Клацніть звіт Алфавітний список продуктів у вікні бази даних, а потім у меню файл виберіть пункт Параметри сторінки.
  5. Перейдіть на вкладку сторінка та перевірте, чи вибрано параметр принтер за промовчанням у розділі принтер діалогового вікна.
  6. Натисніть кнопку "ОК" , щоб закрити діалогове вікно " Параметри сторінки ".
  7. У меню Вставка виберіть команду модуль.
  8. Додайте до модуля такі Visual Basic для застосунків код:
    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. Клацніть у вищенаведеній процедурі, а потім у меню виконати виберіть команду запустити вкладену форму.
  10. У меню " файл " натисніть кнопку закрити і повернутися до Microsoft Access.
  11. У меню вигляд виберіть пункт об'єкти бази даних, а потім команду запити.
  12. Клацніть запит Алфавітний список продуктів , а потім у меню файл виберіть команду попередній перегляд.
  13. У меню " файл " натисніть кнопку " Параметри сторінки".
  14. Перейдіть на вкладку сторінка . Зверніть увагу, що параметр орієнтація встановлено ландшафту та розмір паперу параметр встановлено законно належним чином.
  15. Натисніть кнопку скасувати , щоб закрити діалогове вікно Параметри сторінки , а потім закрийте запит.
  16. У меню вигляд виберіть пункт об'єкти бази даних, а потім – звіти.
  17. У вікні бази даних клацніть звіт Алфавітний список продуктів і натисніть кнопку попередній перегляд.
  18. У меню " файл " натисніть кнопку " Параметри сторінки".
  19. Перейдіть на вкладку сторінка . Зауважте, що параметр орієнтація встановлено на « Книжкова », а параметр « розмір паперу » має значення « буква», що відрізняється від параметрів, зроблених у програмі. об'єкт принтера .