Свойства принтера, не наследуемые объектами, используюми принтер по умолчанию

Расширенный: Требует экспертного кодирования, совместимости и многопользовательских навыков. Эта статья относится к базе данных Microsoft Access (.mdb) или базе данных Microsoft Office Access 2007 (.accdb). Эта статья также относится к проекту Microsoft Access (.adp).

Проблемы

После того, как вы программно изменяете свойства объекта Application.Printer, формы и отчеты, которые используют принтер по умолчанию, автоматически не наследуют эти параметры.

Причина

Сохраненные формы и отчеты хранят информацию о принтере в рамках своего определения. При предварительном просмотре или печати сохраненных форм и отчетов эти объекты используют информацию о принтере, которая хранится в них, вместо того, чтобы наследовать настройки объекта Application.Printer.

Решение

Существует два возможных обходных пути, чтобы заставить отчет использовать текущие настройки принтера. Корпорация Майкрософт предоставляет примеры программирования только для иллюстраций, без гарантии, выраженной или подразумеваемой. Это включает в себя, но не ограничивается, подразумеваемые гарантии товарности или пригодности для конкретной цели. В этой статье предполагается, что вы знакомы с языком программирования, который демонстрируется, и с инструментами, которые используются для создания и отладки процедур. Инженеры службы поддержки Майкрософт могут помочь объяснить функциональность конкретной процедуры, но они не будут изменять эти примеры, чтобы обеспечить дополнительную функциональность или построить процедуры в соответствии с вашими конкретными требованиями.

Установите свойство принтера в Application.Printer

После настройки свойств для объекта Application.Printer установите свойство формы принтера или сообщите объекту Application.Printer. Это заставляет форму или отчет разрушить его текущую структуру DEVMODE и унаследовать новую от объекта Application.Printer. Обратите внимание, что этот подход хорош для временного изменения свойств принтера объекта. Настройки принтера не будут храниться вместе с объектом, если вы не сохраните объект после этого. Это также приводит к тому, что объект будет установлен на специальный принтер в течение периода времени, в течение которого он открыт. Чтобы установить свойство принтера объекта в объект ЕС Application.Printer, выполните следующие действия:

  1. Откройте выборочную базу данных Northwind.mdb.

  2. Закройте форму главного коммутатора при пообразиться.

  3. Нажмите НА ALT-F11, чтобы открыть визуальный базовый редактор.

  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. Нажмите в примере процедуры выше, а затем в меню Run, нажмите Run Sub/UserForm.

  7. В меню файла нажмите «Закрыть» и «Вернуться в доступ к Microsoft.

  8. В Microsoft Office Access 2003 или в Microsoft Access 2002 щелкните настройку страницы в меню файла, а затем нажмите на вкладку Страницы. В Microsoft Office Access 2007 нажмите кнопку Microsoft Office,укажите напечать,а затем нажмите Print Preview. На вкладкеPrint Preview щелкните настройку страницы в группе«План-страница», а затем щелкните на вкладку Страницы. Обратите внимание, что размер бумаги отчета установлен на юридическое,а ориентация установлена на Landscape.

  9. Закройте отчет.

  10. В окне базы данных снова распечатайте отчет Alphabetical List of Products. Обратите внимание, что настройки принтера не были автоматически сохранены с отчетом.

Назначать настройки объекта непосредственно

Другим решением является программное настройка настроек самого объекта принтера, а не их настройка в свойстве Application.Printer. Настройка отдельных свойств свойства принтера объекта аналогична изменению пользовательскими настройками принтера в диалоговом поле Настройки Страницы. При программном настройке настройки принтера объекта автоматически сохраняются настройки с помощью объекта. Чтобы настроить настройки принтера объекта напрямую, выполните следующие действия:

  1. Откройте выборочную базу данных Northwind.mdb.

  2. Закройте форму главного коммутатора при пообразиться.

  3. Нажмите НА ALT-F11, чтобы открыть визуальный базовый редактор.

  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. Нажмите в примере процедуры выше, а затем в меню Run, нажмите Run Sub/UserForm.

  7. В меню файла нажмите «Закрыть» и «Вернуться в доступ к Microsoft.

  8. В меню «Файл» щелкните настройку страницы,а затем щелкните вкладку Страницы. В Microsoft Office Access 2007 нажмите кнопку Microsoft Office,укажите напечать,а затем нажмите Print Preview. На вкладкеPrint Preview щелкните настройку страницы в группе«План-страница», а затем щелкните на вкладку Страницы. Обратите внимание, что размер бумаги отчета установлен на юридическое,а ориентация установлена на Landscape.

  9. Закройте отчет.

  10. В окне базы данных снова распечатайте отчет Alphabetical List of Products. Обратите внимание, что настройки принтера были автоматически сохранены вместе с отчетом.

Статус

Такое поведение является дизайном.

Дополнительная информация

Формы и отчеты хранят структуру, названную DEVMODE, как часть их определения. Структура DEVMODE — это структура Microsoft Windows, которая определяет информацию о принтере для конкретного объекта. Например, в этой структуре хранятся такие элементы, как размер бумаги, бумажная ячейка и ориентация. При создании новой формы или объекте отчета объект формы или отчета автоматически наследует структуру DEVMODE от объекта Application.Printer. При сохранении формы или отчета структура DEVMODE, которая была унаследована, автоматически сохраняется вместе с ней. По умолчанию свойства принтера для объекта Application.Printer будут такими же, как и принтер по умолчанию в Microsoft Windows. Однако можно программно изменить эти свойства таким образом, чтобы Microsoft Access использует другой набор свойств для принтера по умолчанию. Таблицы, запросы, представления и сохраненные процедуры не хранят информацию о принтере как часть их определения. Поэтому при печати таблиц, запросов, представлений или сохраненных процедур они всегда будут использовать текущие параметры, определенные в объекте Application.Printer.

Шаги для воспроизведения поведения

  1. В Access 2003 или в Access 2002 откройте выборочную базу данных Northwind.mdb.

  2. Закройте форму главного коммутатора при пообразиться.

  3. В меню View укажите на объекты базы данных,а затем нажмите Отчеты.

  4. Нажмите на алфавитный список продуктов в окне базы данных, а затем в меню файла нажмите кнопку Настройка страницы.

  5. Нажмите на вкладку Страницы и убедитесь, что параметр принтера по умолчанию выбран в разделе Принтер в диалоговом поле.

  6. Нажмите OK, чтобы закрыть диалоговую будку настройки страницы.

  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. Нажмите в примере процедуры выше, а затем в меню Run, нажмите Run Sub/UserForm.

  10. В меню файла нажмите «Закрыть» и «Вернуться в доступ к Microsoft.

  11. В меню View укажите на объекты базы данных,а затем нажмите запросы.

  12. Нажмите на алфавитный список продуктов запроса, а затем в меню файла, нажмите Print Preview.

  13. В меню файла щелкните настройку страницы.

  14. Нажмите на вкладку Страницы. Обратите внимание, что опция Ориентация установлена на Landscape, а опция Paper Size установлена в соответствии с ожидаемой возможностью.

  15. Нажмите Отменить, чтобы закрыть поле диалога настройки страницы, а затем закрыть запрос.

  16. В меню View укажите на объекты базы данных,а затем нажмите Отчеты.

  17. В окне базы данных щелкните алфавитный список продуктов, а затем нажмите Предварительный просмотр.

  18. В меню файла щелкните настройку страницы.

  19. Нажмите на вкладку Страница. Обратите внимание, что параметр Ориентация настроен а портрет и опция Размер бумаги установлена на письмо, который отличается от настроек, сделанных для объекта Application.Printer.

Нужна дополнительная помощь?

Совершенствование навыков
Перейти к обучению
Первоочередный доступ к новым возможностям
Присоединение к программе предварительной оценки Майкрософт

Были ли сведения полезными?

Спасибо за ваш отзыв!

Благодарим за отзыв! Возможно, будет полезно связать вас с одним из наших специалистов службы поддержки Office.

×