Объект Форма (Form) (Access)
Объект Форма (Form) ссылается на конкретную форму Microsoft Access.
Примечания
Объект Форма является членом коллекции ** Формы **, которая представляет собой набор всех открытых в настоящее время форм. Внутри коллекции Формы отдельные формы индексируются, начиная с нуля. Вы можете сослаться на отдельный объект Форма в коллекции Формы либо с помощью ссылки на форму по имени, или с помощью ссылки на индекс формы в коллекции.
Если вы хотите сослаться на конкретную форму в коллекции Формы, лучше всего ссылаться на форму по имени, так как индекс формы в коллекции может измениться. Если имя формы содержит пробел, имя нужно заключать в квадратные скобки ([ ]).
Синтаксис | Пример |
---|---|
AllForms!имя_формы | AllForms!OrderForm |
AllForms![ имя_формы] | AllForms![Order Form] |
AllForms(«имя_формы«) | AllForms(«OrderForm») |
AllForms(index) | AllForms(0) |
Каждый объект Форма имеет коллекцию Элементы управления, которая содержит все элементы управления для формы. Вы можете сослаться на элемент управления для формы явно или неявно, используя ссылку на коллекцию Элементы управления. Код будет выполняться быстрее, если вы сошлетесь на коллекцию Элементы управления неявно. В следующих примерах показаны два способа, с помощью которых вы можете сослаться на элемент управления с именем NewData для формы, которая называется OrderForm.
В следующих двух примерах показано, как вы можете сослаться на элемент управления с именем NewData для подчиненной формы ctlSubForm, которая содержится в форме, которая называется OrderForm.
Пример
В приведенном ниже примере показано, как использовать элемент управления TextBox для задания условий отбора даты для запроса.
В приведенном ниже примере показано, как использовать событие BeforeUpdate формы для введения требования, согласно которому значение должно быть указано для одного элемента управления, если другой элемент управления также содержит данные.
В приведенном ниже примере показано, как использовать свойство OpenArgs для предотвращения открытия формы из области навигации.
В следующем примере показано, как использовать аргумент WhereCondition метода OpenForm, чтобы отфильтровать записи, отображаемые в форме при ее открытии.
Мероприятия
Методы
Свойства
См. также
Поддержка и обратная связь
Есть вопросы или отзывы, касающиеся Office VBA или этой статьи? Руководство по другим способам получения поддержки и отправки отзывов см. в статье Поддержка Office VBA и обратная связь.
Объект Forms (Access)
Коллекция Форм содержит все открытые в настоящее время формы в базе данных Microsoft Access.
Примечания
Используйте коллекцию Forms в Visual Basic или в выражении для ссылки на открытые формы. Например, можно привести коллекцию Forms для набора или возврата значений свойств отдельных форм в коллекции.
Вы можете ссылаться на отдельный объект Form в коллекции Forms, ссылаясь на форму по имени или ссылаясь на его индекс в коллекции. Если вы хотите сослаться на конкретную форму в коллекции Формы, лучше всего ссылаться на форму по имени, так как индекс формы в коллекции может измениться.
Коллекция Форм индексация начинается с нуля. Если вы ссылаетесь на форму по ее индексу, первой открытой формой является Forms(0), второй открытой формой является Forms(1) и так далее. Если вы открыли Form1, а затем открыли Form2, form2 будет ссылаться в коллекции Forms своим индексом как Forms(1). Если затем закрыть Form1, form2 будет ссылаться в коллекции Forms по индексу Forms (0).
Чтобы перечислить все формы в базе данных, открытые или закрытые, перечислите коллекцию AllForms объекта CurrentProject. Затем можно использовать свойство Name каждого отдельного объекта AccessObject, чтобы вернуть имя формы.
Вы не можете добавить или удалить объект Form из коллекции Forms.
Свойства
См. также
Поддержка и обратная связь
Есть вопросы или отзывы, касающиеся Office VBA или этой статьи? Руководство по другим способам получения поддержки и отправки отзывов см. в статье Поддержка Office VBA и обратная связь.
12.5 Работа с формами Access из VBA (объект Form )
Объект Access.Form, работа с формами Access средствами VBA, открытие формы Access, работа с элементами управления на форме Access
Один из важнейших элементов Access, который широко используется в приложениях — это формы. Формы Access предназначены для того же, для чего и обычные формы VBA — это прежде всего контейнеры для графических элементов управления. Но устройство форм Access, их функциональные возможности, приемы работы с ними и даже наборы элементов управления, которые на них можно размещать, сильно отличаются от привычных нам форм VBA, которые можно использовать в Word и Excel.
Формы Access используются:
Как работать с формами Access из VBA?
Первое, что необходимо сказать — для работы с формами во многих ситуациях нам придется использовать общий объект AccessObject, который представляет в Access не только формы, но и таблицы, макросы, модули, отчеты и множество других элементов. Поскольку этот объект — универсальный, то, конечно, большой помощи от Intellisense — подсказки в редакторе VBA у нас не будет. Обратиться к объекту формы можно через коллекцию AllForms, которая доступна через объекты CodeProject и CurrentProject. Например, получить информацию о всех формах в базе данных Access можно так:
Dim oA As AccessObject
For Each oA In CurrentProject.AllForms
Если вы будете обращаться к формам в коллекции AllForms по индексу, обратите внимание, что нумерация форм в этой коллекции начинается с 0. Обращаться к элементам в этой коллекции можно и по имени:
Специальное свойство IsLoaded определяет, открыта ли эта форма (то есть загружена ли она в оперативную память).
Программным образом формы можно найти и другим способом. Все открытые формы Access автоматически помещаются в коллекцию Application.Forms и представляются в виде объекта Form. Это — уже нормальный объект, свойства которого соответствуют свойствам формы, доступным через графический интерфейс. Например, если форма Форма1 открыта, получить информацию о ее ширине можно так:
Debug.Print Application.Forms(«Форма 1»).Width
Это свойство можно использовать и для изменения ширины формы, но для этой цели рекомендуется использовать метод DoCmd.MoveSize(), который изменяет размеры активного объекта (например, нашей формы, если она активна):
DoCmd.MoveSize Width :=10000
Еще одна возможность: если вы работаете с кодом самой формы или ее элементов управления (например, события Click кнопки, которая расположена на форме), то обратиться к объекту самой этой формы можно совсем просто. Для этого используется ключевое слово Form.
Как можно открыть форму?
Первое, что нужно сказать — если в Word или Excel нам обязательно потребуется открыть форму программным способом, то в Access это совсем необязательно. Можно открыть форму и вручную из окна базы данных (см. рис. 12.1). Из этого же окна обычно производится создание новых форм или изменение существующих.
Рис. 12.1 Окно для работы с формами в Access
Еще один часто используемый способ — просто запускать форму при открытии базы данных Access. Для этого в меню Сервис нужно выбрать Параметры запуска и выбрать нужную форму в списке Вывод формы/страницы. Если при этом вы уберете все остальные флажки, то приложение при открытии приложение может выглядеть так, как показано на рис. 12.2:
Рис. 12.2 Все лишние возможности Access спрятаны от пользователя
Если все-таки нужно открыть форму программным способом (например, из другой формы), то для этой цели можно использовать метод DoCmd.OpenForm(). В самом простом варианте этот метод просто принимает параметр с именем формы:
Если же форма уже открыта, то этот метод, конечно, не открывает форму заново, а просто активизирует ее. Метод DoCmd.OpenForm() принимает также несколько необязательных параметров, при помощи которых вы можете настроить фильтр на отображение записей в форме, режим открытия формы (например, модальность) и т.п. Закрытие формы производится при помощи метода DoCmd.Close(). Если же вам нужно просто спрятать форму, чтобы сохранить введенные на ней пользователем значения и отобразить их при следующем показе, можно просто сделать форму невидимой, назначив ее свойству Visible значение False.
Форма нам обычно нужна не сама по себе, а как контейнер для расположенных на ней элементов управления. Обычно элементы управления программным способом создавать не требуется — намного проще и удобнее поместить их на форму в режиме конструктора для формы. В наборе элементов управления для формы предусмотрены как знакомые нам элементы управления — текстовые поля, надписи, кнопки, флажки и переключатели, так и новые элементы — свободная и присоединенная рамки объектов, разрывы страниц, подчиненные формы/отчеты и т.п. В верхнем правом углу Toolbox в конструкторе формы Microsoft Access находится специальная кнопка Мастера. Если она нажата, то добавление на форму привычных элементов управления (например, кнопки) приведет к появлению окна мастера, который попытается помочь вам автоматически сгенерировать нужный код VBA для этого элемента управления (см. рис. 12.3)
Рис. 12.3 Мастер создания кнопок
Можно использовать генерируемый мастером код как заменитель макрорекордера (которого в Access нет), чтобы понять, как можно выполнить те или иные действия.
Для чего используются нестандартные (по отношению к обычным формам VBA) элементы управления:
Например, предположим, что в нашей базе данных Access находится таблица с тремя столбцами, как показано на рис. 12.4.
Рис. 12.4 Таблица для хранения шаблонов Word
В столбце File у нас хранятся шаблоны Word, которые используются для генерации отчетов. Мы помещаем на форму элемент управления Присоединенная рамка объекта с именем WordTemplate. После этого все, что нужно для создания файла Word на основе шаблона из базы данных, у нас уже есть. Для кнопки, по нажатию на которой будет формироваться отчет, можно использовать следующий код:
‘Получаем ссылку oFrame на объект присоединенной рамки на форме
Dim oFrame As BoundObjectFrame
Set oFrame = oForm.Controls(«WordTemplate»)
‘При помощи метода DLookup () скачиваем в него значение столбца File из таблицы
‘Templates, где номер строки (значение столбца Num ) равно 1
oFrame = Application.DLookup(«[File]», «Templates», «[Num] = 1»)
‘Открываем объект в отдельном окне приложения — то есть создаем
‘документ Word на основе шаблон, загруженного в рамку объекта на форме
‘Активизируем объект приложения
‘Получаем ссылку на Word в переменную oWord
Dim oWord As Word.Application
Set oWord = GetObject(, «Word.Application»)
‘Получаем ссылку на созданный нами документ
Dim oDoc As Word.Document
Set oDoc = oWord.ActiveDocument
‘Дальше работаем средствами Word, например, вставляем нужный текст
‘в места, отмеченные закладками
Конечно же, правильнее будет при этом сделать эту присоединенную рамку объекта на форме изначально невидимой — чтобы пользователь не мог этот объект активизировать по собственной инициативе.
Как уже говорилось, программным способом элементы управления в форме Access приходится создавать редко. Если на форме вам нужен переменный набор элементов управления, то правильнее будет с самого начала создать все нужные элементы управления и по необходимости делать их то видимыми, то невидимыми. Тем не менее создать программным способом элементы управления на форме тоже можно. Эта операция выполняется при помощи метода Application.CreateControl(), который принимает множество параметров — имя формы, на которой создается элемент управления, тип элемента управления, его месторасположение на форме и т.п.
Обращение к значениям элементов управления на форме производится через коллекцию Controls, которая умеет работать с именами элементов управления:
Джентльменский набор разработчика Access
За время работы разработчиком Access набралась куча полезностей, которую считаю своим долгом выложить на Хабр. Многие из этих сниппетов находятся в сети, а некоторые находятся с трудом или безнадежно затеряны.
1. При работе с Access во время выполнения запроса возникают предупреждающие сообщения. Они довольно полезны во время отладки приложения, но для пользователей, как правило, не нужны. Отключить/включить их можно с помощью небольшого кода VBA:
Указав в виде параметра 0 для отключения и 1 для включения.
3. Не знаю, как бы я работал (наверное, работал бы так же, но гораздо медленнее), если бы не создал себе форму с поиском текста в содержимом запросов или форм. Очень часто необходимо производить какой-то рефакторинг или определять область применения таблицы или поля.
Для поиска по запросам поможет форма с кодом, который выполняет поиск в тексте запросов:
Для поиска по формам код немного объемнее:
4. Для того, чтобы сделать нашу работу чуть более солидной с точки зрения программирования и для возможности поиска ошибок при работе в режиме production на рабочей базе данных очень желательно добавить модуль VBA (tracing модуль) для записи происходящих событий в текстовый файл лога. Простая функция записи в текстовый файл будет очень полезна при отладке.
5. Этот код (из пункта 4) вполне можно вынести в отдельный файл базы данных Access и добавить во все существующие базы данных через References/Ссылки редактора VBA.
Если у вас имеется несколько файлов баз данных Access, то любой повторяющийся код можно вынести в отдельный файл. Единственное изменение, которое может быть необходимо сделать — в случае если в коде используется объект CurrentDb, то заменить его на CodeDb, дабы обращение шло к объектам той базы, которая используется в качестве хранителя общего кода.
6. Зачастую в запросах указывают в качестве параметра значение какого-либо поля открытой формы. Например, таким образом:
Но иногда необходимо указать параметр непосредственно в самом запросе. Сделать это можно так:
И далее из кода Access задать эти параметры и выполнить запрос:
Альтернативой может быть создание модуля VBA и добавление в него глобальной переменной, а также функции, возвращающей эту переменную.
Перед запуском запроса необходимо задать значение глобальной переменной (можно задать при открытии основной формы):
И в самом запросе указать параметром название возвращающей значение функции:
6.1 Этот способ получения параметра запроса можно использовать для частичного ограничения доступа к информации таблицы (в случае использования рабочей группы). При загрузке формы в зависимости от текущего пользователя установим значение глобальной переменной:
Далее установим запрет на просмотр и изменение таблицы demotable, а на запрос установим разрешение. Но так как запрос у нас использует таблицу, на которую нет прав, то данных он нам не вернет. Для того, чтобы он вернул данные необходимо к sql запроса добавить в конце
В результате пользователь Buh сможет иметь доступ ко всем строкам таблицы, а все остальные пользователи ко всем строкам за исключением первой 1000.
7. Для того, чтобы открыть форму из кода используется код:
В качестве «WhereCondition» можно указать условие, на какой записи формы необходимо её открыть (в случае, если форма привязана к данным). Указав, например, «ZakazID=56325», можно открыть форму именно со значением данных ZakazID равным 56325.
В качестве значения «OpenArgs» можно указать какие-либо параметры, которые на открываемой форме можно будет считать
в Private Sub Form_Load() с помощью Me.OpenArgs. Если необходимо передать несколько параметров, то можно передать их в виде текстовой строки, разделив символом. И далее в Private Sub Form_Load() разбить на части:
8. Многие забывают, что Access работает не только таблицами из файлов mdb/accdb, но и с таблицами других баз данных. Для экспорта уже существующих таблиц есть бесплатная утилита SQL Server Migration Assistant, хотя можно воспользоваться и встроенным функционалом или найти стороннее решение.
И напоследок небольшой хинт из разряда «Это знает каждый ребенок, но я вот этого не знал…»:
Знаете ли вы, что для того, чтобы при открытии файла Access не срабатывали макросы и не открывалась форма по умолчанию, необходимо держать нажатой клавишу Shift?
Общие сведения о программировании в Access
Создавая базу данных, вы обычно начинаете с создания нескольких объектов базы данных, таких как таблицы, формы и отчеты. Рано или поздно наступает момент, когда нужно добавить программный код, чтобы автоматизировать определенные процессы и связать объекты базы данных друг с другом. Прочитав эту статью, вы получите представление о средствах программирования в Access.
В этой статье
Программирование
Программирование в Access — это процесс добавления функций в базу данных с помощью макроса Access или кода VBA Visual Basic для приложений (VBA). Предположим, например, что вы создали форму и отчет и хотите добавить в форму кнопку, при нажатии на которую открывается отчет. В данном случае программированием является создание макроса или процедуры VBA с настройкой свойства события OnClick для запуска макроса или процедуры нажатием кнопки. Для простой операции, например открытия отчета, можно воспользоваться мастером кнопок для работы или отключить мастер и программировать его самостоятельно.
Примечание: Во многих программах Microsoft Office термин «макрос» относится к коду VBA. Это может запутать пользователей Access, так как в этом приложении термин «макрос» относится к именованному набору макрокоманд, для создания которого используется конструктор макросов. Макрокоманды Access — это лишь часть команд, доступных в VBA. Конструктор макросов обладает более структурированным интерфейсом, чем редактор Visual Basic, что позволяет добавлять программный код к элементам управления и объектам без необходимости изучать код VBA. Следует помнить, что в статьях справки Access макросы Access называются просто макросами. С другой стороны, код VBA может называться VBA, кодом, функцией или процедурой. Код VBA содержится в модулях классов (это части отдельных форм и отчетов, обычно содержащие код только для этих объектов), а также в модулях (они не привязаны к определенным объектам и обычно содержат «глобальный» код, который можно использовать во всей базе данных).
Объекты, например формы и отчеты, и элементы управления, такие как кнопки и текстовые поля, обладают разными свойствами событий, к которым можно прикреплять макросы или процедуры. Каждое свойство события связано с определенным событием, например со щелчком мышью, открытием формы или изменением данных в текстовом поле. События могут также инициироваться факторами извне Access, например системными событиями, а также макросами или процедурами, прикрепленными к другим событиям. Если добавить много макросов или процедур к нескольким свойствам событий для большого числа объектов, база данных может получиться сложной, но в большинстве случаев для достижения нужных результатов потребуются минимальные усилия по программированию.
Выбор в пользу макросов или кода VBA
Решение в пользу макросов, кода VBA или обоих методов зависит главным образом от того, как вы планируете развертывать и распространять базу данных. Например, если база данных хранится на вашем компьютере, вы единственный пользователь и хорошо разбираетесь в коде VBA, целесообразно использовать VBA для большинства задач по программированию. Если же вы собираетесь поделиться базой данных с другими людьми, разместив ее на файловом сервере, возможно, лучше обойтись без VBA из соображений безопасности.
Принимая решение об использовании макросов или кода VBA, вы должны учесть два аспекта: безопасность и необходимую функциональность. Безопасности следует уделить особое внимание, так как VBA можно использовать для создания кода, который способен нарушить защиту данных или повредить файлы на локальном компьютере. Если вы используете базу данных, созданную не вами, не включайте код VBA, если не уверены в том, что база данных получена из надежного источника. Создавая базу данных, предназначенную для других людей, не используйте средства программирования, которые могут привести к тому, что пользователям потребуется явно предоставить ей статус надежной. Чтобы избежать такой ситуации, воспользуйтесь распространенными приемами, описанными ниже в этом разделе.
Чтобы обеспечить безопасность базы данных, применяйте макросы везде, где это возможно, а программирование с помощью VBA используйте только для операций, которые невозможно выполнить с помощью макрокоманд. Более того, следует использовать только такие макрокоманды, для выполнения которых не требуется предоставлять базе данных статус надежной. При таком ограничении использования макрокоманд пользователи будут уверены в том, что база данных не содержит программного кода, который может повредить данные или другие файлы на их компьютерах.
Рекомендации по использованию макросов
Начиная с выпуска 2010 в Access предлагается много новых макрокоманд, с помощью которых можно создавать более функциональные макросы, чем в более ранних версиях приложения. Например, теперь можно с помощью макрокоманд создавать и использовать глобальные временные переменные, а также более изящно обрабатывать ошибки, применяя новые специализированные макрокоманды. В более ранних версиях Access это можно было сделать только с помощью кода VBA. Кроме того, можно внедрить макрос прямо в свойство события объекта или элемента управления. Внедренный макрос становится частью объекта или элемента управления и сохраняется при их перемещении и копировании.
Макрос — это простой способ выполнения многих задач программирования, таких как открытие и закрытие форм и запуск отчетов. Вы можете быстро и легко связать созданные объекты базы данных (формы, отчеты и т. д.), так как вам не нужно помнить о синтаксисе. Аргументы для каждой макро макроки отображаются в конструкторе макроса.
Макросы обеспечивают повышенную безопасность и просты в использовании. Кроме того, их необходимо применять для выполнения следующих задач:
Назначение действия или набора действий ключу. Для этого необходимо создать группу макросов с именем AutoKeys.
Выполнение действия или последовательности действий при первом открытии базы данных. Для этого необходимо создать макрос с именем AutoExec.
Примечание: Макрос AutoExec запускается раньше, чем любой другой макрос или код VBA, даже если вы назначили в диалоговом окне Параметры Access начальную форму и прикрепили к ее событию OnOpen или OnLoad макрос или код VBA.
Дополнительные сведения о создании макросов см. в разделе Макросы.
Рекомендации по использованию VBA
Программный код VBA следует использовать вместо макросов, если вы хотите сделать следующее:
Использовать встроенные функции или создать собственные. В Access есть множество встроенных функций, например IPmt, которая вычисляет процентные платежи. С помощью этих встроенных функций можно выполнять вычисления, не создавая сложных выражений. Используя код VBA, вы также можете создать собственные функции для выполнения вычислений, которые требуют создания слишком сложных выражений или не могут быть выполнены с их помощью. Кроме того, созданные функции можно включать в выражения, что позволяет выполнять часто используемые операции с разными объектами.
Создавать объекты и обрабатывать их. Вы увидите, что в большинстве случаев проще всего создать или изменить объект в режиме конструктора. Но в некоторых случаях вам может потребоваться изменить определение объекта в коде. С помощью VBA можно обрабатывать все объекты в базе данных, а также манипулировать самой базой данных.
Выполнять действия на уровне системы. Чтобы запустить из Access другую программу (например, Microsoft Excel), можно выполнить макрос с макрокомандой RunApp, но в целом возможности применения макросов для выполнения действий вне Access ограничены. С помощью VBA можно проверить, существует ли на компьютере определенный файл, воспользоваться технологией Automation или DDE для взаимодействия с другими программами для Microsoft Windows, такими как Excel, и вызвать функции из библиотек DLL в Windows.
Обрабатывать записи поочередно. Используя код VBA, можно обработать набор записей, выполнив поочередно операцию над каждой из них. В то же время макрос обрабатывает все записи из набора одновременно.
Выполнение распространенных задач программирования с помощью мастера кнопок
Добавьте в форму кнопку, и мастер кнопок поможет вам приступить к программированию. С помощью мастера вы сможете создать кнопку для выполнения определенной задачи. В файле Access (ACCDB) мастер создает макрос, внедренный в свойство OnClick этой кнопки. В MDB- или ADP-файле мастер создает код VBA, так как в этих форматах не поддерживаются внедренные макросы. В любом случае вы можете затем изменить или дополнить макрос или код VBA в соответствии со своими потребностями.
В области навигации щелкните правой кнопкой мыши форму, в которую нужно добавить кнопку, и выберите пункт Конструктор.
На вкладке Конструктор щелкните стрелку вниз, чтобы открыть коллекцию Элементы управления, и убедитесь в том, что пункт Использовать мастера выделен.
На вкладке Конструктор в коллекции Элементы управления щелкните элемент Кнопка.
На бланке формы щелкните там, где нужно поместить кнопку.
Откроется мастер кнопок.
На первой странице мастера в списке Категории щелкните каждую категорию, чтобы посмотреть, какие действия можно запрограммировать для кнопки. В списке Действия выберите нужное действие, а затем нажмите кнопку Далее.
Выберите параметр Текст или Рисунок в зависимости от того, что нужно отобразить на кнопке.
Если вы хотите отобразить текст, то можете изменить содержимое поля рядом с параметром Текст.
Если вам нужен рисунок, мастер предложит изображение в соответствующем списке. Если вы хотите выбрать другой рисунок, установите флажок Показать все рисунки, чтобы отобразить список всех доступных в Access изображений для кнопок, или нажмите кнопку Обзор, чтобы выбрать рисунок, сохраненный в отдельном файле.
Нажмите кнопку Далее.
Введите понятное имя для кнопки. Это необязательный шаг, и это имя не отображается на кнопке. Тем не менее рекомендуем указать понятное имя, чтобы было легко отличить эту кнопку от других позже (например, при настройке последовательности табуляции для элементов управления формы). Например, если кнопка закрывает форму, можно назвать ее cmdClose или CommandClose.
Нажмите кнопку Готово.
Кнопка будет размещена в форме.
Если вы хотите просмотреть программный код, созданный мастером, можно сделать следующее:
Если окно свойств не отображается, нажмите клавишу F4.
В окне свойств откройте вкладку События.
В окне свойства «По щелчку» нажмите кнопку «Построить» .
Откроется конструктор макросов, в котором будет показан макрос, созданный мастером. При желании макрос можно изменить (дополнительные сведения о редактировании макросов см. в разделе Макросы). Когда вы закончите, на вкладке Конструктор в группе Закрыть нажмите Закрыть, чтобы закрыть конструктор макросов. Если будет предложено сохранить изменения и обновить свойство, нажмите Да, чтобы сделать это, или Нет, чтобы отказаться.
На вкладке Конструктор в группе Режимы нажмите кнопку Режим и выберите пункт Режим формы. Нажмите новую кнопку, чтобы проверить, правильно ли она работает.
Макросы
Макрос — это инструмент, позволяющий автоматизировать задачи и добавлять функции в формы, отчеты и элементы управления. Например, если добавить в форму кнопку, то можно связать ее свойство события OnClick с макросом и включить в него команды, которые должны выполняться при нажатии этой кнопки.
Макросы Access можно рассматривать как упрощенный язык программирования, код на котором создается в виде списка необходимых действий. Создавая макрос, вы выбираете каждую макрокоманду из раскрывающегося списка, а затем вводите для нее необходимую информацию. С помощью макросов можно добавлять функции в формы, отчеты и элементы управления без необходимости писать код в модуле VBA. В макросах доступно подмножество команд VBA, и большинство людей считают, что создать макрос легче, чем написать код VBA.
Создать макрос можно с помощью конструктора макросов, который показан на этом рисунке:
Вот как можно открыть конструктор макросов:
на вкладке Создание в группе Макросы и код нажмите кнопку Макрос.
Код VBA
Как и макросы, код VBA можно использовать в Access для автоматизации и добавления функций. Вы можете расширить возможности VBA за счет элементов управления сторонних поставщиков, а также создать собственные функции и процедуры для конкретных целей.
Самый быстрый способ приступить к написанию программного кода VBA — создать макрос Access, а затем преобразовать его в код VBA. Инструкции см. в разделе Преобразование макросов в код VBA. В этом случае будет создан модуль VBA, который выполняет те же операции, которые определены в макросе. Кроме того, откроется редактор Visual Basic, так что вы сможете приступить к редактированию процедуры. При работе в редакторе Visual Basic можно щелкнуть интересующее вас ключевое слово и нажать клавишу F1, чтобы открыть справку разработчика Access и ознакомиться с соответствующей статьей. Затем вы можете продолжить изучение справки разработчика Access и узнать о новых командах, которые пригодятся для ваших задач.
Преобразование макросов в код VBA
В Access можно автоматически преобразовать макросы в модули VBA или модули классов. Вы можете преобразовать макросы, прикрепленные к форме или отчету, независимо от того, внедрены они или являются отдельными объектами. Кроме того, можно преобразовать глобальные макросы, которые не прикреплены к конкретной форме или отчету.
Примечание: Веб-базы данных поддерживают код Visual Basic для приложений (VBA), но его невозможно запустить, когда такая база данных работает в браузере. Чтобы выполнить код VBA, который содержится в веб-базе данных, ее необходимо открыть в Access. Для задач, связанных с программированием, в веб-базах данных следует использовать макросы Access.
Преобразование макросов, прикрепленных к форме или отчету
Этот процесс преобразует в VBA все макросы, на которые ссылается форма, отчет или любой из их элементов управления (либо которые внедрены в форму, отчет или элемент управления), а затем добавляет код VBA в модуль класса формы или отчета. Модуль класса становится частью формы или отчета и сохраняется при их перемещении или копировании.
В области навигации щелкните форму или отчет правой кнопкой мыши и выберите пункт Конструктор.
На вкладке Конструктор в группе Сервис нажмите Преобразовать макросы формы или Преобразовать макросы отчета.
В диалоговом окне Преобразование макросов формы или Преобразование макросов отчета укажите, нужно ли добавить к создаваемым функциям код обработки ошибок. Кроме того, если в макросах есть комментарии, укажите, нужно ли добавлять их в функции. Нажмите кнопку Преобразовать.
Если модуль класса для формы или отчета не существует, access создаст его и добавит в модуль процедуру для каждого макроса, связанного с формой или отчетом. Кроме того, Access изменяет свойства событий формы или отчета таким образом, чтобы они запускали новые процедуры VBA вместо макроса.
Чтобы просмотреть и изменить код VBA, сделайте следующее:
Форма или отчет должны быть по-прежнему открыты в режиме конструктора. Если окно свойств не отображается, нажмите клавишу F4.
На вкладке «События» окна свойств щелкните любое поле свойства, в которое будет отображаться [Процедура мероприятия],и нажмите кнопку сборки . Чтобы просмотреть свойства событий для определенного элемента управления, щелкните его, чтобы выбрать. Чтобы просмотреть свойства событий для всей формы или отчета, в верхней части окна свойств выберите в раскрывающемся списке пункт Форма или Отчет.
Откроется редактор Visual Basic с процедурой обработки событий в соответствующем модуле класса. Чтобы просмотреть другие процедуры, которые хранятся в этом модуле класса, прокрутите содержимое вверх или вниз.
Преобразование глобальных макросов
В области навигации щелкните правой кнопкой мыши макрос, который нужно преобразовать, и выберите пункт Конструктор.
На вкладке Конструктор в группе Сервис щелкните Преобразовать макросы.
В диалоговом окне Преобразование макроса установите нужные флажки и нажмите кнопку Преобразовать.
Макрос будет преобразован, и откроется редактор Visual Basic.
Чтобы просмотреть и изменить код VBA, сделайте следующее:
В редакторе Visual Basic, если область Project Explorer (Окно проекта) не отображается, в меню View (Вид) выберите пункт Project Explorer.
Разверните дерево под именем базы данных, в которой вы работаете.
Модуль откроется в редакторе Visual Basic.
Прикрепление функции VBA к свойству события
При преобразовании глобального макроса в VBA код VBA помещается в стандартный модуль. В отличие от модуля класса, стандартный модуль не является частью формы или отчета. Скорее всего, вам будет необходимо связать функцию со свойством события в форме, отчете или окнах, чтобы код запускается точно в нужное время и в нужном месте. Для этого можно скопировать код VBA в модуль класса и связать его со свойством события или сделать специальный звонок из свойства события в стандартный модуль с помощью следующей процедуры:
В редакторе Visual Basic посмотрите, как называется функция. Например, если преобразовать макрос с именем MyMacro, функции будет присвоено имя MyMacro().
Закройте редактор Visual Basic.
В области навигации щелкните правой кнопкой мыши форму или отчет, который нужно связать с функцией, и выберите в контекстном меню пункт Конструктор.
Щелкните элемент управления или раздел, с которым вы хотите связать функцию.
Если окно свойств не отображается, нажмите клавишу F4.
В окне свойств на вкладке События щелкните поле свойства события, с которым нужно связать функцию.
В поле свойства введите знак равенства ( =), а затем — имя функции (например, = MyMacro ( ). Не забудьте ввести скобки.
Сохраните форму или отчет, нажав на панели быстрого доступа кнопку Сохранить.
В области навигации дважды щелкните форму или отчет и проверьте, правильно ли работает код.
Вы ознакомились с основными действиями для добавления кода VBA в базу данных. В этой статье содержатся только общие сведения о том, как приступить к работе, но существует множество справочников и ресурсов в Интернете, с помощью которых вы сможете усовершенствовать свои навыки программирования.