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

По умолчанию можно печатать отчеты, которые не содержат записей. Чтобы решить эту проблему, можно использовать макрос или код Microsoft Visual Basic для приложений (VBA), чтобы обнаружить отсутствие записей в отчете, а затем отменить операцию печати. В этой статье описано, как использовать оба метода.

В этой статье

Возможно, вам нужно отменить печать отчета, если он не содержит записей. Например, если вы начинаете продавать новый продукт, скорее всего, будет период времени, когда вам еще предстоит зарегистрировать какие-либо продажи. Поэтому следует учитывать возможность того, что некоторые отчеты могут не содержать подробных записей и что агрегатные функции, такие как функция Count , могут не иметь ничего для подсчета. Для корректной обработки такого вхождения можно создать макрос, который отменяет задание печати. Вы также можете добавить несколько строк тщательно размещенного кода VBA, чтобы сделать то же самое. VBA — это язык программирования, который Access использует.

Вы добавляете макрос или код VBA в процедуру события On Data отчета. Access запускает событие On No Data при каждом запуске отчета без записей. Макрос и код VBA, описанные в этой статье, отображают соответствующее сообщение и отменяют печать отчета, если этот отчет не содержит данных. При добавлении макроса или кода VBA в процедуру события On No Data макрос или код VBA выполняется при открытии отчета, который не содержит записей. Когда вы нажимаете кнопку ОК , чтобы закрыть любое оповещение, макрос также закроет пустой отчет. При добавлении макроса или кода VBA в отчет пустой отчет не будет открываться при попытке отобразить его в режиме отчета или макете, но отчет можно открыть в режиме конструктора.

Отмена печати с помощью макроса

Макрос, описанный в этом разделе, отображает оповещение при попытке напечатать пустой отчет. При нажатии кнопки ОК , чтобы закрыть окно сообщения, макрос автоматически отменяет операцию печати. Если не включить оповещение, оно будет выглядеть так, как будто при попытке распечатать отчет ничего не произойдет. Это может сбить с толку пользователей отчета.

Создание макроса

  1. В области навигации щелкните правой кнопкой мыши отчет, который требуется изменить, и выберите пункт Конструктор.

  2. На вкладке Конструктор в группе Показать или скрыть выберите пункт Страница свойств.

    ИЛИ

    Дважды щелкните поле в верхнем или правом углу отчета в зависимости от региональных и языковых параметров.

  3. Перейдите на вкладку Событие и в поле Свойства Нет данных щелкните Кнопка "Построитель".

    Откроется диалоговое окно Выбор построителя .

  4. Щелкните Построитель макросов и нажмите кнопку ОК.

    Конструктор макросов запускается и отображает пустой макрос.

  5. В раскрывающемся списке макрокоманды в окне конструктора макросов выберите MessageBox в списке.

  6. В поле Сообщение введите текст оповещения.

    Например, можно ввести следующее: Нет записей для отчета.

  7. При необходимости измените значение аргумента в поле Звуковой сигнал с Да на Нет и в списке Тип выберите тип значка, который должен отображаться в сообщении оповещения.

  8. В поле Заголовок введите заголовок оповещения.

    Например, можно ввести No Records.

  9. Выберите раскрывающийся список макрокоманды под действием MessageBox , а затем выберите ОтменаEvent.

  10. На вкладке Конструктор в группе Закрыть нажмите кнопку Сохранить.

  11. На вкладке Конструктор в группе Закрытие выберите команду Закрыть. Если появится оповещение с запросом на сохранение изменений в макросе и свойстве отчета, нажмите кнопку Да, закройте отчет, сохраните изменения при появлении запроса и перейдите к следующим шагам, чтобы протестировать его.

Тестирование макроса

  • В области навигации щелкните правой кнопкой мыши отчет, содержащий макрос, и выберите команду Печать. В зависимости от выбранных параметров в Access отображается оповещение.

    Если нажать кнопку ОК , чтобы закрыть сообщение, действие CancelEvent останавливает операцию печати. Так как вы не указали другое событие (например, открытие отчета для просмотра), отчет закрывается.

К началу страницы

Использование кода VBA для отмены печати

Код VBA, описанный здесь, очень похож на макрос, описанный в предыдущем разделе: он отображает оповещение при открытии пустого отчета, а затем отменяет операцию печати при закрытии оповещения.

Добавление кода VBA

  1. В области навигации щелкните правой кнопкой мыши отчет, который требуется изменить, и выберите пункт Конструктор.

    Примечание: Для выполнения этой процедуры используйте отчет, который не содержит записей.

  2. На вкладке Конструктор в группе Показать или скрыть выберите пункт Страница свойств.

    ИЛИ

    Дважды щелкните поле в верхнем или правом углу отчета в зависимости от региональных и языковых параметров.

  3. Перейдите на вкладку Событие и в поле Свойства Нет данных щелкните Кнопка "Построитель".

    Откроется диалоговое окно Выбор построителя .

  4. Щелкните Построитель кода и нажмите кнопку ОК.

    Редактор Visual Basic запускается и отображает пустую процедуру события.

  5. В редакторе Visual Basic введите следующий код, чтобы процедура Report_NoData выглядела примерно так:

    Private Sub Report_NoData (Cancel As Integer)
    MsgBox "There are no records to report", vbExclamation, "No Records"
    Cancel = True
    End Sub
  6. По завершении нажмите кнопку Файл, а затем нажмите кнопку Сохранить.

  7. Щелкните Файл, а затем — Закрыть и вернуться в Microsoft Access.

  8. Закройте открытый отчет и нажмите кнопку Да , чтобы подтвердить сохранение.

  9. В области навигации щелкните правой кнопкой мыши отчет, который вы только что изменили, и выберите команду Печать. В зависимости от выбранных параметров в Access отображается оповещение.

Процедура Report_NoData использует функцию MsgBox для отображения сообщения Нет записей для отчета и кнопки ОК . При нажатии кнопки ОК строка "Cancel=True" в процедуре указывает Access отменить отчет. Отмена — это аргумент, который автоматически передается в процедуру события и всегда проверяется Access по завершении процедуры события.

К началу страницы

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

Нужны дополнительные параметры?

Изучите преимущества подписки, просмотрите учебные курсы, узнайте, как защитить свое устройство и т. д.

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

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

Насколько вы удовлетворены качеством перевода?
Что повлияло на вашу оценку?
После нажатия кнопки "Отправить" ваш отзыв будет использован для улучшения продуктов и служб Майкрософт. Эти данные будут доступны для сбора ИТ-администратору. Заявление о конфиденциальности.

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

×