Фильтрация данных в отчете

Записи в отчетах, так же как и в формах, могут фильтроваться. Для этого существует свойство отчета Фильтр (Filter). Значением этого свойства является логическое выражение WHERE инструкции SELECT. Применение фильтра приводит к тому, что, когда для конкретной записи заданное в качестве фильтра логическое выражение принимает значение Истина (True), эта запись отображается, в противном случае — нет. Пример такого выражения представлен на (задан интервал дат, в котором должно лежать значение поля "ДатаИсполнения" (ShippedDate)). Для того чтобы фильтр, введенный в диалоговом окне свойств отчета, был применен к записям в отчете, требуется еще установить значение свойства Фильтр включен (Filter On) равным Да (Yes). В противном случае он сохраняется, загружается при выполнении отчета, но не применяется. Свойство можно установить либо в диалоговом окне свойств, как это показано на, либо в макросе или процедуре VBA.

 
Работа с макросами
Основной набор средств Microsoft Access, который мы рассматривали в предыдущих главах книги, ориентирован на пользователей, не владеющих языками программирования. Для программистов же к этим средствам добавлены макросы (небольшие программы на языке макрокоманд системы Access) и модули (процедуры на языке Visual Basic for Application, VBA). С их помощью можно существенно расширить функциональные возможности создаваемого вами приложения и настроить его на нужды конкретных пользователей. В этой главе мы познакомимся с одним из этих средств — макросами и одним из языков программирования Access — языком макрокоманд. С модулями и языком VBA мы вас познакомим.
Итак, мы будем обсуждать следующие вопросы:

  • Понятие макроса
  • Использование макросов в приложениях-
  • Создание макросов и групп макросов
  • Задание условий для управления процессом выполнения макроса
  • Различные способы запуска макросов
  • Советы по отладке макросов
  • Обработка событий в формах и отчетах с помощью макросов
  • Преобразование макросов в процедуры VBA

 

 

Использование макросов в базе данных Microsoft Access
С помощью макросов можно выполнить практически все действия над объектами Access из тех, которые были описаны в предыдущих главах.
Макрос в Access представляет собой структуру, состоящую из одной или нескольких макрокоманд, которые выполняются либо последовательно, либо в порядке, заданном определенными условиями. Набор макрокоманд в Access очень широк, с помощью макросов можно реализовать многое из того, что позволяют сделать процедуры на VBA. Каждая макрокоманда имеет определенное имя и, возможно, один или несколько аргументов, которые задаются пользователем. Например, при использовании макрокоманды ОткрытьФорму (OpenForm) в качестве аргументов необходимо задать, по крайней мере, имя открываемой формы и режим вывода ее на экран.
В содержится список макрокоманд Microsoft Access 2010, сгруппированных по категориям: работа с данными в формах и отчетах; выполнение команд, макросов, процедур и запросов; работа с объектами; импорт/экспорт данных и объектов и прочие. В категорию "Прочие" собраны все макрокоманды, которые позволяют влиять на интерфейс приложения.
Макрокоманды Microsoft Access 2010

Категория

Назначение

Макрокоманда

Работа с данными в формах и отчетах

Отбор данных

Применить Фильтр (ApplyFilter)

Перемещение по данным

СледующаяЗапись (FindNext) НайтиЗапись (FindRecord) КЭлементуУправления (GoToControl) НаСтраницу (GoToPage) НаЗапись (GoToRecord)

Обновление данных или экрана

Обновление (Requery) ПоказатьВсеЗаписи ( ShowAllRecords )

Выполнение

Выполнение команды

Выполнить Команду (RunComraand)

Выполнение макроса, процедуры или запроса

ЗапускМакроса (RunMacro) Залуск Программы (RunCode) ОткрытьЗапрос (OpenQuery) 3anycк 3anpoca SQL (RunSQL)

Выполнение другого приложения

Запуск Приложения (RunApp)

Прерывание выполнения

Отменить Событие (CancelEvent) Остановить ВсеМакросы (StopAllMacros) ОстановитьМакрос (StopMacro)

Выход из Microsoft Access

Выход (Quit)

Импорт/экспорт

Передача объектов Microsoft Access в другие приложения

Вывести В Формате (OutputTo) ОтправитьОбъект (SendObject)

Преобразование формата данных

Преобразовать БазуДанных (Transfer Database) ПереносБазыДанныхSQL (TransferSQLDat abase) Преобразовать ЭлектроннуюТаблицу (Transfer Spreadsheet) ПреобразоватьТекст (TransferText )

Работа с объектами

Копирование, переименование и сохранение объекта

КопироватьОбъект (CopyObject) Копировать Файл БазыДанных (CopyDatabase File) Переименовать (Rename) Сохранить (Save)

Прочие

Вывод на экран или скрытие встроенной или специальной панели инструментов
Подача звукового сигнала

ПанельИнструментов (ShowToolbar) Сигнал (Веер)

Как видно из этой таблицы, действия, которые могут быть выполнены с помощью макросов, очень разнообразны. Даже если вы не будете использовать макросы в своих приложениях, имеет смысл изучить эти макрокоманды, поскольку их можно использовать и в процедурах VBA, как будет показано далее .
По сравнению с предыдущей версией Access, в Microsoft Access 2010 появились три новые макрокоманды:
ПереносБазыДанныхSQL (TransferSQLDatabase) — переносит базу данных Microsoft SQL Server 7.0 и выше на другой сервер;
КопироватьФайлБазыДанных(CopyDatabaseFile) — выполняет копирование текущей базы данных Microsoft SQL Server 7.0 и выше, присоединенной к проекту Access;
ОткрытьФункцию (OpenFunction) — выполняет функцию, определенную пользователем, в проекте Access. Эта функция- представляет собой запрос, который, используя входные параметры, возвращает результаты так же, как и хранимая процедура.
Использование макросов оправдано тем, что их легко создавать, и для этого не нужно изучать синтаксис языка программирования. Как будет показано в следующем разделе, для создания макроса требуется знать лишь основные приемы работы в Microsoft Access и Windows, такие как перетаскивание объектов из окна База данных (Database) в специальное окно — Конструктор макросов (Macro Design), выбор действия из списка и ввод выражений в качестве аргументов макрокоманды. Поэтому, если очень не хочется изучать синтаксис языка VBA или это представляется слишком трудным, смело применяйте макросы, и вы получите достаточно функциональное приложение.
Как уже говорилось выше, основное назначение макросов — это создание удобного интерфейса приложения: чтобы формы и отчеты открывались при нажатии кнопок в форме или на панели инструментов или же привычным выбором команды меню; чтобы при открытии приложения пользователь видел на экране не окно База данных (Database), наполненное множеством таблиц, запросов, форм и отчетов, а некую понятную форму, с помощью которой можно было бы сразу производить желаемые действия и т. д.
С помощью макросов можно создать удобные меню и панели инструментов для приложения, и чуть позже мы опишем, как это сделать.
Однако использование макросов имеет и некоторые недостатки, о которых здесь уместно сказать.

  • Возможности макрокоманд ограничены по сравнению с возможностями языка VBA, поэтому в ряде случаев без программирования на VBA не обойтись, хотя сначала нужно быть уверенным, что эти дополнительные возможности действительно нужны. Язык VBA предоставляет более широкие возможности для работы с данными, позволяет использовать механизм программирования объектов для связи с другими приложениями, вызывать функции из библиотек динамической загрузки (DLL) Windows и создавать собственные специализированные функции.
  • Макросы можно использовать практически везде, где применяются процедуры VBA, однако процедуры VBA, как правило, выполняются быстрее.
  • Макросы являются объектами, существующими отдельно от форм и отчетов, в которых они используются, поэтому, когда этих объектов становится очень много, их поддержка достаточно трудоемка. Процедуры обработки событий VBA являются неотъемлемой частью форм и отчетов, и в этом есть свои преимущества. Например, при переносе форм и отчетов из одной базы данных в другую с ними автоматически переносятся связанные процедуры.

Тем не менее, как уже отмечалось, во многих случаях использование макросов вполне оправдано, т. к. это существенно упрощает и ускоряет разработку приложения. С помощью макросов можно создавать небольшие однопользовательские приложения, хотя при создании многопользовательских или клиент-серверных приложений, где скорость работы приложения критична, лучше применять VBA.