Архитектура Аудит Военная наука Иностранные языки Медицина Металлургия Метрология
Образование Политология Производство Психология Стандартизация Технологии


Использование макросов в базе данных Access



С помощью макросов можно выполнять над объектами Access практически все основные действия.

Макрос в Access представляет собой структуру, состоящую из одной или нескольких макрокоманд, которые выполняются либо последовательно, либо в порядке, заданном определенными условиями. Набор макрокоманд в Access очень широк, с помощью макросов можно реализовать многое из того, что позволяют сделать процедуры на VBA. Каждая макрокоманда имеет определенное имя и, возможно, один или несколько аргументов, которые задаются пользователем. Например, при использовании макрокоманды ОткрытьФорму (OpenForm) в качестве аргументов необходимо задать, по крайней мере, имя открываемой формы и режим вывода ее на экран.

Табл. 1 содержит список макрокоманд Access 2003, сгруппированных по категориям: работа с данными в формах и отчетах; выполнение команд, макросов, процедур и запросов; работа с объектами; импорт/экспорт данных и объектов и прочие. В категорию "Прочие" собраны все макрокоманды, которые позволяют влиять на интерфейс приложения.

Таблица 12.1. Макрокоманды Microsoft Access 2003

Категория Назначение Макрокоманда

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

Отбор данных ПрименитьФильтр (ApplyFilter)
Перемещение по данным СлелукиаяЗапись (FindNext) НайтиЗапись (FindRecord) КЭлементуУправления (GoToControl) НаСтраницу (GoToPage) НаЗапись (GoToRecord)
Обновление данных или экрана Обновление (Requery) ПоказатьВсеЗаписи (ShowAIIRecords)

Выполнение

Выполнение команды ВыполнитьКоманду (RunCommand)
Выполнение макроса, процедуры или запроса ЗапускМакроса (RunMacro) ЗапускПрограммы (RunCode) ОткрытьЗапрос (OpenQuery) 3anycK3anpocaSQL (RunSQL)
Выполнение другого приложения ЗапускПриложения (RunApp)
Прерывание выполнения ОтменитьСобытие (CancelEvent) ОстановитьВсеМакросы (StopAIIMacros) ОстановитьМакрос (StopMacro)
Выход из Microsoft Access Выход (Quit)

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

 

 

Передача обьектов Microsoft Access в другие приложения ВывестиВФормате (OutputTo) ОтправитьОбъект (SendObject)
Преобразование формата данных ПреобразсватьБазуДанных (TransferDatabase) ПереносБазыДанныхSQL (TransferSQLDatabase) ПреобразоватьЭлектроннуюТаблицу (TransferSpreadsheet) ПреобразоватьТекст (TransferText)

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

 

'Копирование

КопироватьОбъект (CopyObject)
КопироватьФайлБазыДанных (CopyDatabaseFile)
переименование Переименовать (Rename)
сохранение объекта Сохранить (Save)
'Удаление объекта УдалитьОбъект (DeleteObject)

'Изменение размеров или положения окна

Развернуть (Maximize)
Свернуть (Minimize)
СдвигРазмер (MoveSize)
Восстановить (Restore)

Открытие и закрытие объекта

ОткрытьФорму (OpenForm)
ОткрытьФункцию (OpenFunction)
ОткрытьМодуль (Open Module)
ОткрытьЗапрос (OpenQuery)
ОткрытьОтчет (OpenReport)
ОткрытьТаблицу (OpenTable)
ОткрытьСтраницуДоступаКЦанным(OpenDataAccessPage)
ОткрытьСхему (OpenDiagram)
ОткрытьСохраненнуюПроцедуру(OpenStoreProcedure)
ОткрытьПредставление (OpenView)
Закрыть (Close)
Печать объекта Печать (Printout)
Выделение объекта ВьlелитьОбъект (SelectObject)
Задание значения поля элемента управления или свойства ЗадатьЗначение (SetValue)
Обновление объекта ОбновитьОСъект (RepaintObject)

Прочие

Создание специальной или общей строки меню, специального или глобального контекстного меню ДобавитьМеню (AddMenu)
Задание состояния пунктов меню в специальной или общей строке меню ЗадатьКомандуМеню (SetMenultem)

Вывод информации на экран

ВьводНаЭкран (Echo)
ПесочныеЧасы (Hourglass)
Сообщение (MsgBox)
УстанозитьСообшения (SetWarnings)
iГенерация нажатий клавиш КомандыКлавиатуры (SendKeys)
'Вывод на экран или скрытие встроенной или специальной панели инстру-ментов ПанельИнструментов (ShowToolbar)
Подача звукового сигнала Сигнал (Веер)

 

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

Использование макросов оправдано тем, что их легко создавать, и для этого не нужно изучать синтаксис языка программирования. Для создания макроса требуется знать лишь основные приемы работы в Microsoft Access и Windows, такие как перетаскивание объектов из окна База дан ных (Database) в специальное окно — Конструктор макросов (Macro Design), выбор действия из списка и ввод выражений в качестве аргументов макрокоманды.

Как уже говорилось ранее, основное назначение макросов — это создание удобного интерфейса приложения: чтобы формы и отчеты открывались при нажатии кнопок в форме или на панели инструментов или же привычным выбором команды меню; чтобы при открытии приложения пользователь видел на экране не окно База данных (Database), наполненное множеством таблиц, запросов, форм и отчетов, а некую понятную форму, с помощью которой можно было бы сразу производить желаемые действия, и т. д.

С помощью макросов можно создать удобные меню и панели инструментов для приложения.

Но использование макросов имеет и некоторые недостатки, о которых здесь уместно сказать.

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

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

- Макросы являются объектами, существующими отдельно от форм и отчетов, в которых они используются, поэтому, когда этих объектов становится очень много, их поддержка достаточно трудоемка. Процедуры обработки событий VBA, используемые в формах и отчетах, являются неотъемлемой частью этих форм и отчетов, и в этом есть свои преимущества. Например, при переносе форм и отче­тов из одной базы данных в другую с ними автоматически переносятся связан­ные процедуры.

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

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

В Access существует специальное средство для создания макросов — Конструктор макросов (Macro Design). Рассмотрим процесс создания макроса с его помощью.

Конструктор макросов

Открыть окно Конструктор макросов (Macro Design) для создания нового макроса можно разными способами:

1. Раскройте список макросов в окне База данных (Database), щелкнув левой кнопкой мыши по ярлыку Макросы (Macros), и нажмите кнопку Создать (New) в верхней части окна.

2. Шелкните по стрелке на кнопке Новый объект (New Object) панели инструментов База данных (Database) и выберите элемент Макрос (Macro).

3. Выполните команду меню Вставка | Макрос (Insert | Macros)

Окно Конструктора построено аналогично Конструктору таблиц, т. е. разделено по горизонтали на две части: панель описаний и панель аргументов.

Верхняя часть окна Конструктора — панель описаний — состоит из нескольких столбцов. По умолчанию на этой панели выводится два столбца: Макрокоманда (Action) и Примечание (Comments). Панель описаний позволяет определить последовательность макрокоманд, из которых состоит макрос.

Строка в столбце Макрокоманда (Action) представляет собой поле со списком, в котором можно выбрать нужную макрокоманду.

Строка в столбце Примечание (Comments) — это обычное текстовое поле, в которое можно ввести комментарий, описывающий выполняемое действие.

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

Панель инструментов Конструктор макросов представлена на рис. 1, а в табл. 2 приведены описания ее кнопок.

Рис . 1. Панель инструментов Конструктор макросов

Таблица 2. Панель инструментов Конструктор макросов

Кнопка Описание Команда меню
Имена макросов (Macro Name) Позволяет отобразить или скрыть столбец с именами макросов в группе Вид | Имена макросов (View | Macro Name)
Условия (Conditions) Позволяет отобразить или скрыть столбец с условиями выполнения макрокоманд Вид | Условия (View | Conditions)
Добавить строки (Insert Rows) Добавляет строку в макрос Вставка | Строки (Insert I Rows)
Удалить строки (Delete Rows) Удаляет строку в последовательности макрокоманд Правка | Удалить строки (Edit | Delete Rows)
Запуск (Run) Запускает макрос на выполнение Запуск I Запуск (Run | Run)
По шагам (Step) Включает режим пошагового выполнения макроса Запуск | По шагам ( Run | Step)

На рис. 2 проиллюстрирован выбор макрокоманды применитьФильтр (ApplyFilter). На панели аргументов имеются два поля, которые позволяют задать имя фильтра и условие отбора записей. Для того чтобы задать условие отбора записей, можно вос­пользоваться построителем выражений

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

Совет

Для быстрого переключения между панелями описаний и аргументов , так же как при работе с таблицами и запросами в режиме Конструктора , можно использовать кла­ вишу < F 6>.

Существует еще один очень простой способ ввода макрокоманды. Допустим, нужно создать макрос, который должен открывать форму клиенты (Customers) в приложении Борей (Northwind). Для этого в окне База данных (Database) необходимо щелкнуть по ярлыку Формы (Forms), затем, используя панель инструментов, открыть Конструктор макросов (Macro Design) и перетащить с помощью мыши форму Клиен Клиенты (Customers) в поле Макрокоманда (Action) окна Конструктора макросов.

 

Рис. 2. Окно Конструктора макросов

Совет

Для удобства перетаскивания объектов из окна База данных ( Database ) в форму выберите команду Окно | Слева направо ( Window | Tile Vertically ), чтобы располо жить окна на экране рядом

Тогда в поле Макрокоманда (Action) автоматически появится макрокоманда от-крытьФорму (OpenForm) (рис. 3), а на панели аргументов автоматически заполнятся поля: в поле Имя формы (Form Name) появится имя формы клиенты (Customers), в поле Режим (View) — значение по умолчанию Форма (Form), в поле Режим окна (Window Mode) — значение Обычное (Normal). Остальные поля останутся пустыми. Мы можем в этой же макрокоманде задать фильтр для отбора записей, Для этого введем в поле Имя фильтра (Filter Name) имя какого-нибудь фильтра, например Менеджеры по продажам, который можно было построить как запрос.

Кроме того, можно сделать записи в этой форме недоступными для изменений, для чего в поле Режим данных (Data Mode) необходимо ввести значение Только чтение (Read Only).

Рис. 3. Автоматическое создание макрокоманд путем перетаскивания объектов

Аналогично можно создавать макрокоманды, перетаскивая из окна База данных (Database) таблицы, запросы, отчеты и другие макросы. При этом в окне Конструктора макросов будут появляться соответствующие макрокоманды: ОткрытьТаблицу (ОреnТаblе), ОткрытьЗапрос (OpenQuery), ОткрытьОтчет (OpenReport), ЗапускМакроса (RunMacro).

Для ввода аргументов макрокоманды чаще всего требуется выбирать значения из списков или вводить выражения. Для ввода выражений можно воспользоваться Построителем выражений, кнопка которого находится справа от поля аргумента. Еще одна кнопка Построителя выражений располагается на панели инструментов. Как и в других случаях, перед выражением нужно ставить знак равенства (=). Исключения составляют аргумент Выражение (Expression) макрокоманды задатьЗначение (SetValue) и аргумент Число повторений (Repeat Count) макрокоманды ЗапускМакроса (RunMacro). Если ввести знак равенства перед выражением, задающим значение этих аргументов, то оно будет вычисляться дважды, что может привести к нежелательным результатам.

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

Итак, созданная нами макрокоманда будет открывать форму Клиенты (Customers) в режиме Только чтение (Read Only) и показывать в ней только менеджеров по продажам. Как уже было сказано ранее, макрос может содержать последовательность из нескольких макрокоманд. Поэтому в этом же макросе в следующей строке мы выберем макрокоманду сообщение (MsgBox), которая после открытия формы будет отображать диалоговое окно с сообщением о том, какие клиенты представлены в форме. Для этого введем в поле Сообщение (Message) на панели аргументов текст сообщения, например Установлен фильтр Менеджеры по продажам, остальные поля можем оставить без изменения. Аргумент Сигнал (Веер) определяет, будет ли вывод сообщения сопровождаться звуковым сигналом. Аргумент Тип (Туре) определяет вид диалогового окна сообщения. Аргумент Заголовок (Title) позволяет задать текст, ко­торый будет выведен в заголовке окна сообщения.

Если база данных большая, отбор записей в форме может занять некоторое время, поэтому рекомендуется вывести на экран курсор в форме песочных часов, который будет показывать, что идет обработка данных. Для того чтобы сделать это, воспользуемся макрокомандой ПесочныеЧасы (Hourglass). Макрокоманды в макросе выполняются в той последовательности, в которой они записаны в столбце Макрокоманда (Action), т. е. сверху вниз. Макрокоманду ПесочныеЧасы (Hourglass) следует поставить первой, т. к. курсор должен измениться перед выводом формы. Таким образом, нам нужно вставить новую строку на панели описаний. Для этого установим курсор в первую строку панели и нажмем кнопку Добавить строки (Insert Rows) на панели инструментов или просто клавишу <Insert>. Появится пустая строка. В этой строке в поле Макрокоманда (Action) выберем макрокоманду ПесочныеЧасы (Hourglass). В поле Включить (Hourglass On) панели аргументов появится значение Да (Yes), установленное по умолчанию, что нам и нужно. Чтобы вернуть первоначальный вид указателю мыши, в конце созданного макроса нужно ввести такую же макрокоманду ПесочныеЧасы (Hourglass), но со значением Нет (No) аргумента Включить (Hour­glass On).

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

Теперь остается только сохранить созданный макрос. Для этого можно выбрать в меню Файл (File) команду Сохранить как (Save As) или нажать клавишу <F12>. Появится окно сохранения макроса. Занесите в поле ввода имя макроса, соблюдая правила именования объектов Access, например Менеджеры по продажам.

 Замечание

В Microsoft Word и Excel имеются средства автоматической записи макросов . Эти средства очень удобны для изучения VBA , поскольку позволяют автоматически создать процедуру , включив запись макроса , выполнив необходимые действия и оста новив запись . Тогда все действия пользователя , выполняемые после включения записи и до ее остановки , преобразуются в текст процедуры VBA . Затем этот текст можно просмотреть и отредактировать с помощью редактора VBA . В Microsoft Access средств автоматической записи макросов нет , так же как нет и средств автоматической генерации кода VBA ( за исключением того , что создают Мастера ).

Создание групп макросов

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

Чтобы создать группу макросов, выполните следующее:

1. Откройте Конструктор макросов одним из способов.

2. Нажмите кнопку Имена макросов (Macro Name) на панели инструментов. На панели описаний в окне Конструктора появится еще один столбец — Имя макроса (Macro Name) (рис. 4).

3. В этот столбец введите имя первого макроса. Остальные поля данной строки лучше оставить пустыми — это облегчит перемещение и копирование макрокоманд.

4. Начиная со следующей строки, введите все макрокоманды макроса и соответствующие аргументы для каждой макрокоманды.

5. Пропустите одну строку.

6. Повторите шаги 3—5 для каждого макроса.

Рис. 12.4. Создание группы макросов

На рис. 4 в окне Конструктора представлен макрос клиенты (Customers) базы данных Борей (Northwind). Для указания конца макроса не требуется отдельной макрокоманды. Access продолжает выполнение макроса, входящего в группу, пока не обнаружит строку, содержащую имя в столбце Имя макроса (Macro Name), либо пока не дойдет до последней строки окна макросов.

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

Для запуска одного из макросов группы используется полное имя макроса, которое формируется таким образом: имяГруппы.имяМакроса.

   Замечание

Можно настроить систему так , чтобы столбец Имя макроса ( Macro Name ) выводил­ся всегда в Конструкторе макросов . Для этого необходимо установить соответст­ вующие параметры на вкладке Вид ( View ) в диалоговом окне Параметры ( Options ).


Поделиться:



Последнее изменение этой страницы: 2019-04-19; Просмотров: 481; Нарушение авторского права страницы


lektsia.com 2007 - 2024 год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! (0.033 с.)
Главная | Случайная страница | Обратная связь