access vba открыть форму для просмотра

Метод DoCmd.OpenForm (Access)

Метод OpenForm выполняет действие OpenForm в Visual Basic.

Синтаксис

выражение.OpenForm (FormName, View, FilterName, WhereCondition, DataMode, WindowMode, OpenArgs)

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

Параметры

Имя Обязательный или необязательный Тип данных Описание
FormName Обязательный Variant Строковое выражение, являющееся допустимым именем формы в текущей базе данных. При выполнении кода Visual Basic, содержащего метод OpenForm в базе данных библиотеки, Access ищет форму с этим именем сначала в базе данных библиотеки, а затем в текущей базе данных.
View Необязательный AcFormView Константа AcFormView, указывающая представление, в котором открывается форма. Значение по умолчанию — acNormal.
FilterName Необязательный Variant Строковое выражение, являющееся допустимым именем запроса в текущей базе данных.
WhereCondition Необязательный Variant Строковое выражение, являющееся допустимым предложением WHERE в SQL без слова WHERE.
DataMode Необязательный AcFormOpenDataMode Константа AcFormOpenDataMode, указывающая режим ввода данных для формы. Это относится только к формам, открываемым в режиме формы или режиме таблицы. Значение по умолчанию — acFormPropertySettings.
WindowMode Необязательный AcWindowMode Константа AcWindowMode, указывающая режим окна, в котором открывается форма. Значение по умолчанию — acWindowNormal.
OpenArgs Необязательный Variant Строковое выражение. Это выражение используется для установки свойства OpenArgs формы. Этот параметр можно затем использовать в коде в модуле формы, например в процедуре обработки события Open. Свойство OpenArgs также можно указывать в макросах и выражениях.

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

Примечания

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

Максимальная длина аргумента WhereCondition — 32 768 символов (в отличие от аргумента действия WhereCondition в окне макроса, максимальная длина которого составляет 256 символов).

Пример

В следующем примере открывается форма Employees (Сотрудники) в режиме формы и отображаются только записи со значением King в поле LastName (Фамилия). Можно изменять отображаемые записи, а также добавлять новые записи.

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

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

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

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

Источник

12.5 Работа с формами Access из VBA (объект Form )

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

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

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

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

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

Dim oA As AccessObject

For Each oA In CurrentProject.AllForms

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

Специальное свойство IsLoaded определяет, открыта ли эта форма (то есть загружена ли она в оперативную память).

Программным образом формы можно найти и другим способом. Все открытые формы Access автоматически помещаются в коллекцию Application.Forms и представляются в виде объекта Form. Это — уже нормальный объект, свойства которого соответствуют свойствам формы, доступным через графический интерфейс. Например, если форма Форма1 открыта, получить информацию о ее ширине можно так:

Debug.Print Application.Forms(«Форма 1»).Width

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

DoCmd.MoveSize Width :=10000

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

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

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

12 05 access form object clip image002

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

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

12 05 access form object clip image004

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

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

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

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

12 05 access form object clip image006

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

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

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

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

12 05 access form object clip image008

Рис. 12.4 Таблица для хранения шаблонов Word

В столбце File у нас хранятся шаблоны Word, которые используются для генерации отчетов. Мы помещаем на форму элемент управления Присоединенная рамка объекта с именем WordTemplate. После этого все, что нужно для создания файла Word на основе шаблона из базы данных, у нас уже есть. Для кнопки, по нажатию на которой будет формироваться отчет, можно использовать следующий код:

‘Получаем ссылку oFrame на объект присоединенной рамки на форме

Dim oFrame As BoundObjectFrame

Set oFrame = oForm.Controls(«WordTemplate»)

‘При помощи метода DLookup () скачиваем в него значение столбца File из таблицы

‘Templates, где номер строки (значение столбца Num ) равно 1

oFrame = Application.DLookup(«[File]», «Templates», «[Num] = 1»)

‘Открываем объект в отдельном окне приложения — то есть создаем

‘документ Word на основе шаблон, загруженного в рамку объекта на форме

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

‘Получаем ссылку на Word в переменную oWord

Dim oWord As Word.Application

Set oWord = GetObject(, «Word.Application»)

‘Получаем ссылку на созданный нами документ

Dim oDoc As Word.Document

Set oDoc = oWord.ActiveDocument

‘Дальше работаем средствами Word, например, вставляем нужный текст

‘в места, отмеченные закладками

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

Как уже говорилось, программным способом элементы управления в форме Access приходится создавать редко. Если на форме вам нужен переменный набор элементов управления, то правильнее будет с самого начала создать все нужные элементы управления и по необходимости делать их то видимыми, то невидимыми. Тем не менее создать программным способом элементы управления на форме тоже можно. Эта операция выполняется при помощи метода Application.CreateControl(), который принимает множество параметров — имя формы, на которой создается элемент управления, тип элемента управления, его месторасположение на форме и т.п.

Обращение к значениям элементов управления на форме производится через коллекцию Controls, которая умеет работать с именами элементов управления:

Источник

Макрокоманда «ОткрытьФорму»

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

Примечание: Макрокоманда «ОткрытьФорму» недоступна в веб-приложениях Access.

Настройка

Аргументы макрокоманды ОткрытьФорму описаны ниже.

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

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

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

Примечание: Представления сводной таблицы и сводной диаграммы были удалены из Access, начиная с Access 2013.

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

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

Допустимое предложение WHERE SQL (без слова WHERE) или выражение, которое Access использует для выбора записей из базовой таблицы или запроса формы. Если выбрать фильтр с аргументом Имя фильтра, Access применит это предложение WHERE к результатам фильтрации.

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

[ имя_поля ] = Forms![ имя_формы ]![ имя_элемента_управления _в_другой_форме ]

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

Примечание: Максимальная длина аргумента Условие отбора равна 255 символам. Если необходимо ввести более сложное и длинное предложение WHERE, вместо этого используйте метод ОткрытьФорму объекта DoCmd в модуле Visual Basic для приложений (VBA). VBA позволяет вводить предложения WHERE SQL длиной до 32 768 символов.

Режим ввода данных для формы. Применим только для форм, открытых в режиме формы или таблицы. Возможные варианты значений: Добавление (пользователь может добавлять новые записи, но не может редактировать существующие), Изменение (пользователь может редактировать существующие записи и добавлять новые) или Только чтение (пользователь может только просматривать записи).

Значение аргумента Режим данных переопределяет значение свойств формы AllowEdits, AllowDeletions, AllowAdditions и DataEntry. Например, даже если свойство формы AllowEdits имеет значение Нет, можно открыть форму в режиме редактирования с помощью макрокоманды ОткрытьФорму.

Если этот аргумент оставить пустым, то Access откроет форму в режиме ввода данных, определяемом свойствами AllowEdits, AllowDeletions, AllowAdditions и DataEntry.

Режим окна, в котором открывается форма. Возможные значения: Обычное (форма открывается в режиме, определяемом ее свойствами), Скрытое (форма скрыта), Значок (форма свертывается и отображается в виде небольшого заголовка окна в нижней части экрана) или Диалоговое окно (для свойств Modal и PopUp формы задается значение Да). По умолчанию используется значение Обычное.

Примечание: Некоторые значения аргумента Режим окна неприменимы, если используются документы со вкладками. Чтобы переключиться в режим перекрывания окон:

Откройте вкладку Файл и выберите пункт Параметры.

В диалоговом окне Параметры Access щелкните элемент Текущая база данных.

В разделе Параметры приложений в группе Параметры окна документа выберите параметр Перекрывание окон.

Нажмите кнопку ОК, а затем закройте и снова откройте базу данных.

Замечания

Эта макрокоманда аналогична двойному щелчку формы в области навигации или ее щелчку правой кнопкой мыши в области навигации и выбору представления.

Форму можно модальный (для выполнения каких-либо других действий она должна быть закрыта или скрыта) или неавной (пользователь может перемещаться в другие окна, пока форма открыта). Это также может быть форма всплывающая форма (форма для сбора и отображения информации, которая остается на верхней части всех других окон Access). Свойства Modal (Модальная форма) и PopUp (Всплывающее всплыв Если для аргумента «Режим окна» используется «Обычный», форма открывается в режиме, заданном этими свойствами. Если для аргумента «Режим окна» используется диалоговое окно, для этих свойств будет установлено «Да». Форма, открываемая как скрытая или в виде значка, возвращается в режим, заданный ее свойствами при ее от показе или восстановлении.

При открытии формы с аргументом Режим окна, имеющим значение Диалоговое окно, Access приостанавливает работу макроса, пока форма не будет закрыта или скрыта. Форму можно скрыть, установив с помощью макрокоманды ЗадатьЗначение значение Нет для ее свойства Visible.

Применяемые фильтр и условие WHERE становятся значением свойства Filter формы.

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

Пример

Задание значения элемента управления в форме с помощью макроса

Следующий макрос открывает форму «Товары» с помощью кнопки в форме «Поставщики». Он демонстрирует применение макрокоманд ВыводНаЭкран, ОткрытьФорму, ЗадатьЗначение и КЭлементуУправления. Макрокоманда ЗадатьЗначение задает в качестве значения элемента управления «Код поставщика» в форме «Товары» текущего поставщика в форме «Поставщики». После этого макрокоманда КЭлементуУправления перемещает фокус на поле «Код категории», с которого начинается ввод данных для нового товара. Этот макрос должен быть привязан к кнопке «Добавить товары» в форме «Поставщики».

Включить вывод: Нет

Приостанавливает обновление экрана, пока выполняется макрос.

Режим данных: Добавление

Режим окна: Обычное

Открывает форму «Товары».

Задает в качестве значения элемента управления «КодПоставщика» текущего поставщика в форме «Поставщики».

Имя элемента управления: КодКатегории

Выполняет переход к элементу управления «КодКатегории».

Источник

12.5 Работа с формами Access из VBA (объект Form )

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

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

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

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

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

Dim oA As AccessObject

For Each oA In CurrentProject.AllForms

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

Специальное свойство IsLoaded определяет, открыта ли эта форма (то есть загружена ли она в оперативную память).

Программным образом формы можно найти и другим способом. Все открытые формы Access автоматически помещаются в коллекцию Application.Forms и представляются в виде объекта Form. Это — уже нормальный объект, свойства которого соответствуют свойствам формы, доступным через графический интерфейс. Например, если форма Форма1 открыта, получить информацию о ее ширине можно так:

Debug.Print Application.Forms(«Форма 1»).Width

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

DoCmd.MoveSize Width :=10000

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

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

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

12 05 access form object clip image002

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

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

12 05 access form object clip image004

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

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

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

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

12 05 access form object clip image006

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

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

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

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

12 05 access form object clip image008

Рис. 12.4 Таблица для хранения шаблонов Word

В столбце File у нас хранятся шаблоны Word, которые используются для генерации отчетов. Мы помещаем на форму элемент управления Присоединенная рамка объекта с именем WordTemplate. После этого все, что нужно для создания файла Word на основе шаблона из базы данных, у нас уже есть. Для кнопки, по нажатию на которой будет формироваться отчет, можно использовать следующий код:

‘Получаем ссылку oFrame на объект присоединенной рамки на форме

Dim oFrame As BoundObjectFrame

Set oFrame = oForm.Controls(«WordTemplate»)

‘При помощи метода DLookup () скачиваем в него значение столбца File из таблицы

‘Templates, где номер строки (значение столбца Num ) равно 1

oFrame = Application.DLookup(«[File]», «Templates», «[Num] = 1»)

‘Открываем объект в отдельном окне приложения — то есть создаем

‘документ Word на основе шаблон, загруженного в рамку объекта на форме

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

‘Получаем ссылку на Word в переменную oWord

Dim oWord As Word.Application

Set oWord = GetObject(, «Word.Application»)

‘Получаем ссылку на созданный нами документ

Dim oDoc As Word.Document

Set oDoc = oWord.ActiveDocument

‘Дальше работаем средствами Word, например, вставляем нужный текст

‘в места, отмеченные закладками

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

Как уже говорилось, программным способом элементы управления в форме Access приходится создавать редко. Если на форме вам нужен переменный набор элементов управления, то правильнее будет с самого начала создать все нужные элементы управления и по необходимости делать их то видимыми, то невидимыми. Тем не менее создать программным способом элементы управления на форме тоже можно. Эта операция выполняется при помощи метода Application.CreateControl(), который принимает множество параметров — имя формы, на которой создается элемент управления, тип элемента управления, его месторасположение на форме и т.п.

Обращение к значениям элементов управления на форме производится через коллекцию Controls, которая умеет работать с именами элементов управления:

Источник

Понравилась статья? Поделить с друзьями:
Добавить комментарий
  • Как сделать успешный бизнес на ритуальных услугах
  • Выездной кейтеринг в России
  • Риски бизнеса: без чего не обойтись на пути к успеху
  • access vba обращение к подчиненной форме
  • access vba как проверить открыта ли форма