Разработка бд в приложении субд access. макросы, понятие, назначение. Макросы в субд microsoft acces Access изменение поля записи макросов

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

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

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

Категория Назначение Макрокоманда
Работа с данными в формах и отчетах Отбор данных Применить Фильтр (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) Сигнал (Веер)

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

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

По сравнению с предыдущей версией Access, в Microsoft Access 2002 появились три новые макрокоманды:

ПереносБазыДанных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.

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

Большинство макрокоманд, из которых составляются макросы, имеют аргументы. Например, макрокоманда Открыть таблицу имеет аргумент Имя таблицы (т.е. имя таблицы, которую требуется открыть), а также некоторые другие аргументы, задающие режим открытия таблицы. Некоторые макрокоманды не имеют аргументов (например, макрокоманда Свернуть просто свертывает текущее окно). Имеется также специальная макрокоманда Выполнить команду; ее аргументом является название одного из элементов меню (на английском языке). Поэтому команда Выполнить команду означает выполнение указанного элемента меню.

Окно описания макроса (вызываемое кнопкой Создать на вкладке Макросы) содержит две основные колонки: Макрокоманда (в этой колонке вводятся макрокоманды, т.е. фактически описывается макрос) и Примечание (комментарий). Если макрос должен выполняться при определенном условии, то используется также дополнительная колонка Условие; эта возможность будет рассмотрена в разделе 4.

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

Пример создания макроса

Одно из самых простых и распространенных применений макросов – одновременное открытие нескольких элементов базы данных (таблиц, форм и т.д.) в желаемом виде.

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

Макрос, реализующий эти действия, создается следующим образом.

1. Перейти на вкладку Макросы. Нажать кнопку Создать.

2. В первой строке колонки Макрокоманды ввести макрокоманду Открыть таблицу. Указать аргументы этой макрокоманды: Имя таблицы – Объекты , Режим – Таблица, Режим данных – Только чтение (чтобы исключить внесение изменений в таблицу).

3. В следующей строке ввести макрокоманду Открыть запрос. Указать ее аргументы: Имя запроса - Стоимость контрактов по заказчикам , Режим – Таблица, Режим данных – Только чтение.

4. В следующей строке ввести макрокоманду Выполнить команду. В качестве ее аргумента выбрать команду РядомГоризонтально (в некоторых версиях - TileHorizontally). Это требуется для того, чтобы окна, открытые предыдущими макрокомандами, оставались на экране (друг над другом).

5. Закрыть окно макроса. На запрос о сохранении внесенных изменений ответить Да. Указать имя макроса: .

6. Чтобы выполнить макрос, необходимо выделить его отметку и нажать кнопку Запуск (или просто дважды щелкнуть по отметке макроса). Запрос и таблица выводятся на экран.

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

1. Перейти на вкладку Макросы. Выделить макрос Просмотр информации об объектах . Нажать кнопку Конструктор.

2. Поместить курсор в первую строку (т.е. в ту строку, перед которой требуется вставить новую макрокоманду). Выбрать команду Вставка – Строки.

3. В появившейся пустой строке (первой) ввести макрокоманду Свернуть. Аргументов у этой макрокоманды нет.

5. Выполнить макрос.

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

Макрос представляет набор макрокоманд, который создается для автоматизации часто выполняемых задач.

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

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

В поле Макрокоманда можно выбрать необходимую команду (ОткрытьТаблицу, ОткрытьЗапрос, ОткрытьОтчет, ЗапускМакроса и т.д.) нажатием кнопкой мыши. Иначе в строку Макрокоманда можно просто перетащить любой объект базы данных (таблицу, форму и т.д.).

После выбора макрокоманды на панели аргументов окна конструктора макросов могут появиться строки, предназначенные для задания значений аргументов соответствующей макрокоманды. Набор строк на этой панели зависит от конкретной макрокоманды. Заданные значения аргументов также появляются во втором столбце Аргументы панели описаний.

Столбец Примечание служит для ввода комментария, который описывает выполняемое действие.

Рассмотрим простой способ создания макрокоманды. Например, разработаем ее для открытия таблицы Группы базы данных Студент .

    Вы уже открыли окно Конструктора макросов . Теперь с помощью мыши перетащите таблицу Группы из Области переходов в столбец Макрокоманда . В результате в нем появится макрокоманда Открыть таблицу, причем Access автоматически заполнит поля панели аргументов (рис.1).

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

Для того чтобы ввести значение аргумента макрокоманды вы можете выбрать аргумент из списка или ввести в его поле выражение. Справа от полей некоторых аргументов расположена кнопка построителя, в окне которого вводятся различные выражения. Перед выражением нужно ставить знак равенства (=), за исключением аргумента Выражение макрокоманды ЗадатьЗначение и аргумента Число повторов макрокоманды ЗапускМакроса .

Макрос может содержать несколько макрокоманд, которые выполняются последовательно. Добавим к созданной нами макрокоманде, которая открывает таблицу Группы в режиме Только чтение, добавим макрокоманду, сообщающую пользователю о том, что таблица Товары доступна только для просмотра информации.

Последовательность выполнения:

    Перейдите на следующую строку окна конструктора макросов и в столбце Макрокоманда выберите макрокоманду Сообщение .

    В поле Сообщение панели аргументов введите текст «Данные доступны только для просмотра ». Аргумент Сигнал служит для определения того, будет ли вывод сообщения сопровождаться звуковым сигналом. В аргументе Тип выберите вид диалогового окна. Укажите, например, значение Предупреждающее !. В поле аргумент Заголовок , позволяющего задать текст заголовка окна сообщения, введите текст «О данных» .

    Сохраните макрос под именем Открыть группы .

После запуска макроса будет отображена таблица Группы, открытая в режиме просмотра, и сообщение, представленное на рис.2.

Рассмотрим еще один пример. Допустим, вам необходимо создать макрос, открывающий форму Список .

    Откройте окно конструктора макросов и из окна базы данных перенесите в него форму Список .

    Аргумент Имя формы содержит список всех форм базы данных.

    Аргумент Режим определяет режим, в котором форма должна быть открыта. Он может принимать значения: Форма, Конструктор, Просмотр, Таблица и др.

    Аргумент Имя фильтра применяется для отбора и/или сортировки записей в форме. Это может быть запрос или фильтр, записанный в виде запроса.

    Аргумент Условие отбора определяет условие для от­бора записей, отображаемых в форме. Условие представляет собой выражение.

    Аргумент Режим данных определяет способ работы с данными и может принимать одно из значений: Добавление, Изменение или Только чтение.

    Аргумент Режим окна определяет тип окна: Обычное, Невидимое, Значок и Окно диалога.

    В поле Имя фильтра , воспользовавшись ранее созданным фильтром СР-11 , введите текст СР-11 .

    В новой строке макроса выберите макрокоманду Сообщение , а на панели аргументов введите текст сообщения: Фильтр 11 группа . Задайте тип диалогового окна вывода сообщения, выбрав значение Информационное аргумента Тип .

    Сохраните макрос под именем 11 группа .

Представляют собой как бы контейнер, в котором хранятся простейшие команды (макрокоманды), последовательно выполняющиеся. Закономерно возникает вопрос: «А зачем они тогда нужны, если все простейшие команды и так доступны с помощью команд меню и кнопок панелей инструментов?».

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

Ниже приведён пример макроса, который из формы для просмотра вызывает вспомогательную форму для изменения информации.

В форме для просмотра есть кнопка «Ввод данных», при нажатии на которую запускается макрос «ВызовФормыВвода». Первая команда «ОткрытьФорму» загружает вспомогательную форму для изменения информации. Команда «КЭлементуУправления» отправляет нас в невидимое ключевое поле «Код».

«НайтиЗапись» загружает запись с тем же кодом, что в форме для просмотра (если мы просматривали данные по Войтович, то во вспомогательной форме тоже должны быть данные по Войтович). Четвёртая команда «КЭлементуУправления» переводит курсор в поле [Фамилия], т. е в первое поле формы.

Во-вторых , макросы в access обладают возможностью запускаться только при определённых значениях.

Например, мы можем распечатать списки нуждающихся в улучшении жилищных условий по каждому городу отдельно или общий список (форма «Печать списков состоящих на учёте» учебной базы «Жильё»).

Кнопка «Просмотр» выводит отчёты на экран, а «Печать» на принтер.

Кнопка «Отмена» закрывает форму «Печать списков состоящих на учёте» без каких-либо других действий.

При выборе переключателя «для всех населённых пунктов» выводится отчёт с общим списком всех нуждающихся в улучшении жилищных условий. При выборе «для конкретного населённого пункта» будет выведен отчёт для выбранного из списка города.

Аксесс довольно сложная программа. Это подтверждает тот факт, что в интернете можно найти массу информации по ней. Однако, вы знаете что на самом деле достаточно знать лишь 20% инструментов, чтобы создавать и настраивать 80% баз данных в программе?
В-третьих
, макросы в access могут запускаться только при определённых и нужных нам событиях (открытие или закрытие формы, щелчок мышкой, нажатие кнопки и др.).

Например, требуется при нажатии на заданную кнопку вызвать системный калькулятор Windows. Очень удобно и не надо делать лишних движений.

Кнопке «Калькулятор» просто задаётся макрос с единственной макрокомандой «ЗапускПриложения», в которой указывается командная строка к приложению (например, С:\Windows\calc. exe). Хотя можно просто задать гиперссылку кнопке «Калькулятор» на программу calc. exe.

Отчёт предназначен для вывода на экран информации по юбилярам за определённый пользователем месяц. Если в каком-либо месяце нет юбиляров, то, разумеется, в отчёте не будет и записей. Вследствие этого автоматически генерируется событие отчёта «Отсутствие данных», которому мы задали макрос.В приведённом ниже примере стандартному свойству «Отсутствие данных» в некотором отчёте присвоен макрос, состоящий из двух макрокоманд.

Первая макрокоманда «ОтменитьСобытие» просто-напросто не выводит на экран пустой отчёт.

Вторая команда «Сообщение» выводит на экран диалоговое окно с поясняющим текстом. Если бы сообщение не выводилось, то рядовой пользователь не понял бы, почему отчёт не появляется на экране, решив, что произошла ошибка.

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

Записать макрос в Access как, например, в приложении Word не представляется возможным, но в Access можно создать макрос в окне Конструктора макросов или в окне редактора Visual Basic for Application (VBA).

Макросы в Access в основном создаются для обработки событий. Событие - это любое действие, которое распознается объектом и на которое можно определить отклик.

К событиям, которым можно назначить макросы относятся, например, нажатие кнопки для вывода на экран запроса, формы, отчета и т.д. Примером создания макроса может быть создание кнопки для вызова макроса "Открыть Запрос" в подчиненной кнопочной форме "Запросы" в базе данных Успеваемость_студентов.

Таким образом, основное назначение макросов - это создание удобного интерфейса приложения, в котором формы и отчеты открывались бы при нажатии кнопок в формах или на панелях инструментов. Чтобы при открытии приложения на экране отображалось не окно База данных, а главная кнопочная форма, которая создается с целью навигации по базе данных, т.е. в качестве главного меню БД.

В статье Макросы в БД Access 2003 рассмотрено создание макросов в окне Конструктора макросов, которое открывается командой Создать в окне базы данных на вкладке Макросы. Окно Конструктора макросов разделено по горизонтали на две части: панель описаний и панель аргументов. В панели описаний по умолчанию выводится два столбца: столбец для ввода макрокоманд и столбец для ввода примечаний. Макрокоманда - это инструкция, определяющая выполняемые действия в макросе.

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


Рис. 1.

Панель аргументов макрокоманды, которая появляется в окне Конструктора макросов после ввода макрокоманды, позволяет выбрать требуемые аргументы, из списка который отображается для данной макрокоманды. Макросы могут содержать как набор макрокоманд, так группу макросов.

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

Чтобы создать макрос, открывающий таблицу "Дисциплины", надо переместить с помощью мыши эту таблицу из окна БД в строку Макрокоманда окна Конструктора макросов. Кроме того, в аргументах макрокоманды можно установить Режим - Просмотр, Режим данных - Только чтение.



Рис. 2.

Аналогичным способом можно создавать макросы: Открыть форму, Открыть запрос, Открыть отчет или Запуск макроса.



Рис. 3.

Для запуска созданных макросов с панели инструментов необходимо создать кнопку на одной из панелей инструментов. Рассмотрим создание кнопки для запуска макроса Откр_запрос на стандартной панели инструментов, которая открывается в окне приложения по умолчанию. Сначала надо выбрать макрос в окне базы данных на вкладке макросы и перетащить его на панель инструментов, На панели инструментов появится кнопка Откр_запрос.


Рис. 4.

Для удаления кнопки с панели инструментов надо щелкнуть правой кнопкой на панели инструментов и из контекстного меню выбрать команду Настройка. В появившемся окне диалога Настройка на вкладке Команды в списке Категории выделить строку Все макросы. Перетащить левой кнопкой мыши кнопку с панели инструментов в список Команды окна диалога Настройка. В результате кнопка Откр_запрос будет удалена с панели инструментов.



Рис. 5.