Access

Открыть форму vba access: Метод DoCmd.OpenForm (Access) | Microsoft Docs

Содержание

Событие Form.Open (Access) | Microsoft Docs

Twitter LinkedIn Facebook Адрес электронной почты

  • Статья
  • Чтение занимает 2 мин

Событие Open происходит при открываемой форме, но до отображения первой записи.

Синтаксис

выражения. Открыть (отменить)

выражение: переменная, представляющая объект Form.

Параметры

ИмяОбязательный или необязательныйТип данныхОписание
ОтменаОбязательный64-разрядное целое число.Параметр определяет, происходит ли открытие формы или отчета. Настройка аргумента Отмена true (1) отменяет открытие формы или отчета.

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

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

Событие Open не происходит при активации уже открытой формы. например, при переходе на форму из другого окна в Microsoft Access или использовании действия OpenForm на макросе, чтобы довести открытую форму до вершины. Однако событие Активировать происходит в этих ситуациях.

Когда вы открываете форму на основе базирующегося запроса, Microsoft Access запускает базовую запрос для формы, прежде чем она запускает процедуру Open macro или event.

Если приложение может одновременно загружать несколько форм, используйте события Активация и Деактивации вместо события Open для отображения и сокрытия настраиваемой панели инструментов при переходе фокуса в другую форму.

Событие Open происходит перед событием

Load , которое запускается при запуске формы и отображении записей.

При первом открываемом виде в этом порядке происходят следующие события:

Откройтезагрузку активировать → Current

Событие Close происходит после события разгрузки , которое запускается после закрытия формы, но перед ее удалением с экрана.

При закрытии формы в этом порядке происходят следующие события:

Разгрузкаотключения → Close

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

Если вы пытаетесь решить, использовать ли событие Open или Load для макроса или процедуры событий, одно существенное отличие состоит в том, что событие Open можно отменить, но событие Load не может. Например, если вы динамически строите источник записей для формы в процедуре событий для открытого события формы, можно отменить открытие формы, если нет записей для отображения. Аналогично, событие разгрузки может быть отменено, но событие Закрыть не может.

Пример

В следующем примере показано, как отменить открытие формы при выборе пользователем кнопки «Нет «. Поле сообщений побуждает пользователя вводить сведения о порядке. Если пользователь выбирает «Нет», форма «Сведения о порядке» не открывается.

Чтобы попробовать пример, добавьте в форму следующую процедуру события.

Private Sub Form_Open(Cancel As Integer) 
 Dim intReturn As Integer 
 intReturn = MsgBox("Enter order details now?", vbYesNo) 
 Select Case intReturn 
 Case vbYes 
 ' Open Order Details form. 
 DoCmd.OpenForm "Order Details" 
 Case vbNo 
 MsgBox "Remember to enter order details by 5 P.M." 
 Cancel = True ' Cancel Open event. 
 End Select 
End Sub

Поддержка и обратная связь

Есть вопросы или отзывы, касающиеся Office VBA или этой статьи? Руководство по другим способам получения поддержки и отправки отзывов см. в статье Поддержка Office VBA и обратная связь.

Установка на последнюю запись при открытии формы. Access 2002: Самоучитель

Установка на последнюю запись при открытии формы. Access 2002: Самоучитель

ВикиЧтение

Access 2002: Самоучитель
Дубнов Павел Юрьевич

Содержание

Установка на последнюю запись при открытии формы

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

Подготовка процедуры

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

Как и в предыдущем примере, начните с окна свойств. Но теперь вам понадобится таблица свойств не какого-то отдельного поля, а всей формы в целом.

Открыв форму Фирмы в режиме конструктора, щелкните по кнопке

Она расположена в левом верхнем углу формы, непосредственно под названием Фирмы: Form (см. рис. 12.13). На фоне окна конструктора откроется окно таблицы свойств формы. Активизируйте опцию Открыть. Щелкните в этом поле мышью и воспользуйтесь стрелкой прокрутки. В выпадающем списке выберите позицию Обработка событий и включите ее в поле Открыть. Если теперь вы щелкнете по кнопке

то в окне модуля будут выведены операторы, обрамляющие процедуру (см. рис. 12.6): Private Sub Form_Open (Cancel As Integer) и End Sub.

Рис. 12.13

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

Следующий стандартный шаг – установка операторов обработки ошибок. После этого заготовка программы принимает такой вид:

Private Sub Form_Open(Cancel As Integer)

On Error GoTo Err_Form_Open

. . . . . . . . . . .

Err_Form_Open:

MsgBox Err.Description

Resume Exit_Form_Open

End Sub

Теперь определите переменную Cod, которая необходима для выполнения процедуры:

Dim Cod As Integer

После этого введите содержательные операторы:

DoCmd.RunMacro «Макрос1»

Cod = DMax(«[Код Фирмы]», «Фирмы») + 1

Forms![Фирмы]![Код фирмы] = [Cod]

DoCmd.RunMacro «Макрос14»

Exit_Form_Open:

Exit Sub

Команда Макрос1 задает переход к новой записи, а Макрос14 устанавливает курсор в следующем поле, куда должна вводиться информация. Приведем полный текст процедуры:

Private Sub Form_Open(Cancel As Integer)

On Error GoTo Err_Form_Open

Dim Cod As Integer

DoCmd.RunMacro «Макрос1»

Cod = DMax(«[Код Фирмы]», «Фирмы») + 1

Forms![Фиpмы]![Koд фирмы] = [Cod]

DoCmd. RunMacro «Макрос14»

Exit_Form_Open:

Exit Sub

Err_Form_Open:

MsgBox Err.Description

Resume Exit_Form_Open

End Sub

Если вы теперь откроете форму Фирмы, то обнаружите, что она сразу открывается на последней записи, которая еще пуста (рис. 12.14). Ее код уже установлен, а курсор находится в поле Название фирмы. Таким образом, форма готова к вводу новой информации. (Не будь написанной и выполненной процедуры, форма открылась бы на первой записи.)

Рис. 12.14

Данный текст является ознакомительным фрагментом.

4. Веб-формы 2.0

4. Веб-формы 2.0 Когда в веб-браузерах появился JavaScript, его немедленно стали использовать для двух задач: изменения картинки при наведении мышью и улучшения форм. Когда же в CSS появился псевдокласс :hover, веб-разработчикам перестало быть нужным использовать JavaScript для того,

Формы

Формы Иногда данных у нас нет. Совсем! Но мы знаем, как их получить, – о них нужно просто спросить у людей. Они сами с удовольствием дадут нам всю необходимую информацию. Думаю, становится понятно, что речь идет о всевозможного рода опросах и анкетах. Куда поехать на

Создание Web-формы

Создание Web-формы На очереди — Web-форма, в которую посетитель будет вводить искомое слово или его часть. Вот только куда ее поместить? Давайте пока что вставим ее в контейнер cnavbar, ниже полосы навигации, непосредственно перед закрывающим тегом </DIV>, формирующим этот

В последнюю минуту

В последнюю минуту В начале 80-х годов из-за недальновидного руководства развитие вычислительной техники Рочестера стало спотыкаться. Однако у нас все еще было несколько хороших менеджеров, понимавших значение создаваемых систем. Этим людям приходилось поддерживать

1.13. При открытии папки с рисунками, они показываются как картинки. В первый раз тормозит, потом работает быстро. Где это всё кешируется? И как это отключить?

1.13. При открытии папки с рисунками, они показываются как картинки. В первый раз тормозит, потом работает быстро. Где это всё кешируется? И как это отключить? Для отключения этой функции достаточно изменить вид отображения папки в меню View, или через соответствующую ему

Создание Web-формы

Создание Web-формы На очереди — Web-форма, в которую посетитель будет вводить искомое слово или его часть. Вот только куда ее поместить? Давайте пока что вставим ее в контейнер cnavbar, ниже полосы навигации, непосредственно перед закрывающим тегом </DIV>, формирующим этот

Фреймы и формы

Фреймы и формы Рано или поздно вам встретятся страницы, содержащие в себе не только гиперссылки, но и фреймы с формами. ФреймыНередко интернет-страницы разделены (по замыслу разработчиков) на несколько независимых частей, которые называются фреймами[29] . По сути, на

B.3 Регистрационные формы

B.3 Регистрационные формы Регистрационные формы для имен и адресов Интернета можно получить в службе регистрации InterNIC (InterNIC Registration Services), доступной по адресу:http://www.internic.net/при выборе REGISTRATION SERVICES и последующем выборе

Формы

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

Формы на сайте

Формы на сайте Форма – это то, над чем стоит работать в первую очередь. Основной показатель формы – это конверсия (сколько человек зашло на страницу с формой и сколько выполнило целевое действие и нажало на кнопку для отправки информации).Довольно частая ошибка – это

Создание формы

Создание формы Для создания новой формы VBA выберите Insert=UserForm из меню редактора Visual Basic или из контекстного меню (вызываемого щелчком правой кнопки мыши) в окне проводника проектов. Новая форма (точнее, заготовка новой формы) появится в специально созданном для нее окне, а

Разработка формы

Разработка формы Для того чтобы отправить SMS, необходимо знать номер телефона, на который мы будем отправлять сообщение, оператора этого номера и, естественно, — само отправляемое сообщение.Создайте новый проект Delphi и присвойте форме заголовок SMS-sender (свойство Caption).

Начальная форма при открытии базы данных или приложения

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

Удаление записи с установкой на последнюю запись

Удаление записи с установкой на последнюю запись В каждой форме базы данных Контрольно-измерительные приборы созданы две дополнительные кнопки: Изменить запись и Удалить запись (см. рис. 12.15). Рис. 12.15В этом разделе будет рассмотрена процедура, на которой основано

Access vba закрыть форму

Объект Access.Form, работа с формами Access средствами VBA, открытие формы Access, работа с элементами управления на форме Access

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

Формы Access используются:

  • Для редактирования записей в таблицах базы данных Access и внешних источников данных. Для того, чтобы создать такие формы, вообще не нужно никакого программирования — достаточно создать форму в режиме конструктора или воспользоваться мастером создания форм. Подключиться к внешнему источнику данных (например, базе данных SQL Server или Oracle) можно, воспользовавшись в Access меню Файл ->Внешние данные ->Связь с таблицами.
  • Как панели управления вашего приложения. Очень часто в приложении на основе Access создается начальная форма, которая открывается при запуске этого приложения. На этой формы предусмотрены кнопки и другие элементы управления для вызова других форм, отчетов, макросов, выхода из приложения и выполнения прочих операций. После закрытия других форм управления опять передается начальной форме.
  • Просто для предоставления пользователю возможности выполнения любых действий. Например, форму можно использовать для выбора пользователем параметров отчета, выгрузки данных во внешнее приложение (например, Excel) и т.п.

Как работать с формами 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(), который изменяет размеры активного объекта (например, нашей формы, если она активна):

Еще одна возможность: если вы работаете с кодом самой формы или ее элементов управления (например, события Click кнопки, которая расположена на форме), то обратиться к объекту самой этой формы можно совсем просто. Для этого используется ключевое слово Form.

Как можно открыть форму?

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

Рис. 12.1 Окно для работы с формами в Access

Еще один часто используемый способ — просто запускать форму при открытии базы данных Access. Для этого в меню Сервис нужно выбрать Параметры запуска и выбрать нужную форму в списке Вывод формы/страницы. Если при этом вы уберете все остальные флажки, то приложение при открытии приложение может выглядеть так, как показано на рис. 12.2:

Рис. 12.2 Все лишние возможности Access спрятаны от пользователя

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

Если все-таки нужно открыть форму программным способом (например, из другой формы), то для этой цели можно использовать метод DoCmd.OpenForm(). В самом простом варианте этот метод просто принимает параметр с именем формы:

Если же форма уже открыта, то этот метод, конечно, не открывает форму заново, а просто активизирует ее. Метод DoCmd.OpenForm() принимает также несколько необязательных параметров, при помощи которых вы можете настроить фильтр на отображение записей в форме, режим открытия формы (например, модальность) и т.п. Закрытие формы производится при помощи метода DoCmd.Close(). Если же вам нужно просто спрятать форму, чтобы сохранить введенные на ней пользователем значения и отобразить их при следующем показе, можно просто сделать форму невидимой, назначив ее свойству Visible значение False.

Форма нам обычно нужна не сама по себе, а как контейнер для расположенных на ней элементов управления. Обычно элементы управления программным способом создавать не требуется — намного проще и удобнее поместить их на форму в режиме конструктора для формы. В наборе элементов управления для формы предусмотрены как знакомые нам элементы управления — текстовые поля, надписи, кнопки, флажки и переключатели, так и новые элементы — свободная и присоединенная рамки объектов, разрывы страниц, подчиненные формы/отчеты и т.п. В верхнем правом углу Toolbox в конструкторе формы Microsoft Access находится специальная кнопка Мастера. Если она нажата, то добавление на форму привычных элементов управления (например, кнопки) приведет к появлению окна мастера, который попытается помочь вам автоматически сгенерировать нужный код VBA для этого элемента управления (см. рис. 12.3)

Рис. 12.3 Мастер создания кнопок

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

Для чего используются нестандартные (по отношению к обычным формам VBA) элементы управления:

  • Свободная рамка объекта — возможность разместить на форме OLE-объект (например, документ Word, лист Excel, презентация PowerPoint, рисунок, звукозапись или видеоклип), который может быть встроен в базу данных Access (но не помещен в таблицу!) или находиться во внешнем по отношению к базе данных Access файлу.
  • Присоединенная рамка объекта — то же самое, за исключением того, что он применяется для работы с объектами OLE, которые хранятся в таблицах внутри баз данных Access или внешнего источника данных. Это — самый удобный способ генерации отчетов в Word.

Например, предположим, что в нашей базе данных 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, которая умеет работать с именами элементов управления:

5 Yarden [2014-01-14 16:57:00]

Я пытаюсь создать макрос, который закрывает текущую форму и открывает основную форму.

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

Есть ли способ сделать это?

vba ms-access forms

1 ответ

11 Решение Blackhawk [2014-01-14 17:38:00]

Создайте модуль кода и добавьте следующую функцию:

Теперь, каждый раз, когда у вас есть кнопка, которая должна закрыть текущую форму и открыть форму «frmMain», вы должны написать обработчик события click так:

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

Метод Close выполняет действие закрытия в Visual Basic. The Close method carries out the Close action in Visual Basic.

Синтаксис Syntax

выражение.Close (ObjectType, ObjectName, Save) expression.Close (ObjectType, ObjectName, Save)

выражение: переменная, представляющая объект DoCmd. expression A variable that represents a DoCmd object.

Параметры Parameters

Имя NameОбязательный или необязательный Required/OptionalТип данных Data typeОписание Description
ObjectType ObjectTypeНеобязательный OptionalAcObjectType AcObjectTypeКонстанта AcObjectType, представляющая тип закрываемого объекта. An AcObjectType constant that represents the type of object to close.
ObjectName ObjectNameНеобязательный OptionalVariant VariantСтроковое выражение, которое является допустимым именем объекта типа, выбранного аргументом ObjectType. A string expression that’s the valid name of an object of the type selected by the ObjectType argument.
Save SaveНеобязательный OptionalAcCloseSave AcCloseSaveКонстанта AcCloseSave, указывающая, нужно ли сохранять изменения в объекте. An AcCloseSave constant that specifies whether to save changes to the object. Значение по умолчанию — acSavePrompt. The default value is acSavePrompt.

С помощью метода Close можно закрыть указанное окно Microsoft Access или активное окно, если не указано определенное окно. You can use the Close method to close either a specified Microsoft Access window or the active window if none is specified.

Если оставить аргументы ObjectType и ObjectName пустыми (для аргумента ObjectType предполагается константа по умолчанию acDefault), Access закрывает активное окно. If you leave the ObjectType and ObjectName arguments blank (the default constant, acDefault, is assumed for ObjectType), Access closes the active window. Если указать аргумент Save и оставить аргументы_ObjectType_ и ObjectName пустыми, необходимо включить запятые аргументов ObjectType и ObjectName. If you specify the Save argument and leave the ObjectType and ObjectName arguments blank, you must include the ObjectType and ObjectName arguments’ commas.

Если у формы есть элемент управления, привязанный к полю, для свойства Required которого задано значение «Да», а форма закрыта с помощью метода Close без ввода данных для этого поля, сообщение об ошибке не отображается. If a form has a control bound to a field that has its Required property set to Yes, and the form is closed by using the Close method without entering any data for that field, an error message is not displayed. Все изменения, внесенные в запись, будут отменены. Any changes made to the record will be aborted. Когда форма закрывается с помощью пользовательского интерфейса, Access отображает оповещение. When the form is closed by using the user interface, Access displays an alert.

Чтобы отобразить сообщение об ошибке, используйте метод RunCommand для вызова команды acCmdSaveRecord перед вызовом метода Close. To display an error message, use the RunCommand method to invoke the acCmdSaveRecord command before calling the Close method. Это приведет к ошибке во время выполнения, если одно или несколько обязательных полей имеют значение NULL. This will cause a run-time error if one or more required fields are Null. Этот способ показан в следующем примере. This technique is illustrated in the following example.

Пример Example

В следующем примере используется метод Close, чтобы закрыть форму Order Review (Проверка заказа), сохранив все изменения в форме, не выполняя запрос. The following example uses the Close method to close the form Order Review, saving any changes to the form without prompting.

Поддержка и обратная связь Support and feedback

Есть вопросы или отзывы, касающиеся Office VBA или этой статьи? Have questions or feedback about Office VBA or this documentation? Руководство по другим способам получения поддержки и отправки отзывов см. в статье Поддержка Office VBA и обратная связь. Please see Office VBA support and feedback for guidance about the ways you can receive support and provide feedback.

INTUIT.

ru: Курс: Работа в Microsoft ..: Тема №1: Знакомство с Access

Работа в Microsoft Access XP
 

1. Тема: Знакомство с Access

   
Содержание:

Что такое база данных?

Открытие существующей базы данных

Таблицы

Запросы

Формы

Отчеты

Другие объекты Access

 

Изучив эту тему, вы сможете: открывать базу данных; открывать таблицы в различных режимах; выполнять запросы; открывать форму в различных режимах; просматривать отчет в различных режимах.


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

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

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

В процессе изучения материала вы откроете базу данных GardenCo, ознакомитесь с ее структурой и рассмотрите некоторые компоненты, предназначенные для хранения и обработки информации. Для выполнения упражнений вам понадобятся файлы, которые хранятся в папках Open, Tables, Queries, Forms и Reports, вложенных в папку Office XP SBS\Access\Chap09.

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

Что такое база данных

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

КодФамилияИмяДолжностьДата найма
1ДэйлМартаПродавец1 мая 1992 г
2ФулерДжоанаМенеджер по продажам1 августа 1992 г
3ЛиМаркПродавец1 апреля 1992 г
4ПеннДэниелПродавец3 мая 1993

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

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

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

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

Преимущества Access по сравнению с другими программами

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

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

Важно. Для обеспечения совместимости базы данных, созданные в Access 2002, поддерживают формат Access 2000.

Из всех типов объектов только таблицы предназначены для хранения информации. Остальные используются для просмотра, редактирования, обработки и анализа данных — иначе говоря, для обеспечения эффективного доступа к информации.

На протяжении многих лет Microsoft прилагал немало усилий, чтобы превратить Access не только в одну из самых мощных программ управления базами данных, но и в одну из самых удобных и простых. Поскольку Access входит в состав Microsoft Office, он обладает многими чертами, характерными для приложений Office, и может обмениваться с ними информацией. Например, работая в Access, можно открывать и редактировать файлы с помощью кнопок, команд и клавиш, а также использовать буфер обмена Office для копирования данных из таких программ, как Microsoft Word или Microsoft Excel.

Открытие существующей базы данных

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

GardenCo

В этом упражнении вы откроете базу данных GardenCo и просмотрите ее основные компоненты, не вдаваясь в детали, только для того, чтобы получить общее представление. В качестве рабочей будет использоваться папка Office XP SBS\Access\Chap09\Open. Выполните следующие шаги.

  1. На панели задачи щелкните на кнопке Пуск (Start), укажите на Программы (Programs) и щелкните на кнопке Microsoft Access. При первом открытии Access окно программы выглядит следующим образом.

    Важно. Изображение на вашем экране может несколько отличаться от приведенного на рисунке. Это связано с тем, что используемые в курсе иллюстрации получены с помощью монитора со степенью разрешения 800х600, цветовой палитрой 24 бит и схемой цветов Обычная Windows (Windows Standard). Исходные установки экрана заданы по умолчанию и изменяются в процессе выполнения упражнений.

    Подобно другим приложениям Microsoft Office ХР, окно Access включает строку меню и панели инструментов, а также новый элемент, называемый панелью задачи, в правой части окна программы. Чтобы открыть панель задачи, воспользуйтесь командами Поиск (Search) или Создать (New) в меню Файл (File) или командой Буфер обмена (Office Clipboard) в меню Правка (Edit).

  2. На панели инструментов щелкните на кнопке Открыть (Open), перейдите к папке Office XP SBS\Access\Chap09\Open и щелкните дважды на GardenCo. Появится вводный экран(или заставка) базы данных.

    Совет. Обычно, чтобы открыть базу данных Access, достаточно щелкнуть дважды на имени соответствующего файла (с расширением .mdb) в окне Проводник (Windows Explorer). Можно также запустить программу Access, а затем воспользоваться командой Создать (New) в меню Файл (File), чтобы отобразить панель задачи Новый файл (New File), на которой представлены параметры, позволяющие открыть новую или существующую базу данных.

  3. Выделите флажок Больше не показывать этот экран (Don’t show this screen again) и щелкните на кнопке ОК. На экране отобразится кнопочная форма, предназначенная для упрощения доступа к объектам базы данных.
  4. Щелкните на кнопке Закрыть кнопочную форму, чтобы закрыть кнопочную форму. Окно базы данных свернуто в короткую строку заголовка в нижнем левом углу экрана.
  5. Щелкните на кнопке Восстановить (Restore) в этой строке, чтобы развернуть окно базы данных. Окно базы данных GardenCo имеет следующий вид.

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

  6. Закройте базу данных GardenCo, щелкнув на команде Закрыть (Close) в меню Файл (File).

Таблицы

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

Совет. Чтобы получить подробные сведения о спецификации Access, включая размер базы данных и максимальное число записей в таблице, щелкните в поле Введите вопрос (Ask A Question) в конце строки меню, введите соответствующий вопрос и нажмите на клавишу (Enter).

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

В табличном режиме содержимое таблицы отображается в виде столбцов (полей) и строк (записей), как показано ниже.

 

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

GardenCo

В этом упражнении вы откроете таблицы базы данных GardenCo и отобразите их в различных режимах.

В качестве рабочей будет использоваться папка Office XP SBS\Access\Chap09\Tables. Выполните следующие шаги.

  1. Откройте базу данных GardenCo, расположенную в рабочей папке.
  2. На панели объектов щелкните на пункте Таблицы (Tables). В окне базы данных отобразится список содержащихся в ней таблиц. Поскольку на панели инструментов нажата кнопка Таблица (Details), справа от каждого имени указаны характеристики таблицы.

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

  3. Щелкните на кнопке Развернуть (Maximize) в правом верхнем углу окна базы данных. Окно базы данных развернется и заполнит окно программы Access. Обратите внимание, что первые три элемента в столбце Имя (Name) не являются таблицами. Это ярлыки команд, которые используются для создания новых таблиц.

    Совет. Если ярлыки в начале списка объектов не нужны, щелкните на команде Параметры (Options) в меню Сервис (Tools). В диалоговом окне Параметры (Options) щелкните на вкладке Вид (View), очистите флажок Ярлыки новых объектов (New object shortcuts) и щелкните на кнопке ОК.

  4. Щелкните на кнопке Восстановить (Restore), чтобы сжать окно базы данных до исходных размеров.
  5. Щелкните на таблице Типы, а затем щелкните на кнопке Открыть (Open) вверху окна базы данных. Таблица Типы откроется в режиме таблицы, как показано ниже.

    Таблица содержит список типов товаров, которыми торгует компания, и включает поля Код типа, Наименование типа и Описание.

  6. Щелкните на знаке плюс слева от типа Луковые. Откроется подчиненная таблица, которая содержит данные из таблицы Товары, имеющие отношение к данному типу. То есть, вы одновременно просматриваете данные из двух таблиц, как показано ниже.

    Обратите внимание, что знак плюс заменился знаком минус.

  7. Щелкните на знаке минус слева от записи Луковые, чтобы свернуть подчиненную таблицу.
  8. Закройте таблицу Типы, щелкнув на команде Закрыть (Close) в меню Файл (File). Если будет предложено сохранить изменения макета, щелкните на кнопке Да (Yes).

    Совет. Можно также закрыть объект, щелкнув на кнопке Закрыть (Close) в правом верхнем углу окна объекта. Если объект развернут во весь экран, эта кнопка называется Закрыть окно (Close Windows) в отличие от кнопки Закрыть (Close) в конце строки заголовка окна Access. Будьте внимательны, чтобы случайно не выйти из Access.

  9. Щелкните дважды на таблице Заказы, чтобы открыть ее в режиме таблицы, как показано на следующем рисунке.
     

    На панели перехода внизу окна указано, что таблица содержит 87 записей. Запись 1 является активной, о чем свидетельствует выделенное поле.

  10. Переместите индикатор выделения вниз, несколько раз щелкнув на кнопке Следующая запись (Next Record) .

    Совет. Для перемещения по записям таблицы можно воспользоваться клавиатурой. Чтобы переместиться на одну запись, нажмите на клавишу () или (), на один экран — на клавишу (PgUp) или (PgDn), а чтобы перейти к первому или последнему полям таблицы, нажмите на клавиши (Ctrl)+(Home) или (Ctrl)+(End)

    .
  11. Перейдите к записи 40, выделив текущий номер записи на панели перехода, введя 40 и нажав на клавишу (Enter).
  12. Закройте таблицу Заказы и щелкните на Нет (No), если будет предложено сохранить изменения макета таблицы.
  13. В списке таблиц щелкните дважды на таблице Товары, чтобы открыть ее в режиме таблицы. Обратите внимание, что таблица содержит 189 записей.
  14. На панели инструментов щелкните на кнопке Вид (View), чтобы переключиться в режим конструктора.

    В режиме таблицы отображаются данные, которые хранятся в таблице, а в режиме конструктора отображается структура таблицы.

  15. Закройте таблицу Товары, щелкнув на кнопке Закрыть (Close). Если будет предложено сохранить изменения, щелкните на кнопке Нет (No).
  16. Закройте базу данных GardenCo, щелкнув на кнопке Закрыть (Close) в окне базы данных.

Запросы

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

В сущности, запрос представляет собой вопрос, сформулированный в терминах базы данных, например: Какие записи в таблице Клиенты содержат значение 98052 в поле ПочтовыйИндекс. При выполнении запроса Access находит в указанных таблицах данные, соответствующие заданному условию, и отображает их в табличном виде.

Существует различные типы запросов. Наиболее распространенными являются запросы на выборку, параметрические и перекрестные запросы. Реже используются запросы на действие, Autolookup и запросы SQL (Structured Query Language). Для создания простых запросов используется мастер, в менее тривиальных случаях можно создать запрос вручную в режиме конструктора, как показано на следующем рисунке.

 

Вверху окна запроса располагаются четыре окошка, содержащие списки полей таблиц, включенных в запрос. Линии, соединяющие общие поля, обозначают связи между таблицами. Первая строка бланка запроса содержит имена полей, включенных в запрос, а во второй строке указана таблица, к которой принадлежит каждое поле. Третья строка Групповая операция (Total) позволяет выполнять вычисления над значениями полей, а четвертая указывает принцип сортировки записей. Флажок в пятой строке Вывод на экран (Show) определяет, будет ли поле отображаться в результатах запроса. Шестая строка с именем Условие отбора (Criteria) позволяет задать критерий отбора записей из таблицы, а седьмая строка задает альтернативный критерий.

На первый взгляд все это кажется довольно сложным. Однако когда вы приступите к построению собственного запроса, исходя из логических соображений, все вышесказанное начнет приобретать смысл. Тем более что от вас не потребуется особых усилий. Функция Мастер запросов (Query Wizard) проведет вас через все необходимые шаги по созданию запроса и сохранит его в качестве объекта базы данных для дальнейшего использования.

GardenCo

В этом упражнении вы воспользуетесь несколькими запросами, которые хранятся в базе данных GardenCo. В качестве рабочей будет использоваться папка Office XP SBS\Access\Chap09\Queries. Выполните следующие шаги.

  1. Откройте базу данных GardenCo, расположенную в рабочей папке.
  2. На панели объектов щелкните на пункте Запросы (Queries). В окне базы данных отобразятся все хранящиеся в ней запросы.
  3. Щелкните дважды в строке заголовка окна базы данных, чтобы оно заняло все окно программы Access, как показано на следующем рисунке.

    Два верхних элемента списка представляют собой команды, предназначенные для создания запросов. В столбце Описание (Description) указано назначение каждого запроса. Значок в столбце Имя (Name) идентифицирует тип запроса, как и столбец Тип (Type), расположенный в правой части окна базы данных.

  4. Восстановите исходный размер окна базы данных, щелкнув на кнопке Восстановить (Restore) в конце строки меню (а не строки заголовка).
  5. Откройте запрос Продажа по типам в режиме таблицы, выделив его и щелкнув на кнопке Открыть (Open) вверху окна базы данных. Access выполнит запрос и отобразит результаты в виде таблицы, как показано на следующем рисунке.
     

    На панели перехода указано, что результаты запроса включают 171 запись, тогда как таблица Товары содержит 173 записей. Чтобы понять, почему отсутствуют 2 записи, нужно отобразить запрос в режиме конструктора.

  6. На панели инструментов щелкните на кнопке Вид (View), чтобы перейти в режим конструктора.

    Верхняя часть окна запроса содержит схемы таблиц, из которых нужно извлечь данные, а нижняя часть представляет собой бланк, предназначенный для формирования условий отбора. Столбцы бланка соответствуют полям приведенных выше таблиц, а строки позволяют задать условия сортировки и отбора. Обратите внимание, что в строке Условие отбора (Criteria) для поля ПоставкиПрекращены указано «<> Да«. Это означает, что нужно отобрать товары, продажа которых не прекращена.


     
  7. В порядке эксперимента в строке Условие отбора (Criteria) выделите значение «<> Да», введите = Да, а затем щелкните на кнопке Запуск (Run) на панели инструментов.

    Совет. Запрос можно также выполнить, переключившись в режим таблицы.

    Теперь запрос отберет только те товары, которые содержат значение Да в поле ПоставкиПрекращены (то есть, продажа этих товаров прекращена).

    Это те самые 2 записи из таблицы Товары, которые не вошли в результаты исходного запроса.
  8. Закройте окно запроса и щелкните на кнопке Нет (No), если будет предложено сохранить изменения.
  9. Закройте базу данных GardenCo.

Формы

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

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

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

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

GardenCo

В этом упражнении вы просмотрите несколько форм базы данных GardenCo, предназначенных для просмотра таблиц, редактирования существующих записей и ввода новой информации. В качестве рабочей будет использоваться папка Office XP SBS\Access\Chap09\Forms. Выполните следующие шаги.

  1. Откройте базу данных GardenCo, расположенную в рабочей папке.
  2. На панели объектов щелкните на пункте Формы (Forms), а затем щелкните дважды на Кнопочной форме, чтобы открыть главную кнопочную форму.

    Кнопочная форма имеет нестандартную строку заголовка, включает название базы данных и четыре кнопки. Первые две кнопки открывают другие кнопочные формы, имена которых совпадают с именами кнопок.

  3. Щелкните на кнопке Формы, чтобы отобразить кнопочную форму Формы.
  4. Щелкните на Ввод /редактирование заказов, чтобы отобразить форму, приведенную ниже.

    Эта форма состоит из главной и подчиненной форм.

  5. Щелкните на кнопке Следующая запись (Next Record) на панели перехода, чтобы отобразить содержимое следующей записи, а затем щелкните на кнопке Новая запись (New Record), чтобы отобразить пустую форму, куда можно ввести новый заказ.
  6. Закройте форму Заказы и щелкните на кнопке Возврат в кнопочной форме Формы, чтобы снова отобразить главную кнопочную форму.
  7. Щелкните на кнопке Закрыть кнопочную форму.
  8. В окне базы данных щелкните дважды на Товары, чтобы открыть форму, предназначенную для ввода и редактирования данных о товарах. Форма Товары откроется в режиме формы.
  9. На панели инструментов щелкните на стрелке кнопки Вид (View), а затем щелкните на Режим таблицы (Datasheet View). В режиме таблицы форма напоминает таблицу Товары, но без линий сетки, как показано ниже.
  10. Снова щелкните на кнопке Вид (View), чтобы перейти в режим конструктора, а затем разверните окно формы во весь экран.
  11. Если панель элементов не отображается, щелкните на кнопке Панель элементов (Toolbox) на панели инструментов. Изображение на экране должно выглядеть следующим образом.

    Совет. Если панель элементов закрывает обзор, щелкните в строке заголовка панели элементов и перетащите ее в пустую область, как показано выше.

  12. Укажите на каждую из кнопок на панели элементов, чтобы просмотреть экранные подсказки с названиями. Кнопки на панели элементов используются при построении форм.
  13. Закройте форму Товары, а затем закройте базу данных.

Отчеты

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

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

 

GardenCo

В этом упражнении вы просмотрите отчет, сохраненный в базе GardenCo, только для того, чтобы получить общее представление об отчетах. В качестве рабочей будет использоваться папка Office XP SBS\Access\Chap09\Reports. Выполните следующие шаги.

  1. Откройте базу данных GardenCo, расположенную в рабочей папке.
  2. На панели объектов щелкните на пункте Отчеты (Reports). В окне базы данных отобразится список отчетов, созданных ранее, за исключением двух первых элементов, которые представляют собой команды, предназначенные для создания отчетов.
  3. Щелкните на Адреса клиентов, а затем щелкните на кнопке Предварительный просмотр (Preview) вверху окна базы данных, чтобы отобразить отчет. Откроется окно предварительного просмотра, характерное для всех программ Microsoft Windows. Отчет содержит адресные данные заказчиков, напечатанные в формате почтовых наклеек.

    Совет. Для создания отчета, содержащего почтовые наклейки, можно воспользоваться мастером, включенным в Access. Почтовые наклейки можно также создать в Word с помощью функции слияния, воспользовавшись таблицей Клиенты из базы данных GardenCo.

  4. Щелкните в отчете, чтобы изменить масштаб отображения.

    Совет. Если отчет отображается слишком мелким шрифтом, воспользуйтесь списком поля Масштаб (Zoom) на панели инструментов, чтобы увеличить изображение.

  5. Закройте отчет Адреса клиентов.
  6. В окне базы данных щелкните на отчете Счет, а затем щелкните на кнопке Предварительный просмотр (Preview), чтобы просмотреть счет, представленный справа.
  7. Просмотрите отчет, щелкая на кнопках перехода внизу окна для перемещения по страницам.
  8. На панели инструментов щелкните на кнопке Вид (View), чтобы отобразить отчет в режиме конструктора, а затем разверните окно отчета, чтобы ваш экран выглядел так, как показано на следующем рисунке.
     

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

  9. Закройте отчет Счет, а затем закройте базу данных GardenCo.
  10. Если вы не намерены переходить к изучению следующей лекции, выйдите из программы Access.

Другие объекты Access

Таблицы, запросы, формы и отчеты представляют собой объекты, которые широко используются при разработке баз данных Access. С их помощью можно создать мощные и удобные для работы приложения. Однако можно существенно расширить возможности базы данных, если воспользоваться страницами доступа, макросами и модулями. Чтобы обзор Access был полным, ознакомьтесь с кратким описанием этих объектов, представленным в этом разделе.

Страницы

Чтобы предоставить доступ к информации, хранящейся в базе данных, пользователям Интернета или интранета, можно создать страницы, называемые страницами доступа к данным. Работа с данными на странице доступа в Web осуществляется примерно так же, как в Access — пользователи могут просматривать таблицы, выполнять запросы и заполнять поля форм.

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

Макросы

Макросы представляют собой небольшие программы, с помощью которых обеспечивается реакция Access на такие события, как открытие формы, щелчок кнопки или обновление записи. Это особенно удобно, если предполагается передать базу данных неквалифицированным пользователям. Например, можно написать макросы, содержащие последовательность команд, выполняющих рутинные задачи, или связать такие действия, как открытие формы или печать отчета, с кнопками кнопочной формы.

Модули

Модули представляют собой программы на Visual Basic for Applications (VBA), языке программирования высокого уровня, разработанного Microsoft для создания приложений Windows. Помимо стандартного набора команд VBA, каждая программа Microsoft Office имеет собственные команды. В отличие от макросов, позволяющих автоматизировать не более пяти, шести десятков операций, VBA включает сотни команд и может неограниченно расширяться за счет дополнений, вносимых другими компаниями и частными лицами. Программы VBA используются для решения задач, слишком сложных для макросов, как, например, извлечение определенной информации из рабочих листов Excel.

Совет. Установка Microsoft Office ХР с компакт-диска включает несколько примеров баз данных, которые иллюстрируют многие принципы создания и использования базы данных. Один из таких примеров, база данных Борей (Northwind Traders), упоминается во многих темах справочной системы Access и поэтому является особенно полезным. Связь с этой базой можно найти в подменю Примеры баз данных (Sample Databases) меню Справка (Help).

 

 

 
   

7.

4 Макрокоманды и объект DoCmd

Объект Access.DoCmd, методы DoCmd, запуск макрокоманд средствами VBA

Объект DoCmd — это «рабочая лошадка» программирования VBA в Access. Этот объект позволяет программным образом выполнять макрокоманды Access — те действия (actions), которые можно просмотреть (на русском языке) в окне конструктора макрокоманд. Действия — это самые распространенные операции, которые обычно приходится выполнять в Access программным способом (они перечислены ниже).

У объекта DoCmd нет свойств — только методы. Для целей унификации в последних версиях Access методы DoCmd «переезжают» в объект Application, но для целей совместимости со старыми приложениями они оставлены и в DoCmd. Microsoft рекомендует по возможности пользоваться одноименными методами объекта Application.

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

Подробно описывать макрокоманды мы не будем: для каждого из них предусмотрено описание на русском языке плюс подробная справка на английском по нажатию клавиши <F1>. Писать код вручную для них также нет никакого смысла — всегда есть возможность преобразовать созданный макрос в модуль и просмотреть полученный код. Ниже перечислены лишь основные возможности макрокоманд (объекта DoCmd):

ВывестиВФормате, ПреобразоватьТекст, ПреобразоватьБазуДанных, ПреобразоватьЭлектроннуюТаблицу — макрокоманды, которые обеспечивают экспорт и импорт данных (в формат Excel, RTF, SNP, TXT, DBF, с источниками данных ODBC и т.п.). У каждого из форматов — свои особенности и недостатки. Можно использовать и рассмотренные нами выше средства Word и Excel.

ЗапускЗапросаSQL, ЗапускМакроса, ЗапускПриложения, ЗапускПрограммы — понятно из названия. Под программой понимается процедура или функция VBA, под приложением — внешнее приложение операционной системы.

Открыть…Таблицу, Запрос, Представление, Форму и т.п. — также понятно из названия. Можно выбрать режим открытия (конструктор, просмотр и т.п. и многие другие параметры. После открытия объекта можно воспользоваться его кодом и его элементами управления.

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

Объект Access.Form, работа с формами Access средствами VBA, открытие формы Access, работа с элементами управления на форме Access

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

Формы Access используются:

Для редактирования записей в таблицах базы данных Access и внешних источников данных. Для того, чтобы создать такие формы, вообще не нужно никакого программирования — достаточно создать форму в режиме конструктора или воспользоваться мастером создания форм. Подключиться к внешнему источнику данных (например, базе данных SQL Server или Oracle) можно, воспользовавшись в Access меню Файл -> Внешние данные -> Связь с таблицами.

Как панели управления вашего приложения. Очень часто в приложении на основе Access создается начальная форма, которая открывается при запуске этого приложения. На этой формы предусмотрены кнопки и другие элементы управления для вызова других форм, отчетов, макросов, выхода из приложения и выполнения прочих операций. После закрытия других форм управления опять передается начальной форме.

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

Как работать с формами Access из VBA?

Первое, что необходимо сказать — для работы с формами во многих ситуациях нам придется использовать общий объект AccessObject, который представляет в Access не только формы, но и таблицы, макросы, модули, отчеты и множество других элементов. Поскольку этот объект — универсальный, то, конечно, большой помощи от Intellisense — подсказки в редакторе VBA у нас не будет. Обратиться к объекту формы можно через коллекцию AllForms, которая доступна через объекты CodeProject и CurrentProject. Например, получить информацию о всех формах в базе данных Access можно так:

Dim oA As AccessObject

For Each oA In CurrentProject.AllForms

Debug.Print oA.Name

Next

Если вы будете обращаться к формам в коллекции AllForms по индексу, обратите внимание, что нумерация форм в этой коллекции начинается с 0. Обращаться к элементам в этой коллекции можно и по имени:

Debug.Print CurrentProject.AllForms(«Форма1»).IsLoaded

Специальное свойство 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 спрятаны от пользователя

Окно базы данных будет скрыто от пользователя, а это значит, что пользователь не сможет получить информацию ни о таблицах нашей базы данных, ни о других формах, ни о модулях — все служебные элементы базы данных будут от него спрятаны. В принципе, пользователь может обойти такую защиту, держа нажатой при запуске Access кнопку <Shift>, но программным способом можно закрыть и такую возможность.

Если все-таки нужно открыть форму программным способом (например, из другой формы), то для этой цели можно использовать метод DoCmd.OpenForm(). В самом простом варианте этот метод просто принимает параметр с именем формы:

DoCmd.OpenForm «Форма1»

Если же форма уже открыта, то этот метод, конечно, не открывает форму заново, а просто активизирует ее. Метод DoCmd.OpenForm() принимает также несколько необязательных параметров, при помощи которых вы можете настроить фильтр на отображение записей в форме, режим открытия формы (например, модальность) и т. п. Закрытие формы производится при помощи метода DoCmd.Close(). Если же вам нужно просто спрятать форму, чтобы сохранить введенные на ней пользователем значения и отобразить их при следующем показе, можно просто сделать форму невидимой, назначив ее свойству Visible значение False.

Форма нам обычно нужна не сама по себе, а как контейнер для расположенных на ней элементов управления. Обычно элементы управления программным способом создавать не требуется — намного проще и удобнее поместить их на форму в режиме конструктора для формы. В наборе элементов управления для формы предусмотрены как знакомые нам элементы управления — текстовые поля, надписи, кнопки, флажки и переключатели, так и новые элементы — свободная и присоединенная рамки объектов, разрывы страниц, подчиненные формы/отчеты и т.п. В верхнем правом углу Toolbox в конструкторе формы Microsoft Access находится специальная кнопка Мастера. Если она нажата, то добавление на форму привычных элементов управления (например, кнопки) приведет к появлению окна мастера, который попытается помочь вам автоматически сгенерировать нужный код VBA для этого элемента управления (см. рис. 12.3)

Рис. 12.3 Мастер создания кнопок

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

Для чего используются нестандартные (по отношению к обычным формам VBA) элементы управления:

Свободная рамка объекта — возможность разместить на форме OLE-объект (например, документ Word, лист Excel, презентация PowerPoint, рисунок, звукозапись или видеоклип), который может быть встроен в базу данных Access (но не помещен в таблицу!) или находиться во внешнем по отношению к базе данных Access файлу.

Присоединенная рамка объекта — то же самое, за исключением того, что он применяется для работы с объектами OLE, которые хранятся в таблицах внутри баз данных Access или внешнего источника данных. Это — самый удобный способ генерации отчетов в Word.

Например, предположим, что в нашей базе данных 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 на основе шаблон, загруженного в рамку объекта на форме

oFrame. Verb = acOLEVerbOpen

‘Активизируем объект приложения

oFrame.Action = acOLEActivate

‘Получаем ссылку на 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, которая умеет работать с именами элементов управления:

cSumInNumber = oForm.Controls(«SumNumber»).Value

Иллюстрированный самоучитель по Microsoft Access 2002 › Программирование в Access 2002 › Последовательности событий Access [страница — 469] | Самоучители по офисным пакетам

Последовательности событий Access

Последовательность событий в формах

При открытии формы происходит следующая цепочка событий: Открытие › Загрузка › Изменение размера › Включение › Текущая запись Вход › Получение фокуса.

События Вход (Enter) и Получение фокуса (GetFocus) возникают для первого элемента в первой записи. Если форма не имеет видимых или доступных элементов управления, то последовательность событий несколько иная: Открытие › Загрузка › Изменение размера › Включение › Получение фокуса › Текущая запись.

В этом случае событие Получение фокуса (GetFocus) относится к форме. При закрытии формы последовательность событий следующая: Выход › Потеря фокуса › Выгрузка › Отключение › Закрытие.

То есть сначала теряет фокус последний элемент в форме, а затем выполняются события для формы. Если в форме не было видимых или доступных элементов, то последовательность другая: Выгрузка › Потеря фокуса (ф) › Отключение › Закрытие.

При переключении между двумя открытыми формами последовательность событий следующая: Потеря фокуса (э1) › Отключение (ф1) › Включение (ф2) › Вход (э2) › Получение фокуса (э2).

Если из открытой формы открывают другую форму, то сначала в открываемой форме происходят события Открытие (Open), Загрузка (Load) и Изменение размера (Resize), и только после этого в первой форме произойдет событие Отключение (Deactivate): Открытие (ф2) › Загрузка (ф2) › Изменение размера (ф2) › Отключение (ф1) › Включение (ф2) › Текущая запись (ф2).

Это дает возможность проконтролировать открытие второй формы. Кроме того, событие Включение (Activate) происходит каждый раз, когда форма получает фокус, а события Открытие (Open) и Загрузка (Load) не происходят, если форма уже открыта, даже если переход в эту форму выполняется с помощью макрокоманды ОткрытьФорму (OpenForm). Событие Отключение (Deactivate) для формы не происходит, если фокус переносится в диалоговое окно.

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

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

  1. События для элементов подчиненной формы, например Выход (Exit) и Потеря фокуса (LostFocus).
  2. События элементов управления в главной форме, в том числе для того элемента, который содержит подчиненную форму.
  3. События для главной формы.
  4. События для подчиненной формы.

Последовательность событий клавиатуры и мыши

При нажатии и отпускании любой клавиши на клавиатуре в том случае, если фокус находится в одном из элементов управления формы, возникает следующая цепочка событий: Клавиша вниз › Нажатие клавиши › Клавиша вверх.

При щелчке мышью на элементе управления формы, соответственно: Кнопка вниз › Кнопка вверх › Нажатие кнопки.

Об особенностях этих событий подробно говорилось выше при их описании, поэтому сейчас мы позволим себе не повторяться.

Последовательность событий в отчетах

В отчетах события возникают только для самого отчета и его разделов. Для полей отчета события отсутствуют. При выводе отчета на печать события обычно возникают в следующей последовательности: Открытие › Включение › {Формат › Печать} › Закрытие › Отключение.

События Форматирование (Format) и Печать (Print) относятся к разделам отчета и возникают при обработке каждого раздела. Дополнительными событиями могут быть события:

  1. Отсутствие данных (NoData), которое возникает перед первым событием Печать (Print), если источник записей не содержит записей.
  2. Страница (Page), которое возникает после всех событий Печать (Print) для страницы отчета.
  3. Событие Возврат (Retreat) возникает в процессе форматировании страницы отчета, когда требуется вернуться к предыдущему разделу, перед событиями Печать (Print) для страницы.

Событие Form.Open (Доступ) | Документы Майкрософт

Редактировать

Твиттер LinkedIn Фейсбук Эл. адрес

  • Статья
  • 3 минуты на чтение

Событие Open возникает при открытии формы, но до отображения первой записи.

Синтаксис

выражение . Открыть ( Отменить )

выражение Переменная, представляющая объект формы .

Параметры

Имя Требуется/дополнительно Тип данных Описание
Отмена Обязательно Целое число Параметр определяет, происходит ли открытие формы или отчета. Настройка Отменить аргумент для Истинно (1) отменяет открытие формы или отчета.

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

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

Событие Open не возникает при активации уже открытой формы; например, когда вы переключаетесь на форму из другого окна в Microsoft Access или используете действие OpenForm в макросе, чтобы вывести открытую форму наверх. Однако в этих ситуациях возникает событие Activate .

При открытии формы на основе базового запроса Microsoft Access выполняет базовый запрос для формы перед выполнением макроса Open или процедуры обработки события.

Если ваше приложение может одновременно загружать более одной формы, используйте события Activate и Deactivate вместо события Open для отображения и скрытия настраиваемых панелей инструментов, когда фокус перемещается на другую форму.

Событие Open происходит перед событием Load , которое запускается при открытии формы и отображении ее записей.

При первом открытии формы происходят следующие события в следующем порядке:

Открыть Загрузить Изменить размер Активировать Текущий

Событие Close происходит после события Unload , которое запускается после закрытия формы, но до ее удаления с экрана.

При закрытии формы происходят следующие события в следующем порядке:

Выгрузить Деактивировать Закрыть

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

Если вы пытаетесь решить, использовать ли событие Открыть или Загрузить для макроса или процедуры обработки события, одно существенное отличие заключается в том, что событие Открыть можно отменить, а событие Загрузить нельзя. . Например, если вы динамически создаете источник записей для формы в процедуре обработки событий для формы Открыть событие , вы можете отменить открытие формы, если нет записей для отображения. Точно так же событие Unload можно отменить, а событие Close нельзя.

Пример

В следующем примере показано, как можно отменить открытие формы, когда пользователь выбирает кнопку Нет . Окно сообщения предлагает пользователю ввести детали заказа. Если пользователь выбирает Нет , форма Сведения о заказе не открывается.

Чтобы попробовать пример, добавьте в форму следующую процедуру обработки события.

 Частная подпрограмма Form_Open (отменить как целое число)
 Dim intReturn As Integer
 intReturn = MsgBox("Введите детали заказа сейчас?", vbYesNo)
 Выберите Case intReturn
 Дело vbДа
 ' Открыть форму Детали заказа.
 DoCmd.OpenForm "Детали заказа"
 Случай vbНет
 MsgBox "Не забудьте ввести детали заказа до 17:00"
 Отмена = Истина ' Отменить событие открытия.
 Конец выбора
Конец сабвуфера
 

Поддержка и отзывы

У вас есть вопросы или отзывы об Office VBA или этой документации? См. раздел Поддержка и отзывы Office VBA, чтобы узнать, как вы можете получить поддержку и оставить отзыв.

Инициирование или открытие формы Windows в Microsoft Access

Содержание

  • Введение в Windows Forms
  • Открытие формы во время выполнения
    • Синтаксис
    • Объяснение Syntax Parametters
      • Имя
      • Просмотр формы
      • 8088.
      • Где условие
      • Режим данных
      • Оконный режим
      • Открытые аргументы
  • Примеры
    • Пример 1
    • Пример 2
    • Пример 3
  • Заключение

Введение в Windows содержит множество элементов управления

3 A 9 form. Эти формы помогают вставлять данные, отображать данные, а также обновлять или удалять данные в базе данных. Короче говоря, они действуют как интерфейс между пользователем и базой данных.

Microsoft Access предоставляет элементы управления формой непосредственно в главном окне, и, к счастью, они не требуют большого количества кода. Это простые в использовании формы по сравнению с другими формами с графическим интерфейсом, предлагаемыми на других языках программирования или в редакторе VBA.

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

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

Чтобы создать форму, мы можем использовать меню «Создать». Он предлагает различные формы на выбор в зависимости от ваших требований.

Открытие формы во время выполнения

Docmd.Openform — это метод, который можно использовать для загрузки/открытия формы во время выполнения.

Синтаксис

DoCmd.OpenForm (<Имя формы> , [<Вид формы>] ,[ <Имя фильтра> ], [<Где условие>] , [<Режим данных>] , [<Режим окна>], [])

Объяснение параметров синтаксиса

Имя формы

Имя формы — ох! Его можно найти в окне «Все объекты доступа» в левой части приложения Access. Некоторые имена форм примера проекта доступны на изображении ниже для справки.

Представление формы

Для этого есть несколько значений, как показано ниже. Этот параметр является необязательным.

  • acDesign имеет значение 1 и открывает форму в представлении «Дизайн» — (т.е.) позволяет пользователю редактировать открытую форму.
  • acFormDS имеет значение 3 и открывает форму в режиме таблицы.
  • acFormPivotChart имеет значение 5 и открывает форму в представлении сводной диаграммы.
  • acFormPivotTable имеет значение 4 и открывает форму в представлении сводной таблицы.
  • acLayout имеет значение 6 и открывает форму в режиме макета.
  • acNormal имеет значение 0 и открывает форму в обычном представлении.
  • acPreview имеет значение 2 и открывает форму в режиме предварительного просмотра.

Если этот аргумент не передан, то acNormal становится видом по умолчанию и форма открывается в обычном виде.

Имя фильтра

Строка запроса или «Имя запроса», уже созданное в проекте Access.

Примечание. Здесь не следует использовать какой-либо источник записи.

Ниже вы можете увидеть образец изображения запроса в проекте Access. Несколько запросов были созданы и доступны с левой стороны.

Три представления (представление таблицы, представление конструктора и представление SQL) доступны в меню «Дизайн» для открытия любого запроса. «Представление SQL» запроса открывается для справки.

Where Condition

Предложение where приведенного выше SQL-запроса, но без ключевого слова «where». Это не что иное, как условие, которое автоматически добавляется к предыдущему параметру Имя фильтра.

Режим данных

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

  • acFormAdd со значением 0: мы не можем редактировать существующие записи, но можем добавлять новые.
  • acFormEdit со значением 1: мы можем добавлять новые записи, а также редактировать существующие.
  • acFormPropertySettings со значением -1: нам разрешено изменять свойства формы.
  • AcFormReadOnly со значением 2: мы можем только просматривать записи связанной таблицы или базы данных через интерфейс открытой формы.

acFormPropertySettings — это значение по умолчанию , если режим данных не передается в качестве аргумента.

Режим окна

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

  • acDialog со значением 3. Он устанавливает для всплывающих и модальных свойств формы или отчета значение «Да»
  • acHidden со значением 1. Скрывает отчет или форму.
  • acIcon со значением 2. Это открывает форму или отчет, но оставляет их свернутыми на панели задач Windows.
  • AcWindowNormal со значением 0. Это открывает форму или отчет, используя режим, заданный с помощью его свойств. Это значение по умолчанию, если этот аргумент не передается.
Open Args

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

Примеры

Пример 1

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

 Частная подкоманда583_Click()
    'установить значение для whereclause
    searchCriteria = "[Сведения о сотруднике]. [Назначение] =" & "'Преподаватель'"
    
    'назначить значение запроса переменной для удобства использования
    strQuery = "Выберите * из [Сведения о сотруднике]"
    
    'Открыть форму с указанными режимами
    DoCmd.OpenForm "Сведения о сотруднике", acNormal, strQuery, searchCriteria, acFormEdit, acWindowNormal
    
Конец сабвуфера
 

Вот снимок экрана при нажатии соответствующей командной кнопки.

Пример 2

Этот код имеет разные режимы и другой оператор where. Режим отображения здесь представлен в виде таблицы.

 Частная подкоманда583_Click()
    'установить значение для whereclause
    searchCriteria = "[Сведения о сотруднике].[Опыт работы] =" & "'Учитель начальных классов'"
    
    'назначить значение запроса переменной для удобства использования
    strQuery = "Выберите * из [Сведения о сотруднике]"
    
    'Открыть форму с указанными режимами
    DoCmd.OpenForm «Сведения о сотруднике», acFormDS, strQuery, searchCriteria, acFormReadOnly, acDialog
    
    
Конец сабвуфера
 

Пример 3

В приведенном ниже коде показан макет.

 Частная подкоманда583_Click()
    'установить значение для whereclause
    searchCriteria = "[Сведения о сотруднике].[Опыт работы] =" & "'Учитель средней школы'"
    
    'назначить значение запроса переменной для удобства использования
    strQuery = "Выберите * из [Сведения о сотруднике]"
    
    'Открыть форму с указанными режимами
    DoCmd.OpenForm "Сведения о сотруднике", acLayout, strQuery, searchCriteria, acFormReadOnly, acWindowNormal
    
Конец сабвуфера
 

Заключение

По сути, метод Docmd.OpenForm используется для открытия формы при любом событии — например, при загрузке другой формы или нажатии кнопки. Параметры, которые предлагает метод, помогают нам изменить режим отображения, список отображаемых записей и режим редактирования формы.

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

С тегами: Доступ, Техническое описание, Дизайн, docmd. openform, Формы, SQL, VBA

Получить значение из поля открытой формы

Использование нотации Forms!FormName!Field для чтения значения формы

Q: Как запустить отчет, отображающий только заказы из конкретного клиента — предпочтительно из записи клиента, которая в настоящее время открыть на моем экране?

A: Для этого вам необходимо построить запрос, ограничивающий его результаты на основе открытого в данный момент клиент в форме клиента. Предположим, что ваша клиентская форма называется . CustomerF и идентификатор клиента CustomerID , тогда вы установите критерии запроса:

=Формы!CustomerF!CustomerID

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


кликните по изображению, чтобы увеличить

Вы можете создать запрос, который говорит: «Покажите мне только записи заказов для текущий открытый клиент», например:


кликните по изображению, чтобы увеличить

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


кликните по изображению, чтобы увеличить

Это немного сложнее, но использует тот же принцип.

Вот БЕСПЛАТНОЕ ВИДЕО-РУКОВОДСТВО который поможет вам настроить это самостоятельно, а также БЕСПЛАТНО ОБРАЗЕЦ БАЗЫ ДАННЫХ файл что вы можете посмотреть, чтобы вы начали.

 Нажмите здесь для просмотра БЕСПЛАТНОГО видео
 

 Нажмите здесь для примера файла базы данных ZIP-файл, 16k, доступ 2002, формат

Я преподаю концепции в этом бесплатном мини-уроке на своем . Доступ 201 и 202 курсов. Они полны курсы — продолжительностью более 60 минут каждый. Я трачу гораздо больше времени на то, чтобы понять, как для этого, в дополнение к большому количеству советов и приемов. Для получения дополнительной информации о эти курсы, нажмите на ссылки на каждый класс.

Обновление: Если вы имеете в виду значение в подчиненной форме внутри другой формы, это становится еще более сложным. Давайте скажем, у вас есть OrderSubform внутри вашего CustomerF (чтобы показать его историю заказов). Если вам нужно значение этой подформы, оно становится:

=Forms!CustomerF!OrderSubForm.Form!OrderTotal

Итак, в двух словах, вы либо ищете:

=Формы!ИмяФормы!ИмяПоля

Или…

=Формы!РодительскаяФорма!ПодФорма.Форма!ИмяПоля

 


Ричард Рост
Нажмите здесь , чтобы подписаться на дополнительные БЕСПЛАТНЫХ советов

 

Вы можете прочитать эти статьи из 599CD Новости :

92./13/20229292/2022/2022/202.202/2042.202/202.202.202/202/2022./202.202.202/202/2022. недели
20. 09.2022 Формы изменения размера
19.09.2022 Access Developer 42
9/16/2022 Access Developer 42 Lessons
9/15/2022 Access Developer 42
9/14/2022 Control Copy
13.09.2022 Шаблон профиля доступа
13.09.2022 Инструкции по профилю формы
9/13/2022 DSUM
DSUM
08.09.2022 Цвет флажка

 

Управление несколькими экземплярами формы

Советы Microsoft Access: управление несколькими экземплярами формы

Советы Microsoft Access для серьезных пользователей

Предоставлено Алленом Брауном.


Хотите сравнить двух или более клиентов на экране одновременно? Хотя эта функция используется редко, она была представлена ​​в Access 97. Новый Ключевое слово создает экземпляр формы с помощью пары строк кода, но управление различными экземплярами требует немного больше усилий. Образец базы данных демонстрирует код в этой статье.

Создание экземпляров

Простой , но неадекватный подход заключается в размещении 9Кнопка команды 0417 на самой форме . Для формы с именем frmClient с командной кнопкой с именем cmdNewInstance вам нужно всего 5 строк кода в модуле форм:

 Dim frmMulti As Form
Частная подпрограмма cmdNewInstance_Click()
    Установить frmMulti = Новый Form_frmClient
    frmMulti.SetFocus
Конечный переходник 

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

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

У вас также есть трудности с отслеживанием экземпляра . В коллекции Forms будет несколько записей с одинаковым именем, поэтому Forms.frmClient не подходит. Номер индекса коллекции Forms , такой как Forms(3) , также не будет работать: эти номера меняются при открытии и закрытии форм.

Управление экземплярами

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

Чтобы решить проблему идентификации экземпляров, использует свой hWnd уникальный дескриптор, назначаемый операционной системой каждому окну. Это значение должно быть постоянным в течение жизни окна, хотя в файле справки Access 97 содержится предупреждение: Внимание! Поскольку значение этого свойства может меняться во время работы программы, не сохраняйте значение свойства hWnd в общедоступной переменной. Предположительно, этот комментарий относится к повторному использованию этого значения, когда форму можно закрыть и снова открыть. В следующем примере в качестве значения ключа в коллекции используется hWnd экземпляра.

Первая строка ниже создает коллекцию, в которой мы можем хранить независимые экземпляры нашей формы. Функция OpenAClient() открывает экземпляр и добавляет его в нашу коллекцию. Этот код находится в модуле basPublic образца базы данных:

 Public clnClient As New Collection «Экземпляры frmClient.
Функция OpenAClient()
    'Цель: открыть независимый экземпляр формы frmClient.
    Dim frm As Form

    'Откройте новый экземпляр, покажите его и установите заголовок.
    Установить frm = новый Form_frmClient
    frm.Visible = Истина
    frm.Caption = frm.Hwnd & ", открыт " & Now()

    «Добавь его в нашу коллекцию.
    clnClient.Добавить элемент:=frm, ключ:=CStr(frm.Hwnd)

    Установить frm = Ничего
Конечная функция

Функция ЗакрытьВсеКлиенты()
    'Цель: закрыть все экземпляры в коллекции clnClient.
    'Примечание: оставляет копию открытой непосредственно из окна/панели навигации базы данных.
    Dim lngKt As Long
    Dim lngI до тех пор, пока

    lngKt = clnClient.Count
    Для lngI = 1 To lngKt
        clnClient.Удалить 1
    Следующий
Завершить функцию 

Вторая функция CloseAllClients() демонстрирует, как закрыть эти экземпляры, удалив их из нашей коллекции. Но если пользователь закрывает экземпляр с обычным интерфейсом, нам нужно удалить этот экземпляр из нашей коллекции. Это делается в событии Close формы frmClient следующим образом:

 Частная подпрограмма Form_Close()
    'Цель: удалить этот экземпляр из коллекции clnClient.
    Dim obj As Object 'Объект в clnClient

    Dim blnRemove As Boolean 'Отметьте, чтобы удалить его.

    'Проверить, есть ли этот экземпляр в коллекции.
    Для каждого объекта в clnClient
        Если obj.Hwnd = Me.Hwnd Тогда
            blnRemove = Истина
            Выход для
        Конец, если
    Следующий

    'Отменить назначение объекта и удалить из коллекции.
    Установить объект = Ничего
    Если млрдУдалить Тогда
        clnClient.Удалить CStr(Me.Hwnd)
    Конец, если
Конец суб 

Обратите внимание, что CloseAllClients() демонстрирует, как удаление объекта из коллекции закрывает экземпляр. Если форма открывается непосредственно из окна/панели навигации базы данных, эта копия не закрывается. В производственной среде вы, вероятно, не разрешаете пользователям приближаться к окну базы данных/панели навигации. Чтобы справиться и с этим случаем, замените код циклом на DoCmd. Закрывайте acForm frmClient до тех пор, пока не останется копий. (Не забудьте принудительно сохранить перед закрытием, если оно «грязное»: ошибка в «Закрыть» автоматически отменяет ваши изменения, если есть какая-либо причина, по которой запись не может быть сохранена, например, отсутствие обязательного поля.)

Чтобы увидеть код в действии, загрузите образец базы данных в формате Access 97 (24 КБ, заархивированный) или в формате Access 2000 (19 КБ, заархивированный) в модуле с именем basPublic . Он также содержит форму frmClient с ее процедурой Close, командные кнопки для вызова OpenAClient() и CloseAllClients() , а также форму поиска, которая использует hWnd формы для возврата к вызвавшему ее экземпляру.


Дом Указатель наконечников Топ

MS Access VBA — Открыть другую базу данных

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

  • Метод FollowHyperlink
  • Shell
  • Автоматизация доступа

Метод FollowHyperlink

FollowHyperlink является родным для Access и может использоваться для открытия любого типа файла в связанной с ним программе по умолчанию. Обратите внимание, что, поскольку это собственная команда, вы не можете использовать ее в другой программе (Word, Excel, …).

 '----------------------------------------------------------- -------------------------------------------
' Процедура: OpenDb3
Автор: Даниэль Пино, CARDA Consultants Inc.
Веб-сайт: http://www.cardaconsultants.com
' Цель: открыть другую базу данных
' Авторские права: Нижеследующее является выпуском как Attribution-ShareAlike 4.0 International.
' (CC BY-SA 4.0) - https://creativecommons.org/licenses/by-sa/4.0/
' Требуемые ссылки: не требуется
'
' Входные переменные:
' ~~~~~~~~~~~~~~~~~
' sDb : Полный путь и имя файла с расширением базы данных до
'             открытым
'
' Применение:
' ~~~~~~
'Вызов OpenDb3("C:\Users\Daniel\Documents\Database25. accdb")
'
' Лист регистраций изменений:
' Дата выпуска (гггг/мм/дд) Описание
'*************************************************** ****************************************
' 1 21 января 2018 г. Первоначальный выпуск — демонстрация веб-сайта
' 2 21 августа 2022 г. Добавлен файловый протокол
-------------------------------------------------- --------------------------------------
Открытая функция OpenDb3 (sDb как строка)
    При ошибке Перейти к Error_Handler

    'Application.FollowHyperlink sDb
    Application.FollowHyperlink "file://" & sDb 'Более безопасная версия

Ошибка_Handler_Exit:
    При ошибке Возобновить Далее
    Выход из функции

Error_Handler:
    MsgBox "Произошла следующая ошибка" & vbCrLf & vbCrLf & _
           "Номер ошибки: " & Err.Number & vbCrLf & _
           "Источник ошибки: OpenDb3" & vbCrLf & _
           "Описание ошибки: " & Err.Description & _
           Switch(Erl = 0, "", Erl <> 0, vbCrLf & "Номер строки: " & Erl) _
           , vbOKOnly + vbCritical, "Произошла ошибка!"
    Возобновить Error_Handler_Exit
Завершить функцию 

 

Shell

Shell — одна из тех универсальных команд, которые позволяют делать так много. Опять же, его можно использовать для запуска программ и открытия файлов. Как правило, вам нужно предоставить исполняемый файл, а затем любые переключатели командной строки, которые распознает каждый отдельный исполняемый файл. Однако, поскольку офис зарегистрирован и является частью переменной пути, нам даже не нужно указывать путь к файлу msaccess.exe, а нужно только указать путь/файл базы данных для открытия.

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

 -------------------------------------------
' Процедура: OpenDb2
Автор: Даниэль Пино, CARDA Consultants Inc.
Веб-сайт: http://www.cardaconsultants.com
' Цель: открыть другую базу данных
' Авторские права: Нижеследующее является выпуском как Attribution-ShareAlike 4.0 International.
' (CC BY-SA 4.0) - https://creativecommons.org/licenses/by-sa/4.0/
' Требуемые ссылки: не требуется
'
' Входные переменные:
' ~~~~~~~~~~~~~~~~~
' sDb : Полный путь и имя файла с расширением базы данных до
'             открытым
'
' Применение:
' ~~~~~~
'Вызов OpenDb2("C:\Users\Daniel\Documents\Database25. accdb")
'
' Лист регистраций изменений:
' Дата выпуска (гггг/мм/дд) Описание
'*************************************************** ****************************************
' 1 21 января 2018 г. Первоначальный выпуск — демонстрация веб-сайта
-------------------------------------------------- --------------------------------------
Открытая функция OpenDb2 (sDb как строка)
    При ошибке Перейти к Error_Handler

    Оболочка "cmd/c" и Chr(34) и sDb и Chr(34), vbHide

Ошибка_Handler_Exit:
    При ошибке Возобновить Далее
    Выход из функции

Error_Handler:
    MsgBox "Произошла следующая ошибка" & vbCrLf & vbCrLf & _
           "Номер ошибки: " & Err.Number & vbCrLf & _
           "Источник ошибки: OpenDb2" & vbCrLf & _
           "Описание ошибки: " & Err.Description & _
           Switch(Erl = 0, "", Erl <> 0, vbCrLf & "Номер строки: " & Erl) _
           , vbOKOnly + vbCritical, "Произошла ошибка!"
    Возобновить Error_Handler_Exit
Завершить функцию 

 

Автоматизация доступа

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

 -------------------------------------------
' Процедура: OpenDb
Автор: Даниэль Пино, CARDA Consultants Inc.
Веб-сайт: http://www.cardaconsultants.com
' Цель: открыть другую базу данных
' Авторские права: Нижеследующее является выпуском как Attribution-ShareAlike 4.0 International.
' (CC BY-SA 4.0) - https://creativecommons.org/licenses/by-sa/4.0/
' Req'd Refs: используется поздняя привязка, поэтому ничего не требуется.
'
' Входные переменные:
' ~~~~~~~~~~~~~~~~~
' sDb : Полный путь и имя файла с расширением базы данных до
'             открытым
'
' Применение:
' ~~~~~~
'Вызов OpenDb("C:\Users\Daniel\Documents\Database25.accdb")
'
' Лист регистраций изменений:
' Дата выпуска (гггг/мм/дд) Описание
'*************************************************** ****************************************
' 1 07.11.2014 Первоначальный выпуск
' 2 21 января 2018 г. Обновлена ​​обработка ошибок для размещения на веб-сайте
-------------------------------------------------- --------------------------------------
Открытая функция OpenDb (sDb как строка)
    При ошибке Перейти к Error_Handler
    'Раннее связывание
    'Используйте следующую строку, если она используется в Access или при использовании справочника Access
    ' обеспечивает intellisense!
    Dim oAccess как Access. Application
    'Поздняя привязка
    'Используйте следующую строку, если используется вне Access без ссылки Access
' Dim oAccess как объект

    Set oAccess = CreateObject("Access.Application") 'Создать новый экземпляр Access
    С оаксесс
        .OpenCurrentDatabase sDb 'Открыть указанную базу данных
        .Visible = True 'Убедитесь, что он виден конечному пользователю
        .UserControl = Истина
' .DoCmd.OpenForm "YourFormName" 'Открыть форму?
' .DoCmd.RunMacro "YourMacroName" 'Запустить макрос?
    Конец с

Ошибка_Handler_Exit:
    При ошибке Возобновить Далее
    Если не oAccess равно ничего, тогда установите oAccess = ничего
    Выход из функции

Error_Handler:
    MsgBox "Произошла следующая ошибка" & vbCrLf & vbCrLf & _
           "Номер ошибки: " & Err.Number & vbCrLf & _
           "Источник ошибки: OpenDb" & vbCrLf & _
           "Описание ошибки: " & Err.Description & _
           Switch(Erl = 0, "", Erl <> 0, vbCrLf & "Номер строки: " & Erl) _
           , vbOKOnly + vbCritical, "Произошла ошибка!"
    Возобновить Error_Handler_Exit
Завершить функцию 

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

Среда выполнения

Этот подход не работает со средой выполнения, поскольку среда выполнения не может выполнить CreateObject для создания нового экземпляра Access.

Какой использовать?

Простой обычно лучше, поэтому Shell и FollowHyperlink настолько просты, насколько это возможно НО подход к автоматизации предлагает вам возможность взаимодействовать с базой данных после ее запуска. Таким образом, он позволяет вам с легкостью открывать формы, отчеты, запускать макросы, код VBA и тому подобное. Итак, какой из них следует использовать, зависит от того, что вам нужно выполнить (как всегда)!

VBA, чтобы узнать, открыта ли форма, и закрыть ее

JavaScript отключен. Для лучшего опыта, пожалуйста, включите JavaScript в вашем браузере, прежде чем продолжить.

Закрыть всплывающую форму из непрерывной подчиненной формы 3
Isloaded для всех открытых форм? 7
Если IsLoaded для обнаружения из нескольких форм 4
Необходимо обновить поле со списком при переходе к новой записи 2017 1
попытка закрыть форму 1
Передача данных из одной формы в другую 1